
# 将ELB加入弹性伸缩组实现自动添加或移除后端服务器
弹性伸缩能够实现应用系统自动按需调整资源，在业务增长时能够实现自动增加服务器实例的数量，以满足突增的业务需求，在业务下降时能够实现服务器数量自动缩减，以实现保障业务运行的同时节约资源。将ELB加入到弹性伸缩组，弹性伸缩可以根据您设定的策略，自动地增加或减少服务器的数量，在保证您的业务正常运转的同时节约成本。
#### 应用场景
如果您的业务是一个网站，当网站的负载增加时云服务器的CPU使用率会增大，负载降低时CPU使用率会降低。配置两条监控CPU使用率的告警策略，分别在CPU使用率高于70%时增加一台云服务器，在CPU使用率低于30%时减少一台云服务器，保证网站业务始终有合适数量的云服务器，实现自动添加或移除云服务器的功能。
#### 操作步骤
本实践提供搭建Discuz!论坛的配置示例。
表1搭建Discuz!论坛步骤 
| 任务     | 分类     | 子任务描述            | 说明                                                                                                             |
|:---|:---|:---|:---|
| 搭建网站   | 申请服务   | 申请虚拟私有云          | 申请为云服务器提供网络服务的虚拟私有云vpc-DISCUZ。                                                                                 |
| 搭建网站   | 申请服务   | 购买弹性公网IP         | 需申请使云服务器和互联网互通的弹性公网IP。                                                                                         |
| 搭建网站   | 申请服务   | 创建安全组并添加规则       | 为了保证论坛的网络安全，需要设置安全组对网络访问进行控制。创建的安全组sg-DISCUZ。                                                                  |
| 搭建网站   | 申请服务   | 购买弹性云服务器         | 需要购买两台弹性云服务器，云服务器discuz01用于部署论坛数据库，discuz02用于部署论坛业务。购买云服务器discuz01时绑定之前购买的弹性公网IP，discuz02暂不绑定弹性公网IP。           |
| 搭建网站   | 配置服务器  | 在discuz01上搭建数据库  | 在discuz01上安装云数据库 RDS for MySQL，启动RDS for MySQL，设置开机自启动。                                                        |
| 搭建网站   | 配置服务器  | 在discuz02上部署网站代码 | 先将discuz01上的弹性公网IP解绑，再绑定至discuz02，在discuz02上部署Web环境和网站代码。                                                      |
| 搭建网站   | 配置特性   | 释放弹性公网IP         | 为了节省弹性公网IP资源，使用负载均衡服务前请先释放discuz02绑定的弹性公网IP。                                                                   |
| 搭建网站   | 配置特性   | 创建弹性负载均衡         | 为了在伸缩组中均衡访问网站的流量，需要购买独享型负载均衡器elb-DISCUZ。                                                                       |
| 搭建网站   | 配置特性   | 制作镜像             | 为了后续增加的云服务器可以自动搭建Web环境和部署网站代码，需要制作discuz02的镜像discuz_centos6.5(40GB)，该镜像在创建伸缩配置时作为私有镜像使用。                       |
| 创建弹性伸缩 | -      | 创建伸缩配置           | 伸缩配置是伸缩组内实例（弹性云服务器）的模板，定义了伸缩组内待添加的实例的规格数据。创建伸缩配置as-config-discuz。                                              |
| 创建弹性伸缩 | -      | 创建伸缩组            | 伸缩组是云服务器进行伸缩的基本单位，伸缩活动将会以伸缩组为单位进行。创建弹性伸缩组as-group-discuz。                                                      |
| 创建弹性伸缩 | -      | 创建伸缩策略           | 伸缩策略能够触发伸缩活动，配置两条监控CPU使用率的告警策略，在业务负载增加时增加云服务器数量，在业务负载减少时减少云服务器数量。                                              |
| 创建弹性伸缩 | -      | 手动移入实例           | 为保证discuz02可以和后续移入伸缩组中的服务器共同承载论坛业务，需要将discuz02手动移入伸缩组。                                                         |
| 创建弹性伸缩 | -      | 修改最小实例数          | 最小实例数定义了伸缩组中云服务的最少数量，修改最小实例数为1后，伸缩组至少会保证有一台云服务器。discuz02是手动移入，在实例移除策略中被移出的优先级最低，故修改最小实例数可以保证discuz02在伸缩组中不被移出。 |
| 访问网站   | 验证配置结果 | 验证网站是否可以正常访问     | 获取负载均衡服务的弹性公网IP地址，在浏览器中输入http://*弹性公网IP地址*/forum.php进行验证。若可以访问则说明各项配置已生效。                                      |
   
#### 准备工作
- 您可以参考[《搭建Discuz!论坛网站》](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0092817019.html) 完成后端网站业务的搭建。
- 创建独享型ELB实例elb-DISCUZ，且ELB已绑定EIP，ELB所属VPC与弹性伸缩组的保持一致。具体操作，请参见[购买独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)和[绑定IPv4公网IP](https://support.huaweicloud.com/usermanual-elb/elb_ug_fz_0015.html)。
- 创建一个后端服务器组，并关联至独享型ELB实例elb-DISCUZ。
 
#### 步骤一：创建伸缩配置
伸缩配置定义了移入伸缩组的云服务器的规格，为了移入伸缩组的云服务器能自动承载业务，使用镜像discuz_centos6.5(40GB)，并使伸缩配置中的参数和discuz02保持一致。
1. 登录[AS控制台](https://console.huaweicloud.com/ecm/?#/as/manager/groupConfigInfo/groupList)。
2. 在"伸缩实例"页面，单击"创建伸缩配置"。
   参考[表2]进行关键参数配置，未列出的参数选择默认值即可。
   图1伸缩配置参数   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0182222608.png "点击放大")
    表2伸缩配置关键参数 
   | 参数     | 解释                                                                                    | 取值样例                                                                            |
   |:---|:---|:---|
   | 配置模板   | 选择"使用新模板"，重新选择云服务器类型、vCPUs、内存、镜像、磁盘等参数信息，创建新的弹性伸缩配置。                                  | 使用新模板                                                                           |
   | 规格     | 可以选择多个规格，避免在伸缩时规格售罄的风险。规格使用优先策略包括"选择优先"和"成本优先"，请根据需要选择。                               | s3.medium.2 s3.large.2     |
   | 镜像     | 为伸缩组中移入的实例提供软件和系统应用配置的模板，选择私有镜像discuz_centos6.5(40GB)。                                | 私有镜像 discuz_centos6.5(40GB)                                                     |
   | 磁盘     | 为伸缩组中的移入的实例提供存储和存储管理功能。                                                               | 系统盘 高IO 40GB 数据盘 高IO 100GB |
   | 安全组    | 安全组是一个逻辑上的分组，用来实现安全组内和组间弹性云服务器的访问控制，加强弹性云服务器的安全保护。选择安全组sg-DISCUZ。                     | sg-DISCUZ                                                                       |
   | 弹性公网IP | 伸缩组中已经添加了负载均衡后，伸缩配置可以不配置弹性公网IP。系统会自动将加入伸缩组的实例添加到负载均衡上，伸缩组中的实例统一通过负载均衡绑定的弹性公网IP对外提供服务。 | 不使用                                                                             |
      
   
3. 伸缩配置参数配置完成后，单击"立即创建"。
 
#### 步骤二：创建伸缩组并关联至ELB实例
1. 单击"创建弹性伸缩组"。
   参考[表3]进行关键参数配置，未列出的参数选择默认值即可。
   图2设置伸缩组参数   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002395190173.png "点击放大")
    表3伸缩组关键参数 
   | 参数     | 解释                                                                | 取值样例       |
   |:---|:---|:---|
   | 最大实例数  | 伸缩组中弹性云服务器数量的最大值。                                                 | 50         |
   | 期望实例数  | 伸缩组中期望的云服务器数量，本实践中要将搭建Discuz!论坛的云服务器手动移入，为避免移入前发生伸缩活动，将期望实例数设置为0。 | 0          |
   | 最小实例数  | 伸缩组中弹性云服务器数量的最小值。                                                 | 0          |
   | 虚拟私有云  | 为伸缩组中的实例提供所使用的网络。必须和云服务器discuz02属于同一VPC。                          | VPC-DISCUZ |
   | 子网     | 子网可以方便您管理vpc中的网络。选择中申请虚拟私有云时创建的子网。                                | vpc-test   |
   | 负载均衡   | 为伸缩组中的实例均分流量，选择独享型负载均衡器elb-DISCUZ。后端端口配置为需要监听的业务端口，示例中配置为80，权重为1。 | 使用独享型      |
   | 健康检查方式 | 健康检查方式选择"负载均衡健康检查"，负载均衡健康检查是通过系统向后端云服务器发起心跳检查的方式来实现的，推荐使用该方式。     | 负载均衡健康检查   |
      
   
2. 参数配置完后，单击"立即创建"。
3. 返回弹性伸缩组列表，若伸缩组为"已启用"状态，说明伸缩组创建成功。
 
#### 步骤三：创建伸缩策略
为了能实现云服务器的自动伸缩，配置两条监控CPU使用率的告警策略，在业务负载上升时增加云服务器数量的策略as-policy-discuz01，在业务负载降低时减少云服务器数量的策略as-policy-discuz02。
1. 在已创建的弹性伸缩组"as-group-discuz"所在行，单击操作列的"查看伸缩策略"。
2. 单击"添加伸缩策略"。
   参考[表4]配置伸缩策略as-policy-discuz01的参数，当系统连续3次监控到CPU使用率超过70%时，触发伸缩策略as-policy-discuz01，伸缩组会增加一台弹性云服务器。
   图3伸缩策略as-policy-discuz01参数   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001706398637.png "点击放大")
    表4伸缩策略as-policy-discuz01关键参数 
   | 参数     | 解释                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 取值样例               |
   |:---|:---|:---|
   | 策略名称   | 创建伸缩策略的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | as-policy-discuz01 |
   | 策略类型   | 选择"告警策略"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 告警策略               |
   | 告警规则   | 可选择"现在创建"或"使用已有"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 现在创建               |
   | 告警规则名称 | 新建告警规则的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | as-alarm-cpu-01    |
   | 监控类型   | 定义监控指标的类型，是系统支持的或是自定义的。选择"系统监控"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 系统监控               |
   | 触发条件   | 选择弹性伸缩支持的监控指标并对监控指标设定告警条件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | CPU使用率最大值 \> 70%   |
   | 监控周期   | 告警规则刷新告警状态的周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 5分钟                |
   | 连续出现次数 | 触发告警时的采样点数目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 3                  |
   | 执行动作   | 设置伸缩活动执行动作及实例的个数或实例百分比。 执行动作包括： - 增加 当执行伸缩活动时，向伸缩组增加实例。   - 减少 当执行伸缩活动时，从伸缩组中减少实例。   - 设置为 将伸缩组中的期望实例数设置为固定值。    | 增加1个实例             |
   | 冷却时间   | 为了避免告警策略频繁触发，必须设置冷却时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 900                |
      
   
3. 单击"确定"。
4. 再次单击"添加伸缩策略"，配置伸缩策略as-policy-discuz02的参数，当系统连续3次监控到CPU使用率低于30%时，触发伸缩策略as-policy-discuz02，伸缩组会减少一台弹性云服务器。
   图4伸缩策略as-policy-discuz02参数   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002511016292.png "点击放大")
   表5伸缩策略as-policy-discuz02关键参数 
   | 参数     | 解释                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 取值样例               |
   |:---|:---|:---|
   | 策略名称   | 创建伸缩策略的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | as-policy-discuz02 |
   | 策略类型   | 选择"告警策略"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 告警策略               |
   | 告警规则   | 可选择"现在创建"或"使用已有"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 现在创建               |
   | 告警规则名称 | 新建告警规则的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | as-alarm-cpu-02    |
   | 监控类型   | 定义监控指标的类型，是系统支持的或是自定义的。选择"系统监控"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 系统监控               |
   | 触发条件   | 选择弹性伸缩支持的监控指标并对监控指标设定告警条件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | CPU使用率最小值 \< 30%   |
   | 监控周期   | 告警规则刷新告警状态的周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 5分钟                |
   | 连续出现次数 | 触发告警时的采样点数目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 3                  |
   | 执行动作   | 设置伸缩活动执行动作及实例的个数或实例百分比。 执行动作包括： - 增加 当执行伸缩活动时，向伸缩组增加实例。   - 减少 当执行伸缩活动时，从伸缩组中减少实例。   - 设置为 将伸缩组中的期望实例数设置为固定值。    | 减少1个实例             |
   | 冷却时间   | 为了避免告警策略频繁触发，必须设置冷却时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 900                |
      
   
5. 单击"确定"。
6. 返回伸缩策略列表页面，若伸缩策略为"已启用"状态，说明伸缩策略创建成功。
 
#### 步骤四：将云服务器移入伸缩组
将云服务器discuz02移入伸缩组。
1. 单击伸缩组as-group-discuz名称进入伸缩组详情页面。
2. 切换到"伸缩实例"页签，将discuz02手动移入伸缩组中。
 
#### 步骤五：修改最小实例数
为保证discuz02不被伸缩活动移出伸缩组，需修改伸缩组的最小实例数。
1. 单击伸缩组as-group-discuz名称，进入伸缩组详情页面。
2. 单击页面右上角的"修改伸缩组"。修改最小实例数为1。
   图5修改最小实例数   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0182302662.png) 
3. 修改完成后，单击"确定"。
 
#### 步骤六：结果验证
若论坛可以正常使用，当伸缩组中的云服务器CPU使用率持续高于70%（在伸缩组的"监控"页签可对监控指标进行观察），伸缩组会自动增加一台云服务器（在伸缩组的"活动历史"页签可对伸缩活动历史进行查看）。当伸缩组中的云服务器CPU使用率持续低于30%，且伸缩组中至少存在两台云服务器时，伸缩组会自动减少一台云服务器，则本次实践是成功的。若不然，请联系技术支持定位伸缩组不能正常进行伸缩活动的原因。
#### 相关文档
- 当应用场景有变化，需要在云服务器上部署新的软件时，可使用弹性伸缩的生命周期挂钩功能，在实例加入和移出伸缩组时进行自定义操作，灵活地管理加入或移出弹性伸缩组的实例。具体操作可参见[生命周期挂钩](https://support.huaweicloud.com/usermanual-as/zh-cn_topic_0042018380.html)。
- 当所需的弹性云服务器的规格变更时，可创建新的伸缩配置，操作可参考[使用新模板创建伸缩配置](https://support.huaweicloud.com/usermanual-as/as_02_0103.html)。创建完成后，可参考[为伸缩组更换伸缩配置](https://support.huaweicloud.com/usermanual-as/as_01_0103.html)，即可改变伸缩组新加入实例的规格。
 
