F5应用服务自动化实用指南

简介

应用交付和安全设备的部署与配置管理自动化已成为几乎必不可少的实践。在2017年IDG FutureScape报告中,自动化和多云管理被列为到2021年将影响企业的部分关键举措。自动化可让应用所需的基本安全、优化和可用性服务实现规模化、可靠且集成的部署,并将这些服务的交付纳入编排式构建、测试和部署工作流。这类工作流正逐渐成为应用部署的主流模式。

即使只是对添加新虚拟服务器或池成员等基本任务进行简单自动化,也能让运维团队为应用所有者或其他自动化系统提供自助服务功能,并腾出时间开展更具成效的工作,例如构建下一代自动化工具。

当组织开始采用多个云平台来交付IT服务时,自动化的必要性就更加凸显。在尝试将服务部署到平台特性各异的多个位置时,自动化有助于降低随之增加的运维开销,并减少因不熟悉新平台而导致的错误。

但应该自动化哪些内容,又该如何实现?由于运维模式、接口和语言各不相同,自动化软件既可以在单一设备层面运行,也可以作为更复杂的多系统工具使用。基础设施即服务(IaaS)云平台均提供各自的原生工具,用于部署虚拟基础设施和服务。此外,F5还提供多种接口和编排选项。丰富的工具和选项让您能够以最适合组织的方式实现自动化,但选择合适的工具可能并不容易,而且确实存在复杂性增加和工具泛滥的风险。

本文将概述如何自动执行F5 BIG-IP设备(包括物理设备和虚拟设备)的部署、管理和配置,并提供一些建议,帮助企业选择适合自身业务的实施路径。

自动化:几个关键考虑因素

自动化程度范围

自动化涵盖一系列活动。自动化程度较低的一端,是使用Bash、TMSH、Python或其他语言开发简单脚本。这些脚本可在本地运行,以加快手动配置。另一端则是完整的“基础设施即代码”系统,它将源代码管理、工作流编排器以及(可能的)多种自动化工具结合起来,使基础设施配置可通过存储库中的文本文件进行定义和更改。在这两个极端之间,还有多种不同的方案,可帮助管理BIG-IP平台的部署和配置。

可变与不可变

目前,大多数BIG-IP部署都可视为可变部署,这意味着其配置可能会随时间推移而变化。这是因为BIG-IP平台大多作为多租户设备部署,为多个应用提供服务。随着新应用的部署,或现有应用扩展或需要更多服务,BIG-IP的配置也会相应更新。通过这种部署方式,基础设施团队可以管理一套集中式基础设施,并通过通用平台为应用提供服务。

不过,有时BIG-IP平台会作为独立应用堆栈的一部分进行部署,其中,特定BIG-IP提供的服务与特定应用或服务绑定。在这种情况下,可以将BIG-IP配置视为不可变配置;也就是说,配置在启动时安装或作为软件映像的一部分安装,并且在BIG-IP实例的生命周期内不会更改。如需更改配置,则修改软件映像或启动代理脚本的内容,然后重新部署。这种模式通常称为“推倒重建”。尽管总体而言并不常见,但随着支持单应用实例的新BIG-IP许可模式、增强型许可工具以及F5 cloud libs等工具(这是一组Node.js脚本和库,旨在帮助在云中载入BIG-IP)的推出,对于需要将应用与由代码和基础设施组成的隔离堆栈紧密绑定的组织而言,这种部署模式正成为一种可行选择。

声明式与命令式

向使用者提供自动化接口有两种概念模型。最常见的“第一波”自动化模式往往采用命令式模型。在命令式自动化模型中,自动化使用者通常不仅需要知道要实现什么目标,还需要了解实现目标的具体步骤(通常通过API调用)。这往往意味着,使用者既要了解高级服务的配置细节,还要承担将这些服务与自动化工具集成所带来的额外复杂性和工作量。这就像点三明治时,不是直接说要一份三明治,并让制作者自行确定制作步骤及其顺序,而是要逐一说明制作三明治所需的每项操作。

相比之下,声明式接口允许使用者(人或机器)只需提出所需结果即可创建服务。由于自动化目标已预先配置工作流或服务模板,可根据所需结果生成配置,因此使用者无需详细了解所有必要步骤。虽然声明式接口的初始设置略为复杂,但构建合适的服务模板后,操作会更加简单,足以抵消这部分复杂性。因此,声明式接口通常是构建自动化系统的首选机制。

直接操作或通过管理工具操作

还需要考虑另一个决策:自动化API调用应由第三方工具直接发送到需要更改的设备,还是通过额外的管理工具发送。与直接连接到受管实体相比,管理工具可以对操作进行抽象和简化,并可能提供额外的控制和日志记录层。不过,您需要为该工具提供支持,以确保在必须快速进行更改的关键情况下,管理层能够保持高可用性。

API、启动代理还是CLI?

BIG-IP设备最常通过REST API实现自动化。该API通过已记录的架构公开BIG-IP的大部分功能。F5为Ansible等自动化工具提供的模块广泛使用REST API。REST API不仅提供针对各项设置的命令式接口,还可用于启动F5 iApp模板。用于配置iApp服务的值会在API调用中以JSON有效负载的形式传递。新增的iControl LX功能还支持创建用户定义的API端点,通过一次API调用即可执行多步骤操作。

另一种常见的BIG-IP配置自动化方式是使用启动代理。启动代理会在系统启动时运行,并可获取外部信息来配置BIG-IP平台。启动代理通常用于执行初始配置,以便设备“上线”,还可从GitHub等第三方站点或您自己的存储库中获取其他脚本和配置文件。启动代理也可用于完整配置BIG-IP平台,尤其是在选择了固定的按应用配置时。

最常见的启动配置是cloud-init。除Microsoft Azure外,所有BIG-IP VE映像均已启用该配置,但它更适合用于AWS和OpenStack部署。除cloud-init外,F5还提供了一系列云启动库,帮助在启动时配置BIG-IP。

如果选择使用启动代理在平台启动后进行配置,则在使用外部源时应特别注意故障管理,尤其是可能在扩缩容事件中启动实例的情况。如果外部资源不可用,系统将如何运行?是否会创建更多“僵尸”设备来尝试满足需求?

在某些情况下,自动化系统可以模拟用户执行CLI命令。虽然这种方法有时可以解决API调用可能无法完整实现的部分问题,但由于通常难以获得支持且解决方案较为脆弱,因此只能作为最后的手段。

模板和操作手册

模板和操作手册可用于实现自动化部署,并构建具备一定标准化程度的基础设施。适当的标准化可提高基础设施的稳健性和可支持性。设计良好的模板可提供声明式接口,使请求实体(用户或机器)只需了解所需属性,无需了解实现细节。严格通过模板进行部署,并仅通过修正模板来解决问题,有助于提高服务质量,因为问题通常只需修复一次,之后即可使用新模板重新部署服务。

平台集成

平台集成工具将BIG-IP服务的配置与私有云或容器管理系统等计算平台相集成。具体机制因平台和实施方式而异,但通常分为三种模式:

将F5服务集成到现有平台构造中
在此模型中,F5服务通过现有平台构造集成,例如将F5用作OpenShift Container Platform Router,或将F5与OpenStack Load Balancing as a Service (LBaaS)系统配合使用。由于服务通过平台原生接口进行配置,并由随附的驱动程序及其他软件将平台配置指令无缝转换为F5配置,因此使用这些机制几乎不需要更改运维流程。但请注意,只有平台原生接口支持的功能才能轻松部署。

订阅平台事件

另一种常见的集成方法是,由软件模块(例如适用于Kubernetes和Mesos的Container Connector)订阅平台内的事件,然后根据这些事件修改配置。可以为需要提供服务的应用添加标记或标签,并将连接器软件配置为监控带有所需标记的事件,从而选择要部署的事件和服务。

与平台管理工具集成

许多私有云平台都配有专为自动化而设计的管理系统。例如,VMware提供多种管理和集成工具,其中包括vRealize Orchestrator (vRO),该工具有一个用于配置BIG-IP的第三方插件。其他示例包括用于OpenStack HEAT模板系统的插件。

服务发现

虽然服务发现并非完整的自动化解决方案,但它能以简单而有效的方式,使BIG-IP配置适应环境变化。服务发现通过API定期轮询云系统以获取资源列表,并相应修改BIG-IP配置。这对于将资源配置到自动扩缩容组的环境尤其有用,因为扩缩后端计算资源时,负载均衡器需要感知新增资源。F5面向以下平台的云自动扩缩容解决方案提供服务发现组件:AWS和Azure。

常用自动化工具:资源指南

虽然无法涵盖所有可能的自动化或编排工具,但下面列出了F5客户最常用的工具、用例和功能。

-------------------------

语言集成

语言

状态

示例和来源

Python

F5 贡献

https://github.com/F5Networks/f5-common-python

Go

用户贡献

https://github.com/f5devcentral/go-bigip

PowerShell

F5 支持

https://devcentral.f5.com/wiki/icontrol.powershell.ashx

配置管理和基础设施自动化工具

工具

状态

示例和来源

Ansible

F5 贡献

https://github.com/F5Networks/f5-ansible

Terraform

F5 贡献

https://github.com/f5devcentral/terraform-provider-bigip

Puppet

F5 贡献

https://github.com/f5devcentral/f5-puppet

Chef

用户贡献

https://github.com/target/f5-bigip-cookbook

SaltStack

第三方

https://docs.saltstack.com/en/latest/ref/runners/all/salt.runners.f5.html

基础设施模板系统

平台

状态

示例和来源

AWS

F5支持2

https://github.com/F5Networks/f5-aws-cloudformation

Azure

F5 支持1

https://github.com/F5Networks/f5-azure-arm-templates

Google

F5支持1

https://github.com/F5Networks/f5-google-gdm-templates

OpenStack

F5支持1

https://github.com/F5Networks/f5-openstack-hot

----------------------------

启动代理和云脚本

Cloud-init
https://devcentral.f5.com/articles/f5-in-aws-part-5-cloud-init-single-nic-and-scale-out-of-big-ip-in-v12-21476

Cloud libs
https://github.com/F5Networks/f5-cloud-libs

---------------------------

平台集成
容器管理平台

平台

状态

示例和来源

Kubernetes

F5支持1

https://github.com/F5Networks/k8s-bigip-ctlr

Marathon

F5支持1

https://github.com/F5Networks/marathon-bigip-ctlr

CloudFoundry

F5 支持1

https://github.com/F5Networks/cf-bigip-ctlr

私有云平台

平台

状态

示例和来源

OpenStack(LBaaS)

F5 支持1

https://github.com/F5Networks/f5-openstack-lbaasv2-driver

OpenStack(Heat)

F5 支持1

https://github.com/F5Networks/f5-openstack-hot

VMWare (vRO)

第三方

https://bluemedora.com/products/f5/big-ip-for-vrealize-operations/

-------------------

关于编排和工作流工具的说明

上述工具和集成提供了自动部署和配置BIG-IP平台的方法,可用于提供应用可用性、安全性和扩展服务。这些服务虽然不可或缺,但只是全栈应用部署的一部分。要以协调且经过测试的方式,利用服务器、数据、已编译的应用代码和基础设施构建完整的应用堆栈,仅靠简单的自动化工具还不够。

您需要使用更高级别的编排工具,并配合相关工作流以及与多个自动化系统的集成。这些工具最常用于持续集成和持续交付(CI/CD)实践;在实际实施中,自动化必不可少。编排工具有很多种,其中Jenkins可能最为常用。此外,还有一些示例工作流,展示了如何使用Jenkins、F5和Ansible,将F5基础设施即代码功能纳入CI/CD工作流。不过,一般而言,编排工具会通过某种配置自动化工具执行实际更改,以部署服务。

许可

BIG-IP平台需要获得许可才能运行,因此,将许可纳入自动化的关键路径会很有帮助。在高度动态的环境中,可能需要快速扩展或缩减BIG-IP虚拟设备,或创建此类设备用于测试和开发,因此应慎重考虑许可模式。

在公有云中,一种方式是使用BIG-IP的按用量计费版本(可通过云市场获取)。按用量计费实例会自动获得许可,费用由云提供商按实际使用量或承诺使用时长收取。

另一种选择是将通过订阅(或永久许可)购买的可重复使用许可证池与F5 BIG-IQ License Manager配合使用,以便从许可证池中分配和撤销许可证。

可以通过启动代理和API调用自动执行许可步骤。此操作需要通过出站互联网访问F5许可证服务器(即使使用云平台中的按用量计费许可证也是如此)。

何时使用哪种方式?

根据组织的具体情况,选择合适的自动化和编排工具可能非常简单,也可能颇具挑战。如果已为其他组件采用某种工具或方法,只需将BIG-IP集成到该系统中,选择过程就会很简单。即使不与特定工具集成,借助功能丰富的iControl REST API、iControl LX功能和cloud-init,也可以相对轻松地将BIG-IP集成到现有自动化工具中(尤其是结合使用iApp模板时,只需一次API调用即可创建复杂配置)。

不过,如果从零开始,情况可能会更加复杂。与选择其他解决方案一样,首先应明确自身需求。本文无法代您制定需求清单,但提供了以下问题和建议,帮助您进行评估。

  • 自动化模型:声明式模型可让编排服务使用者更轻松地与其交互。使用者只需明确所需结果,无需了解实现该结果的所有流程步骤。
  • 潜在的平台和环境:目前来看,容器和各种云平台似乎必然会成为应用基础设施的重要组成部分,因此应据此做好规划。
  • 技能:是否已掌握部分底层技术所需的技能?请注意,这些技能可能不在您所在的部门,而是分布在整个企业中。如果是这样,选择使用贵组织已采用语言的工具可能更合适。
  • 可支持性: 只构建您有能力支持的系统。这一点看似显而易见,但成功的关键在于选择组织有能力交付的复杂程度,从而充分发挥自动化的优势,同时避免产生过多的运营开销。

F5私有云解决方案包

F5 private cloud solution packages可帮助您轻松获取在多种私有云环境中交付F5应用服务所需的技术和服务。这些解决方案包整合了软件、硬件和专业服务,为多种私有云平台提供经过验证的交钥匙解决方案。使用private cloud solution packages可获得能够复制到其他平台的示范部署,从而在多个环境中构建更加统一、一致的应用交付和安全服务。

结论

IT自动化程度不断提高已是必然趋势。以战略性方式提供关键的应用交付和安全服务,可确保贵组织部署的应用保持安全和可用。自动化还有助于降低运营开销,尤其是在使用多个平台和公有云时。

选择合适的自动化系统可能颇具挑战。理想情况下,应通过协作和整体规划来完成选择,同时考虑现有技能以及系统的可支持性。无论选择哪种解决方案,BIG-IP平台和F5的专业能力都能为您提供支持,帮助交付应用所依赖的企业级服务,无论这些应用部署在何处。

发布于2018年2月9日