基于轻量应用负载均衡,您可以部署高可用架构应用集群。相较于使用单台轻量应用服务器搭建的应用,高可用架构应用集群可以提供业务分发、弹性扩展等能力,以保证应用的稳定性和可用性。本文介绍如何部署高可用架构应用集群。

前提条件

确保您已拥有域名。如果您还没有注册域名,可以通过阿里云域名服务购买域名。更多信息,请参见什么是阿里云域名服务。您也可以通过其他域名服务商自行注册域名。

背景信息

高可用架构应用集群具备的特点如下所述:
  • 轻量应用负载均衡可以将公网访问的流量分发到后端多台轻量应用服务器上,增强应用吞吐能力的同时,可以消除服务器的单点故障,提升应用可用性。
  • 通过自定义镜像功能,您可以快速创建部署了相同应用的轻量应用服务器,然后添加至轻量应用负载均衡作为后端实例,即可实现业务的弹性扩展。
本文示例场景中,将通过轻量应用负载均衡、轻量应用服务器、域名以及云解析DNS部署高可用架构应用集群。高可用架构示意图如下所示:高可用架构示意图示意图中涉及的资源说明如下:
  • 地域:轻量应用负载均衡仅支持添加相同地域下的后端实例。

    本示例中将在华东1(杭州)地域下,创建轻量应用负载均衡、轻量应用服务器。

  • 轻量应用服务器:应用服务器和数据库服务器分离。在提升应用吞吐能力的同时,保证了数据存储效率以及数据安全。

    本示例中将创建两台轻量应用服务器作为应用服务器(本文中简称服务器A服务器B),创建一台轻量应用服务器作为数据库服务器(本文中简称服务器C)。

  • 轻量应用负载均衡:默认采用HTTP协议(目前不支持HTTPS协议),监听80端口,且转发规则为轮询模式。

    本示例中将创建一台轻量应用负载均衡,然后将两台应用服务器作为后端实例。

  • 域名与云解析DNS:轻量应用负载均衡需要绑定域名以实现访问后端实例的功能。

    因此您需要使用云解析DNS,将自己拥有的域名(本文域名示例为example.com)通过CNAME记录解析至轻量应用负载均衡公网服务地址。

注意事项:
  • 本文示例场景中,基于Nginx、PHP搭建应用服务器的运行环境,并选择WordPress博客网站作为应用示例;数据库服务器中安装MySQL数据库存储数据。为高效完成各个服务器中的软件安装,本示例中将使用宝塔面板安装并配置各个软件。如果您熟悉服务器相关操作,也可以自行完成软件安装与配置。
  • 如果您的域名需要备案,则需确保轻量应用服务器购买时长大于或等于三个月。
  • 高可用架构集群中,需要保证多台应用服务器之间的数据同步。由于数据同步操作复杂,本文示例场景中不对多台应用服务器的数据同步做要求。当您在部署实际业务时,建议自行通过Syncthing文件同步工具或者Rsync与Inotify组合方式,同步多台服务器之间的数据。

步骤一:创建并配置数据库服务器C

本示例中,将通过宝塔应用镜像创建一台轻量应用服务器,然后通过宝塔面板快速安装并配置MySQL 5.7。

  1. 创建轻量应用服务器。
    该服务器将作为数据库服务器(服务器C)。具体操作,请参见创建轻量应用服务器。本示例中服务器配置如下:
    • 实例类型:选择服务器实例
    • 地域和可用区:单击中国页签,然后选择华东1(杭州)
    • 镜像:单击应用镜像页签,然后选择BT-Panel 7.5.1镜像。
    • 套餐配置:选择90元/月的ESSD云盘套餐。

      作为数据库服务器时,建议选择内存相对较高的套餐,以提高服务器的数据处理能力。

    • 数据盘:本示例中将不挂载数据盘。

      如果您实际业务场景中需要存储大量的数据,请根据具体需求,指定数据盘容量大小进行挂载。

    • 购买时长:选择3个月

      如果您的域名还没有备案,则轻量应用服务器购买时长达到3个月及以上方可申请域名备案。

    • 购买数量:1台。
  2. 服务器C的防火墙中添加防火墙规则,放行MySQL默认占用的3306端口以及宝塔面板占用的8888端口。
    添加防火墙规则的具体操作,请参见添加防火墙规则
    成功添加防火墙规则后,如下图所示:数据服务器防火墙
  3. 通过轻量应用服务器管理控制台访问服务器C的应用详情页。
    具体操作,请参见管理应用(适用于应用镜像)
  4. 获取宝塔面板登录信息,然后登录宝塔面板。
    1. 在应用详情页的宝塔面板信息区域,单击远程连接连接至服务器C,然后通过查询命令获取宝塔面板的首页地址、登录用户名以及密码。
      宝塔面板信息具体操作说明:
      1. 在图中①区域,单击面板首页地址后的复制,然后将命令粘贴至图中②区域的命令行中。

        运行命令即可获取宝塔面板的首页地址。

      2. 在图中①区域,单击用户名后的复制,然后将命令粘贴至图中②区域的命令行中。

        运行命令即可获取宝塔面板的登录用户名。

      3. 在图中①区域,单击密码后的复制,然后将命令粘贴至图中②区域的命令行中。

        运行命令即可获取宝塔面板的登录密码。

      您需要将查询到的宝塔面板首页地址、用户名以及密码信息保存至本地,便于后续登录宝塔面板。
      说明 涉及用户名以及密码信息,请您妥善保管,避免造成数据泄露。
    2. 在本地物理主机中,通过浏览器访问宝塔面板首页地址,然后输入登录用户名以及密码信息,单击登录
      宝塔登录页面
    3. 首次登录宝塔面板,需要在欢迎您使用宝塔面板对话框中,阅读并同意宝塔的用户协议,然后单击进入面板
      进入面板后,宝塔面板会自动弹出对话框推荐您安装LNMP或其他运行环境。服务器C作为数据库服务器只需要MySQL数据库,因此请直接关闭该对话框。
    4. 绑定宝塔官网账号。
      宝塔面板必须要绑定宝塔官网账号后方可正常使用,因此您需要自行注册宝塔官网账号并登录。
  5. 安装MySQL数据库。
    1. 在宝塔面板的左侧导航栏,单击软件商店
    2. 应用搜索文本框中,输入MySQL进行搜索。
    3. 在搜索结果中,找到MySQL,然后在对应的操作列,单击安装
    4. mysql软件安装对话框中,完成配置,然后单击提交
      具体配置说明如下:
      • 安装版本:选择mysql 5.7版本。
      • 安装方式:选中极速安装。
    5. 软件安装对话框,单击确定
      安装软件需要一定的时间,您可以在宝塔面板自动弹出的消息盒子中查看软件安装的进度。
      当消息盒子中提示当前没有任务!时,表示MySQL安装完毕。
  6. 配置MySQL数据库。
    1. 在左侧导航栏,单击数据库
    2. 在页面顶部,单击添加数据库
    3. 添加数据库对话框,完成配置,然后单击提交
      具体配置说明如下:
      • 数据库名:自定义名称。本文示例值wptest
      • 用户名:用于访问wptest数据库的用户名信息。本文示例值wpuser
      • 密码:用于访问wptest数据库的密码信息。默认配置了随机数密码,建议您自定义密码信息。本文示例值WPtest123
        说明 涉及用户名以及密码信息,请您妥善保管,避免造成数据泄露。
      • 访问权限:所有人。
        说明 完全开放的访问权限不能保证数据安全。在后续创建了应用服务器后,您需要返回数据库服务器的宝塔面板,将MySQL的访问权限设置为指定IP,并指定应用服务器对应的内网IP。
      • 其他配置项保持默认配置即可。
      数据库添加成功后,您可以在当前页面查看到wptest数据库信息。数据库wptest
    4. 在左侧导航栏,单击安全
    5. 防火墙区域,放行MySQL默认占用的3306端口。
      具体操作说明如下:宝塔安全配置
      1. 在图中①区域,设置3306端口以及备注,然后单击放行
      2. 配置成功后,将在图中②区域,出现3306端口信息。

步骤二:创建并配置应用服务器A

本示例中,将通过宝塔应用镜像创建一台轻量应用服务器,然后通过宝塔快速安装并配置Nginx 1.21、PHP 7.2以及WordPress 5.6。

  1. 创建轻量应用服务器。
    该服务器将作为应用服务器(服务器A)。具体操作,请参见创建轻量应用服务器。本示例中服务器配置如下:
    • 实例类型:选择服务器实例
    • 地域和可用区:单击中国页签,然后选择华东1(杭州)
    • 镜像:单击应用镜像页签,然后选择BT-Panel 7.5.1镜像。
    • 套餐配置:选择60元/月的ESSD云盘套餐。
    • 数据盘:本示例中将不挂在数据盘。

      如果您实际业务场景中需要存储大量的应用程序或其他数据,请根据具体需求,指定数据盘容量大小进行挂载。

    • 购买时长:选择3个月

      如果您的域名还没有备案,则轻量应用服务器购买时长达到3个月及以上方可申请域名备案。

    • 购买数量:1台。
  2. 服务器A的防火墙中添加防火墙规则,放行宝塔面板占用的8888端口。
    添加防火墙规则的具体操作,请参见添加防火墙规则
  3. 获取宝塔面板的登录信息,并登录宝塔面板。
    操作方式与配置数据库服务器C时的操作一致。具体操作,请参见步骤一:创建并配置数据库服务器C中的步骤3与步骤4。
  4. 通过宝塔面板,安装Nginx 1.21以及PHP 7.2。
    1. 在宝塔面板的左侧导航栏,单击软件商店
    2. 应用搜索文本框中,输入Nginx进行搜索。
    3. 在搜索结果中,找到Nginx,然后在对应的操作列,单击安装
    4. nginx软件安装对话框中,完成配置,然后单击提交
      具体配置说明如下:
      • 安装版本:选择nginx 1.21版本。
      • 安装方式:选中极速安装。
    5. 软件安装对话框,单击确定
      安装软件需要一定的时间,您可以在宝塔面板自动弹出的消息盒子中查看软件安装的进度。
      当消息盒子中提示当前没有任务!时,表示Nginx安装完毕。
    6. 保持安装Nginx相同的操作方式,搜索PHP并选择安装PHP 7.2版本。
      PHP7.2
      安装Nginx和PHP后,在软件商店应用分类区域,单击已安装,即可查看到成功安装的Nginx 1.21以及PHP 7.2。安装完成确认
  5. 通过宝塔面板,一键部署WordPress博客网站。
    1. 在宝塔面板的左侧导航栏,单击软件商店
    2. 应用分类区域,单击一键部署
    3. 应用搜索文本框中,输入WordPress进行搜索。
    4. 在搜索结果中,找到WordPress,然后在操作列,单击一键部署
    5. 宝塔一键部署【WordPress】对话框,完成配置,然后单击提交
      wordpress一键部署具体配置说明如下:
      • 域名:输入您的域名以及服务器A的公网IP,格式如下所示:
        example.com
        47.96.XX.XX
        输入后,备注、根目录以及数据库的默认配置将会自动变更为域名相关信息。
        说明 此时域名example.com不需要做DNS解析以及域名绑定等操作。
      • 备注:不建议将域名信息作为备注,建议您手动修改备注信息。例如wordpresstest
      • 根目录:不建议将域名信息作为网站根目录的名称,建议您手动修改网站根目录。例如/www/wwwroot/wordpress
      • 数据库:配置信息保持为空。如果有默认配置,请删除默认配置。
      • 其他配置项保持默认配置。
      一键部署WordPress后,您可以在左侧导航栏,单击网站,查看处于运行中的WordPress网站信息。wordpress成功部署
  6. 安装WordPress。
    1. 通过本地物理主机的浏览器,访问服务器A的公网IP地址
      此时,域名example.com还没有完成DNS解析以及绑定域名的操作,因此您需要通过服务器公网IP访问WordPress安装页面。
    2. 选择WordPress的默认语言。
      本示例中选择简体中文
    3. 单击现在就开始!
    4. 配置数据库连接信息,然后单击提交
      数据库连接信息即数据库服务器C中的配置信息,本示例中,具体配置说明如下所述。您在实际操作中,请根据数据库服务器中真实的信息填写配置项。
      • 数据库名:wptest
      • 用户名:wpuser
      • 密码:WPtest123
      • 数据库主机:服务器C的内网IP:3306
      • 表前缀:保持默认配置
    5. 单击现在安装
    6. 配置WoredPress博客网站的信息,然后单击安装WordPress
      具体配置说明如下:
      • 站点标题:自定义的WordPress网站标题。例如:wp-HA-test。
      • 用户名:用于登录WordPress的用户名信息。例如:wpadmin。
      • 密码:用于登录WordPress的密码信息,建议您自定义高强度的密码。例如:WP123!password456。
        说明 涉及用户名以及密码信息,请您妥善保管,避免造成数据泄露。
      • 您的电子邮件:配置后用于接收WordPress网站的相关邮件。例如:username@example.com
    7. 成功!页面,单击登录,然后使用已配置好的登录信息(用户名与密码)登录WordPress。
      成功登录后,WordPress仪表盘界面如下图所示:wordpress仪表盘A在页面左上角单击站点标题,可以跳转至WordPress博客首页。首页如下图所示:wp首页

步骤三:通过自定义镜像创建应用服务器B

您可以通过轻量应用服务器的自定义镜像功能,快速创建与应用服务器A相同配置的应用服务器B。

  1. 服务器A创建自定义镜像。
    自定义镜像需要基于快照生成,关于创建自定义镜像的具体操作,请参见创建自定义镜像
  2. 通过自定义镜像,创建应用服务器B。
    具体操作,请参见使用自定义镜像创建服务器。在创建应用服务器B时您需要注意,除镜像配置为自定义镜像之外,其他配置项需要与创建应用服务器A时的配置保持完全一致。
  3. 配置应用服务器B的网站信息。
    当应用服务器B创建完成后,如果您直接访问服务器B的公网IP,将会出现如下图所示的报错信息:网站报错造成该问题的原因是因为在宝塔面板中,网站对应的域名设置仍然为应用服务器A的公网IP,因此,您需要登录宝塔面板将应用服务器B的公网IP添加至域名配置项中。
    1. 登录服务器B对应的宝塔面板。
      登录服务器B宝塔面板所需的用户名和密码,与服务器A宝塔面板的登录信息一致,但您需要注意,宝塔面板的登录地址有所不同,例如:
      • 服务器A宝塔面板的登录地址为http://服务器A公网IP:8888/db08****
      • 对应的服务器B宝塔面板的登录地址为http://服务器B公网IP:8888/db08****
    2. 登录宝塔面板后,在左侧导航栏,单击面板设置
    3. 找到服务器IP配置项,在对应的文本框中,将已配置的服务器A公网IP更换为服务器B公网IP,然后单击页面底部的保存
    4. 在左侧导航栏,单击网站
    5. 找到网站名为服务器A公网IP的网站,在操作列,单击设置
    6. 站点修改页面的左侧导航栏,单击域名管理
    7. 在文本框中输入服务器B公网IP,然后单击添加
      添加成功后,如下图所示:添加域名
  4. 在本地物理主机的浏览器中,测试访问服务器B公网IP
    如下图所示,可以成功访问WordPress博客网站。服务器B-wordpress

步骤四:修改数据库服务器中数据库的权限

当前已成功创建两台应用服务器(服务器A服务器B),为确保应用服务器与数据库服务器进行数据传输时的安全性,建议您将数据库服务器C中的MySQL访问权限,由所有人修改指定IP,并指向两台应用服务器的内网IP。

  1. 登录数据库服务器C对应的宝塔面板。
    具体操作,请参见步骤一:创建并配置数据库服务器C中的步骤3与步骤4。
  2. 登录宝塔面板后,在左侧导航栏,单击数据库
  3. 找到wptest数据库,在操作列单击权限
  4. 设置数据库权限对话框的访问权限列表中,选择指定IP,然后在新增的文本框中,输入服务器A以及服务器B的内网IP。
    同地域下的多台轻量应用服务器之间可以通过内网互通,相较于公网访问的方式,内网访问更加高效稳定。输入多个内网IP时,需要使用半角逗号(,)间隔。格式为172.27.XX.XX,172.27.XX.XX数据库指定IP
  5. 单击提交

步骤五:创建轻量应用负载均衡并添加后端实例

  1. 创建轻量应用负载均衡。
    具体操作,请参见创建轻量应用负载均衡。本示例中,具体配置说明如下:
    • 实例类型:选择负载均衡实例
    • 地域和可用区:选择华东1(杭州)
    • 套餐配置:60元/月
    • 购买时长:选择3个月
  2. 添加后端实例。
    具体操作,请参见添加后端实例。本示例中,将应用服务器A与应用服务器B添加为后端实例,且健康检查状态为健康应用服务器作为后端实例

步骤六:解析并绑定域名

如果您需要通过轻量应用负载均衡实现公网访问流量分发等功能,必须先为负载均衡绑定域名。

  1. 通过云解析DNS,将域名example.com通过CNAME记录解析至轻量应用负载均衡的公网服务地址。
    您在轻量应用服务器管理控制台对应的负载均衡概览页查看到的DNS信息,即轻量应用负载均衡的公网服务地址。SLB解析域名的具体操作,请参见添加CNAME记录
  2. 绑定域名。
    当您通过CNAME记录将域名example.com解析至轻量应用负载均衡后,您还需要将域名绑定至轻量应用服务器。具体操作,请参见绑定域名
    域名绑定成功后,如下图所示:域名绑定

步骤七:测试访问WordPress博客网站

  • 正常测试访问WordPress博客网站
    在本地物理主机,通过浏览器访问域名example.com。如下图所示,成功访问到WordPress博客首页,表示高可用架构应用集群部署完成。访问高可用架构
  • 模拟服务器A宕机,测试访问WordPress博客网站
    1. 通过轻量应用服务器管理控制台,手动停止服务器A
      手动停止服务器以模拟服务器宕机。如下图所示,服务器A已处于已停止状态。服务器A已停止
    2. 查看轻量应用负载均衡的后端实例状态。
      如下图所示,已停止的服务器A健康检查状态为不健康,正常运行服务器B健康检查状态为健康后端实例不健康
    3. 在本地物理主机,通过浏览器访问域名example.com
      如下图所示,成功访问到WordPress博客首页,表示高可用架构在生效,此时访问的网站属于健康状态的服务器B访问高可用架构