写作背景 随着互联网行业的快速发展,诞生出了许多新兴的业务场景,比如当下比较火爆的网络直播、秒杀抢票、电商抢购、网络游戏等,这些业务场景典型的特点就是高并发、大流量和业务具有波峰波谷,这就要求企业的IT架构具备如下特点: 1.流量并发:能够保障平台系统在业务峰值时刻持续稳定运行,客户业务正常访问不受影响; 2.横向扩展:当后端服务器运行负载较高时可以快速横向扩容; 3.负载均衡:不能出现后端服务器“部分忙碌,部分闲置”的情况; 4.无单点故障:能够快速甄别出问题的业务服务器并进行隔离;
面对这些需求,传统IT架构很难支撑到位,ZStack云平台的弹性伸缩+负载均衡功能,可以很好的满足高并发场景下云主机的横向扩展、流量负载均衡、自动屏蔽不健康的后端云主机并做到弹性自愈,帮助企业把更多的精力专注业务本身,为企业创造更高价值。
ZStack弹性伸缩+负载均衡基于VPC路由器实现,用户通过访问VPC路由器提供的虚拟IP来访问后端运行业务的云主机,伸缩策略决定伸缩组中最小/最大云主机数量及弹性扩容和缩容的条件,同时通过健康检查来确认后端云主机的健康状况,以保障客户业务持续稳定的运行。下图是负载均衡和弹性伸缩的示意图:
(图1 ZStack弹性伸缩+负载均衡逻辑图) 本文将从以下几个角度介绍如何在实际业务场景中使用ZStack的弹性伸缩和负载均衡功能。 一、环境准备 1. VPC路由器/高可用组 需要至少一个VPC路由器或者VPC高可用组;负载均衡服务是由ZStack的VPC路由器/VPC高可用组提供的服务,需要先创建VPC路由器或者VPC高可用组,并且确保VPC路由器运行状态正常。 (图2 ZStack VPC路由器) 2. VPC网络 需要至少一个VPC网络(地址段自定义)用于弹性伸缩创建云主机。 (图3 ZStack VPC网络) 3. 云主机镜像 需要至少一个镜像用于创建云主机,生产环境中需要把相关业务封装到镜像中并设置开机自启动,通过弹性伸缩出来的云主机业务层也能实现自启动。本次测试环境镜像为Centos7.4,并且封装了Apache服务,在html配置文件中输入ZStack Running。 (图4 封装了Apahce服务的Centos7.4镜像) 二、创建负载均衡 1. 创建负载均衡器 点击网络服务中的负载均衡器,创建负载均衡器,网络选择公有网络,可以指定IP地址创建或者通过DHCP获取负载均衡器地址,用户通过该公网IP地址来访问后端云主机业务。 (图5 ZStack负载均衡器) 2. 创建监听器 ZStack负载均衡支持四层负载(TCP、UDP)和七层负载(HTTP、HTTPS),创建负载均衡器的时候需要选择相应的协议、端口和负载均衡器。比如公网的80端口负载到内网一组云主机的80端口,实现TCP四层的负载均衡。 (图6 ZStack负载均衡监听器) 三、创建弹性伸缩组 创建弹性伸缩组的时候需要定义伸缩组中最小云主机数量、最大云主机数量和起始云主机数量,这些参数需要根据生产环境实际的业务量进行评估,比如在大流量、高并发和波峰波谷的业务场景中,建议把最大云主机数量设置的稍微大一些;选择负载均衡器、监听器以及三层网络。测试环境下最小云主机数量、最大云主机数量和起始云主机数量分别设置为2台、10台和2台。 选择合适的计算规格和镜像模版,注意模版需要提前封装,一般需要把业务封装进模版并做好开机自启动。 定义扩容/缩容策略,触发条件支持云主机内存平均使用率和CPU平均使用率两种,通过设置一定的触发条件来自动完成后端云主机的扩容和缩容动作。比如,当后端云主机平均CPU使用率大于70%并且持续1分钟的时候进行扩容,每次新增一个云主机;当后端云主机平均CPU使用率小于30%并持续1分钟的时候进行缩容,每次缩容一台云主机,缩容的时候默认是最新创建的云主机优先删除。 (图7 创建弹性伸缩策略) (图8 创建弹性伸缩策略) (图9 创建弹性伸缩策略) (图10 创建弹性伸缩策略) 创建弹性伸缩组,默认是停用状态,需要点击启动。启用后,会按照弹性伸缩组的策略创建云主机。在负载均衡监听器中可以看到云主机的健康状况,并通过访问负载均衡虚拟IP来验证负载均衡效果。 (图11 启用ZStack弹性伸缩组) (图12 通过伸缩组策略创建出来的两台云主机) (图13 ZStack负载均衡监听器对云主机健康状况进行检测) 通过负载均衡虚拟IP访问后端云主机的WEB页面。 (图14 通过负载均衡VIP访问后端云主机WEB页面) 四、验证弹性伸缩效果 1. 弹性扩容验证 对负载均衡后端的云主机运行for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done脚本来提升云主机的CPU利用率 (图15 云主机操作系统中通过top命令打印cpu利用率) (图16 通过ZStack UI监控数据来监控云主机CPU变化情况) (图17 通过弹性伸缩策略自动创建出来一台云主机) 负载均衡后端云主机的数量会随着平均CPU使用率的升高增加1个,最终数量上限为伸缩组中规定的最大云主机数量10台。 2. 弹性缩容验证 对负载均衡后端的两个云主机执行fg crtl+C ,pkill -9 dd后,云主机CPU的利用率会下降,一段时间后观察弹性缩容的效果。 (图18 云主机操作系统中通过top命令打印CPU利用率) (图 19通过ZStack UI监控数据来监控云主机CPU变化情况,观察弹性伸缩组中云主机数量) 负载均衡后端云主机的数量会随着平均CPU使用率的下降减少1个,最终数量降至伸缩组规则中规定的最低云主机数量2台。 用户可以通过查看弹性伸缩记录,以便了解业务云主机流量峰值情况和业务负载情况,方便用户有针对性的调整产品战略。 (图20 ZStack弹性伸缩组中的伸缩记录) 另外需要说明的是,云平台在触发弹性扩容和弹性缩容的整个过程中不会影响云主机业务,并且可以优化流量负载,提升用户体验。 (图21 弹性伸缩过程中通过负载均衡VIP持续访问后端云主机WEB页面效果) 结尾 ZStack弹性伸缩+负载均衡功能,可以帮助企业优化传统IT架构,通过设置弹性伸缩规则实现横向扩展/减少业务云主机的数量,提升云平台资源整体利用率;ZStack负载均衡支持四层和七层,并且能够做到健康检查,自动隔离不可用的云主机提升业务稳定性和安全性;弹性伸缩+负载均衡可以帮助企业集中精力发展自己的核心业务,最大程度的助力企业创造更广泛的价值!
本文将从以下几个角度介绍如何在实际业务场景中使用ZStack的弹性伸缩和负载均衡功能。
需要至少一个VPC路由器或者VPC高可用组;负载均衡服务是由ZStack的VPC路由器/VPC高可用组提供的服务,需要先创建VPC路由器或者VPC高可用组,并且确保VPC路由器运行状态正常。
(图2 ZStack VPC路由器)
(图3 ZStack VPC网络)
需要至少一个镜像用于创建云主机,生产环境中需要把相关业务封装到镜像中并设置开机自启动,通过弹性伸缩出来的云主机业务层也能实现自启动。本次测试环境镜像为Centos7.4,并且封装了Apache服务,在html配置文件中输入ZStack Running。
(图4 封装了Apahce服务的Centos7.4镜像)
(图5 ZStack负载均衡器)
(图6 ZStack负载均衡监听器)
(图7 创建弹性伸缩策略)
(图8 创建弹性伸缩策略)
(图9 创建弹性伸缩策略)
(图10 创建弹性伸缩策略)
(图11 启用ZStack弹性伸缩组)
(图12 通过伸缩组策略创建出来的两台云主机)
(图13 ZStack负载均衡监听器对云主机健康状况进行检测)
(图14 通过负载均衡VIP访问后端云主机WEB页面)
(图15 云主机操作系统中通过top命令打印cpu利用率)
(图16 通过ZStack UI监控数据来监控云主机CPU变化情况)
(图17 通过弹性伸缩策略自动创建出来一台云主机)
(图18 云主机操作系统中通过top命令打印CPU利用率)
(图 19通过ZStack UI监控数据来监控云主机CPU变化情况,观察弹性伸缩组中云主机数量)
(图20 ZStack弹性伸缩组中的伸缩记录)
(图21 弹性伸缩过程中通过负载均衡VIP持续访问后端云主机WEB页面效果)