文档首页> 弹性伸缩 AS> 最佳实践> 搭建可自动伸缩的Discuz!论坛网站
更新时间:2022-03-31 GMT+08:00

搭建可自动伸缩的Discuz!论坛网站

应用场景

Discuz!论坛是全球成熟度最高、覆盖率最大的论坛软件系统之一。用户对论坛的访问可分为高峰期和平峰期,若论坛采用多服务器部署模式且满足高峰时期的负载需求,平峰期必有部分服务器处于闲置状态,增加了不必要的成本,也造成了资源浪费。

弹性伸缩可帮助您解决以上问题。当您在论坛的服务器系统中应用弹性伸缩后,弹性伸缩可以根据您设定的策略,自动地增加或减少服务器的数量,在保证您的网站正常运转的同时节约成本。本实践以搭建可自动伸缩的Discuz!论坛为例,介绍了如何使用弹性伸缩服务搭建一个可自动增加或减少弹性云服务器数量的Web服务。

方案介绍

为了实现创建可自动伸缩的Discuz!论坛,您需要按照表1中的步骤进行网站的搭建,本文重点介绍创建弹性伸缩实现云服务器自动伸缩的过程。当网站的负载增加时云服务器的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!论坛网站》完成表1中搭建网站部分的任务。

创建伸缩配置

伸缩配置定义了移入伸缩组的云服务器的规格,为了移入伸缩组的云服务器能自动承载业务,我们使用镜像discuz_centos6.5(40GB),并使伸缩配置中的参数和discuz02保持一致。

  1. 登录管理控制台,选择“计算 > 弹性伸缩”。
  2. 在“伸缩实例”页面,单击“创建伸缩配置”。
    参考表2进行关键参数配置,未列出的参数选择默认值即可。
    表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. 伸缩配置参数配置完成后,单击“立即创建”。

创建伸缩组

  1. 单击“创建弹性伸缩组”。
    参考表3进行关键参数配置,未列出的参数选择默认值即可。
    表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,伸缩组会增加一台弹性云服务器。
    表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,伸缩组会减少一台弹性云服务器。
  5. 单击“确定”。
  6. 返回伸缩策略列表页面,若伸缩策略为“已启用”状态,说明伸缩策略创建成功。

手动移入实例

手动将云服务器discuz02移入伸缩组。

  1. 单击伸缩组as-group-discuz名称进入伸缩组详情页面。
  2. 切换到“伸缩实例”页签,将discuz02手动移入伸缩组中。

修改最小实例数

为保证discuz02不被伸缩活动移出伸缩组,需修改伸缩组的最小实例数。

  1. 单击伸缩组as-group-discuz名称,进入伸缩组详情页面。
  2. 单击页面右上角的“修改”。修改最小实例数为1。
  3. 修改完成后,单击“确定”。

结果验证

若论坛可以正常使用,当伸缩组中的云服务器CPU使用率持续高于70%(在伸缩组的“监控”页签可对监控指标进行观察),伸缩组会自动增加一台云服务器(在伸缩组的“活动历史”页签可对伸缩活动历史进行查看)。当伸缩组中的云服务器CPU使用率持续低于30%,且伸缩组中至少存在两台云服务器时,伸缩组会自动减少一台云服务器,则本次实践是成功的。若不然,请联系技术支持定位伸缩组不能正常进行伸缩活动的原因。

实践扩展

  • 当应用场景有变化,需要在云服务器上部署新的软件时,可使用弹性伸缩的生命周期挂钩功能,在实例加入和移出伸缩组时进行自定义操作,灵活的管理加入或移出弹性伸缩组的实例。具体操作可参见生命周期挂钩
  • 当所需的弹性云服务器的规格变更时,可创建新的伸缩配置,操作可参考使用新模板创建伸缩配置。创建完成后,可参考为伸缩组更换伸缩配置为伸缩组更换伸缩配置,即可改变伸缩组新加入实例的规格。