高可用及共享存储Web服务

更新时间: 2024-05-16 15:55:29

手动部署

120

https://www.aliyun.com/solution/tech-solution/ha_web

方案概览

随着业务规模的增长,数据请求和并发访问量增大、静态文件高频变更,企业需要搭建一个高可用和共享存储的网站架构,以确保网站服务能够7*24小时运行的同时,可保障数据一致性和共享性,并降低数据重复存储的成本。

方案架构

方案提供的默认设置完成部署后在阿里云上搭建的高可用及共享存储Web服务运行环境如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1个专有网络VPC:为负载均衡CLB、云服务器ECS、文件存储NAS等云资源形成云上私有网络。

  • 2台交换机:将2台云服务器ECS连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。

  • 2台云服务器ECS:同地域不同可用区的2台ECS,组成一个高性能和高可用的后端服务。

  • 1个公网负载均衡CLB:基于对流量按需分发的能力,可以将流量分发到不同的后端服务器,可消除系统中的单点故障,当某个服务器发生故障时,CLB会自动将请求分配到其他正常的服务器上,从而保证服务的连续性和稳定性。

  • 2个文件存储NAS:实现多个Web服务器之间的数据共享和同步,确保数据的一致性。同时通过自动化脚本、inotify-tools和sync工具,实现主备NAS自动增量备份和主备自动切换。

部署准备

10

开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值

    1. 为节省成本,本方案默认全部选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。

    2. 完成本方案的部署及体验,预计产生费用不超过5元(假设您选择本文示例规格资源,且资源运行时间不超过60分钟。实际情况中可能会因您操作过程中实际使用的流量差异,会导致费用有所变化,请以控制台显示的实际报价以及最终账单为准,如下表格仅供参考)。

      序号

      产品

      计费项

      规格

      地域

      预估费用参考

      1

      云服务器 ECS

      ECS_01配置费

      • 实例:ecs.u1-c1m1.large(2 vCPU 2 GiB,抢占型实例)

      • 系统盘:ESSD云盘 40GiB

      华东1(杭州)

      0.376/元/时

      2

      ECS_02配置费

      华东1(杭州)

      0.376/元/时

      2

      专有网络 VPC

      公网流量费

      按使用流量计费:带宽峰值5 Mbps

      华东1(杭州)

      0.800元/GB

      3

      文件存储 NAS

      nas_master存储容量费

      通用型NAS

      华东1(杭州)

      0.35元/GB

      4

      nas_backup存储容量费

      0.35元/GB

      4

      传统型负载均衡 CLB

      CLB LCU费

      按使用量计费

      华东1(杭州)

      0.017元/小时

      CLB实例费

      按使用量计费

      华东1(杭州)

      0.042元/LCU

  3. 阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。

    1. 访问资源组页面,单击创建资源组,创建一个资源组,例如设置名称为高可用测试资源组

    2. 访问RAM控制台-用户页面,单击创建用户,填写相关信息,勾选控制台访问OpenAPI 调用访问,创建一个RAM用户。

    3. 单击已创建的RAM用户操作列的添加权限,选择授权范围为指定资源组(例如高可用测试资源组),然后授权。以下为本解决方案所需权限策略,您也可以根据需要适当调整。

      授权范围

      授权策略

      描述

      高可用测试资源组

      AliyunECSFullAccess

      管理云服务器ECS的权限

      AliyunSLBFullAccess

      管理负载均衡服务的权限

      AliyunVPCFullAccess

      管理专有网络VPC的权限

      AliyunECSWorkbenchFullAccess

      使用ECS-Workbench的完整权限

      整个云账号

      AliyunNASFullAccess

      管理文件存储NAS的权限

      AliyunVPCReadOnlyAccess

      只读访问专有网络VPC的权限

      AliyunECSReadOnlyAccess

      只读访问云服务器服务ECS的权限

规划网络和资源

20

网络规划

请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。

规划项

数量

说明

地域

1

您的云服务部署的地域。选择地域的基本原则请参见地域和可用区

专有网络VPC

1

在部署过程中新建一个VPC作为本方案的专有网络。

交换机

2

本方案需要至少2台交换机,用来连接不同的云资源实例。

传统型负载均衡CLB

1

本方案需要1台负载均衡CLB实例,用于对网站的多台云服务器进行流量分发。它可以通过流量分发扩展应用系统的服务能力,消除单点故障,提升应用系统的可用性。

公网IP

1

创建负载均衡CLB实例时,选择公网类型,自动为负载均衡CLB实例创建1个公网IP。

安全组

1

用于限制专有网络VPC下云服务器ECS的网络流入和流出规则。

规划云资源

请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。

规划项

数量

说明

云服务器 ECS

2

本方案需要2台ECS实例,用于同时部署Web服务。

文件存储 NAS

2

本方案需要2个通用型NAS文件系统,实现共享存储和NAS多可用区容灾。

创建ECS实例并部署Web服务

20

重要
  • 如果您已创建ECS实例并配置Web服务,可跳过该步骤,直接执行下一步。

  • 本步骤以操作系统Alibaba Cloud Linux 3为例,指导您如何部署Web服务,其他操作系统教程略有差异。更多建站教程,请参见建站零基础入门

操作步骤

  1. 前往实例创建页,选择自定义购买页签,按界面提示创建一个ECS实例(假设为ECS_01)。

    请注意以下参数:

    • 付费类型:抢占式实例。

      重要
      • 为节省测试成本,本文示例采用抢占式实例,相对按量付费实例有一定的折扣。默认情况,您可以稳定持有抢占式实例至少一小时。一小时后,当市场价格高于您的出价或实例库存不足时,抢占式实例会被自动释放,请做好数据备份工作。

      • 如果您需要长期稳定持有ECS实例,付费类型建议选择包年包月或按量付费。

    • 地域:建议选择靠近您业务的地域,本文示例为华东1(杭州)。

    • 镜像:Alibaba Cloud Linux 3。

    • 公网 IP:勾选分配公网 IPv4 地址。

    • 安全组:新建普通安全组,IPv4端口开通22、80端口。

    • 登录凭证:选择自定义密码,登录名选择ecs-user并设置登录密码。

    • 高级选项-资源组:选择高可用测试资源组

    其他按需配置,详细说明,请参见自定义购买实例

  2. 部署Web服务。

    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行以下命令,安装Nginx。

      sudo yum -y install nginx
    3. 下载网站示例代码和图片文件。

      以下文件仅为示例,供学习体验使用,您也可以替换为自定义文件。

      sudo wget -O /usr/share/nginx/html/index.html https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20231013/jhgg/index.html
      sudo wget -O /usr/share/nginx/html/lipstick.png https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230925/zevs/lipstick.png
    4. 执行以下命令,启动Nginx并设置开机自启动。

      sudo systemctl start nginx 
      sudo systemctl enable nginx
    5. 在浏览器输入ECS实例的公网服务地址(例如http://123.1.XX.XX),可正常访问网站服务,表示Web服务部署成功。

部署NAS实现共享存储和NAS容灾

本方案通过NAS实现共享存储。同时基于inotify-tools和rsyn实现:

  • 主备增量备份(Master -> Backup):Master NAS有数据变化时,自动同步到Backup NAS。

  • 主备切换:自动检测Master NAS是否可用,若可用则使用Master NAS,否则自动切换到备用NAS;Master NAS恢复后,自动切换回Master NAS。

重要

当前NAS容灾备份方案是一个最简单的示例和基本思路,还存在一些局限性,需要用户您结合自身业务去做一些完善和补充。

例如,当前NAS容灾备份方案是单向的(Master -> Backup),在真实的业务场景中,如果文件不只是读,还有写操作的情况下,Master NAS出现故障后,需要结合自身业务做一些额外的策略:

  • 如果对于写的可用性要求不高,可以在切换到Backup NAS时,禁止写入文件。

  • 如果对于写有可用性要求,那么在Master NAS故障恢复后,不应该立即将 ECS 应用的操作文件目录切换到Master NAS的挂载点目录上,应该先将故障期间,Backup NAS上产生的新文件,同步到Master NAS之后,再做切换,并且要确保切切换期间,Backup NAS上不要产生文件变更,或者产生的文件变更也能同步到Master NAS中。

30

请确保待挂载的实例状态均为运行中

  1. 登录NAS控制台

  2. 在左侧导航栏,选择文件系统>文件系统列表

  3. 创建2个不同可用区的文件存储NAS。

    1. 创建一个文件系统作为Master NAS存储。

      单击创建文件系统,选择通用型NAS并单击创建通用型NAS。NAS文件系统需满足以下要求(详细参数说明,请参见创建文件系统

      • 地域:需与ECS实例在相同地域(例如,华东1 杭州)

      • 可用区:华东1 可用区F

      • 存储规格:容量型

      • 协议类型:NFS

      • VPC:需与ECS实例在同一个VPC

    2. 重复步骤a,创建另一个NAS(与Master NAS在不同可用区,例如华东1 可用区K),作为Backup NAS。

  4. 将2个文件系统NAS均挂载到ECS实例上。

    假设Master NAS挂载路径为/nas_master,Backup NAS的挂载路径为/nas_backup

    1. 在文件系统列表,单击操作列的挂载

    2. 按照界面提示完成挂载。

      请注意以下配置项,其他参数按需设置,参数详细说明,请参见通过控制台实现ECS实例一键挂载NAS NFS协议文件系统

      配置项

      说明

      示例

      选择ECS实例

      选择目标ECS实例。

      ECS_01

      挂载路径

      文件系统在ECS实例上的挂载路径(绝对路径)。

      /nas_master

      自动挂载

      选中开机自动挂载,当您重启ECS实例时,无需重复挂载操作。

      开机自动挂载

      协议类型

      选择NFSv3。

      NFSv3

    3. 重复步骤a~c,将另一个文件系统挂载至ECS实例上(挂载路径为/nas_backup)。

  5. 将需要共享的文件挪到NAS的挂载路径下,挪动后文件将存储在主NAS上(/nas_master)。

    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 将需要共享的文件,移动到NAS中存储。

      sudo cp -Lvr <待共享文件的绝对路径> <NAS文件系统的挂载路径>

      示例:将网站服务前端的html文件夹及其文件(路径为/usr/share/nginx/html),改存储到NAS里(挂载路径为/nas_master)。

      sudo cp -Lvr /usr/share/nginx/html /nas_master
  6. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

  7. 安装inotify-tools和rsync。

    sudo yum install inotify-tools rsync
  8. 准备脚本,实现NAS多可用区容灾。

    1. 下载脚本。

      • sync_nas.sh:通过inotify和sync实现,当Matser NAS有数据变化时,自动同步到Backup NAS。您可以根据实际需求调整。

      • sync_check_switch.sh:实现自动检测Matser NAS是否可用,若可用则使用Matser NAS;否则自动切换到Backup NAS。您可以根据实际需求调整。

      sudo wget -P /etc/systemd/system/ https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20231017/pftz/sync_nas.sh
      sudo wget -P /etc/systemd/system/ https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20230925/wmaj/sync_check_switch.sh
    2. 使用以下命令,为脚本添加可执行权限。

      sudo chmod +x /etc/systemd/system/sync_nas.sh
      sudo chmod +x /etc/systemd/system/sync_check_switch.sh
  9. 配置上述脚本的开机自动启动,确保服务器故障恢复后,NAS可用性检测及容灾切换服务可以正常执行。

    1. 创建 sync-check-switch.service 文件。

      sudo vi /etc/systemd/system/sync-check-switch.service
    2. 在打开的文件中,添加以下内容。添加后按下Esc键,然后输入:wq,保存并关闭文件。

      [Unit]
      Description=Sync Check Switch
      After=network.target
      
      [Service]
      ExecStart=/etc/systemd/system/sync_check_switch.sh
      RestartSec=3
      Restart=always
      
      [Install]
      WantedBy=default.target
    3. 创建 sync-nas.service 文件。

      sudo vi /etc/systemd/system/sync-nas.service
    4. 在打开的文件中,添加以下内容。添加后按下Esc键,然后输入:wq,保存并关闭文件。

      [Unit]
      Description=Sync NAS Service
      After=network.target
      
      [Service]
      ExecStart=/etc/systemd/system/sync_nas.sh
      Restart=always
      RestartSec=3
      
      [Install]
      WantedBy=default.target
    5. 运行以下命令来重新加载systemd配置。

      sudo systemctl daemon-reload
    6. 运行以下命令启动服务并设置为开机自启动。

      sudo systemctl start sync-nas.service
      sudo systemctl enable sync-check-switch.service
      sudo systemctl start sync-check-switch.service
      sudo systemctl enable sync-nas.service

部署CLB实现业务高可用

30

复制已部署Web服务的ECS实例

高可用架构需要至少2台的ECS实例,通过复制方式可以快速创建与原实例有相同的操作系统、Web服务器、数据库等环境配置和数据的新实例。

  1. 基于已部署Web服务的ECS实例(假设为ECS_01),创建自定义镜像。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择实例与镜像 > 实例

    3. 在页面左侧顶部,选择目标资源所在的地域。

    4. 在实例列表找到目标实例,在操作列中,选择更多 > 云盘与镜像 > 创建自定义镜像

    5. 输入镜像名称资源组选择高可用测试资源组,单击确认

    6. 在左侧导航栏,单击实例与镜像 > 镜像,并选择自定义镜像,查看镜像创建进度。

      创建镜像需要一段时间,请您耐心等待。当目标镜像的进度为100%、状态为可用时,表示镜像创建成功。

  2. 使用该自定义镜像创建一个新的ECS实例(假设为ECS_02)。

    1. 在左侧导航栏,单击实例与镜像 > 镜像

    2. 自定义镜像页面,找到上一步创建的自定义镜像,在操作列,单击创建实例

    3. 自定义购买页面,镜像区域已设置为您选择的自定义镜像。根据页面提示,完成其他配置项并购买1台ECS实例。

      其中:

      • 付费类型:抢占式实例。

      • 地域:选择与源实例相同的地域(本文示例:华东1(杭州))。

      • 网络及可用区:选择与源实例相同的VPC,不同可用区。

      • 公网:取消勾选分配公网IPv4地址

      • 安全组:选择与源实例相同的安全组。

      • 登录凭证:选择自定义密码,登录名选择ecs-user并设置登录密码。

      • 高级选项-资源组:选择高可用测试资源组

      其他参数按需配置,详细说明,请参见自定义购买实例

配置CLB实例

负载均衡CLB可消除单台服务器的单点故障,当某个服务器发生故障时,CLB会自动将请求分配到其他正常的服务器上,从而提升服务的连续性和稳定性。

  1. 登录传统型负载均衡CLB控制台

  2. 在页面左上角资源组(例如高可用测试资源组)和地域。

    image.png

  3. 创建一个在实例管理页面,单击创建传统型负载均衡

    CLB实例需满足以下要求(其他参数按需配置,参数说明请参见创建实例):

    • 付费模式:按量付费

    • 地域和可用区:需与ECS实例在相同地域(本文示例:华东1(杭州))

    • 实例计费方式:按使用量计费

    • 实例类型:公网

    • IP版本:IPv4

    • 资源组:选择高可用测试资源组

  4. 创建后,在CLB实例管理页面找到目标CLB实例,在操作列单击监听配置向导,按照界面提示完成配置。

    请注意以下参数(其他参数按需配置,参数说明请参见配置CLB实例):

    配置项

    要求

    协议&监听

    • 选择负载均衡协议HTTP

    • 监听端口80

    后端服务器

    选择默认服务器组,并单击继续添加,将2台ECS实例均添加进来,端口均设置为80。

    健康检查

    建议开启健康检查,以检查服务器的运行状况,从而判断服务器的业务可用性。

完成及清理

20

方案验证

  • 验证ECS高可用

    您可以通过停机一台ECS模拟故障进而验证服务的可用性。操作如下:

    1. 登录ECS控制台,选择概览,在资源列表选择一台ECS实例(假设为ECS_01),单击停止

    2. 等ECS状态为已停止后,输入负载均衡公网IP访问网站,能正常访问网站,则表明服务高可用。

  • 验证共享存储

    您可以通过在其中一台ECS实例上的NAS文件系统挂载路径上更新、新增、或删除文件,如果另一台ECS实例对应路径下的文件,也同步更新了,表明存储共享。

  • 验证NAS容灾高可用

    您可以移除Maser NAS的挂载点,约4秒后再输入负载均衡公网IP访问网站,能正常访问网站,则表明已从Maser NAS切换至Backup NAS。如何移除挂载点?

    重要
    • NAS容灾恢复策略需要结合业务定制,本文只是简单的示例参考。

    • 若移除挂载点后,出现无法重新挂载文件系统至ECS的情况,可尝试执行sudo umount -f <挂载地址>或重启ECS后,再添加挂载点并将文件系统挂载至ECS。如何添加挂载点?

清理资源

测试完方案后,您可以参考以下规则处理对应资源,避免继续产生费用:

  1. 删除自定义镜像及其快照:

    登录ECS控制台,在镜像页面,找到目标自定义镜像,然后在操作列选择216更多-竖向..png > 删除镜像,根据界面提示删除自定义镜像及其快照。

  2. 释放2台云服务器ECS实例:

    登录ECS控制台,在实例页面,找到目标实例,然后在操作列选择216更多-竖向..png> 释放设置,根据界面提示释放实例。

  3. 释放1个传统型负载均衡CLB实例:

    登录传统型负载均衡CLB控制台实例页面,找到目标CLB实例,然后在操作列选择216更多-竖向..png>释放,按照界面提示释放实例。

  4. 释放2台交换机:

    登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。

  5. 释放1个专有网络VPC:

    登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。

  6. 删除2个文件存储NAS:

    登录NAS控制台文件系统列表页面,找到目标文件系统,然后在操作列选择216更多-竖向..png> 删除,按照界面提示释放NAS。

一键部署

55

https://www.aliyun.com/solution/tech-solution/ha_web

方案概览

随着业务规模的增长,数据请求和并发访问量增大、静态文件高频变更,企业需要搭建一个高可用和共享存储的网站架构,以确保网站服务能够7*24小时运行的同时,可保障数据一致性和共享性,并降低数据重复存储的成本。

方案架构

方案提供的默认设置完成部署后在阿里云上搭建的高可用及共享存储Web服务运行环境如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1个专有网络VPC:为负载均衡CLB、云服务器ECS、文件存储NAS等云资源形成云上私有网络。

  • 2台交换机:将2台云服务器ECS连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。

  • 2台云服务器ECS:同地域不同可用区的2台ECS,组成一个高性能和高可用的后端服务。

  • 1个公网负载均衡CLB:基于对流量按需分发的能力,可以将流量分发到不同的后端服务器,可消除系统中的单点故障,当某个服务器发生故障时,CLB会自动将请求分配到其他正常的服务器上,从而保证服务的连续性和稳定性。

  • 2个文件存储NAS:实现多个Web服务器之间的数据共享和同步,确保数据的一致性。同时通过自动化脚本、inotify-tools和sync工具,实现主备NAS自动增量备份和主备自动切换。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。

10

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值

    1. 为节省成本,本方案默认全部选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。

    2. 完成本方案的部署及体验,预计产生费用不超过5元(假设您选择本文示例规格资源,且资源运行时间不超过60分钟。实际情况中可能会因您操作过程中实际使用的流量差异,会导致费用有所变化,请以控制台显示的实际报价以及最终账单为准,如下表格仅供参考)。

      序号

      产品

      计费项

      规格

      地域

      预估费用参考

      1

      云服务器 ECS

      ECS_01配置费

      • 实例:ecs.u1-c1m1.large(2 vCPU 2 GiB,抢占型实例)

      • 系统盘:ESSD云盘 40GiB

      华东1(杭州)

      0.376/元/时

      2

      ECS_02配置费

      华东1(杭州)

      0.376/元/时

      2

      专有网络 VPC

      公网流量费

      按使用流量计费:带宽峰值5 Mbps

      华东1(杭州)

      0.800元/GB

      3

      文件存储 NAS

      nas_master存储容量费

      通用型NAS

      华东1(杭州)

      0.35元/GB

      4

      nas_backup存储容量费

      0.35元/GB

      4

      传统型负载均衡 CLB

      CLB LCU费

      按使用量计费

      华东1(杭州)

      0.017元/小时

      CLB实例费

      按使用量计费

      华东1(杭州)

      0.042元/LCU

  3. 阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。

    1. 访问RAM控制台-用户页面,单击创建用户,填写相关信息,勾选控制台访问OpenAPI 调用访问,创建一个RAM用户。

    2. 单击已创建的RAM用户操作列的添加权限,选择授权范围为指定资源组(例如高可用测试资源组),然后授权。以下为本解决方案所需权限策略,您也可以根据需要适当调整。

      授权范围

      授权策略

      描述

      整个云账号

      AliyunECSFullAccess

      管理云服务器ECS的权限

      AliyunSLBFullAccess

      管理负载均衡服务的权限

      AliyunVPCFullAccess

      管理专有网络VPC的权限

      AliyunECSWorkbenchFullAccess

      使用ECS-Workbench的完整权限

      AliyunROSFullAccess

      管理资源编排服务ROS的权限

      AliyunNASFullAccess

      管理文件存储NAS的权限

规划网络和资源

20

网络规划

请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。

规划项

数量

说明

地域

1

您的云服务部署的地域。选择地域的基本原则请参见地域和可用区

专有网络VPC

1

在部署过程中新建一个VPC作为本方案的专有网络。

交换机

2

本方案需要至少2台交换机,用来连接不同的云资源实例。

传统型负载均衡CLB

1

本方案需要1台负载均衡CLB实例,用于对网站的多台云服务器进行流量分发。它可以通过流量分发扩展应用系统的服务能力,消除单点故障,提升应用系统的可用性。

公网IP

1

创建负载均衡CLB实例时,选择公网类型,自动为负载均衡CLB实例创建1个公网IP。

安全组

1

用于限制专有网络VPC下云服务器ECS的网络流入和流出规则。

规划云资源

请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。

规划项

数量

说明

云服务器 ECS

2

本方案需要2台ECS实例,用于同时部署Web服务。

文件存储 NAS

2

本方案需要2个通用型NAS文件系统,实现共享存储和NAS多可用区容灾。

一键部署

10

本文将通过资源编排ROS实现一键自动化完成本教程所需资源的创建和配置:

  • 创建1个专有网络VPC。

  • 创建2台交换机。

  • 创建一个安全组并配置安全组规则。

  • 创建2个抢占式云服务器ECS,并部署Web服务。

  • 创建1个公网传统型负载均衡CLB,并挂载这2台ECS作为后端服务器。

  • 创建2个不同可用区的通用型NAS文件系统。

  • 通过inotify-tools和sync工具和自动化脚本,实现主备NAS增量备份和主备切换。

    主备NAS增量备份和主备切换脚本说明

    您可访问以下路径查看脚本详细信息:

    • 增量备份脚本:/etc/systemd/system/sync_nas.sh

      Master NAS有数据变化时,自动同步到Backup NAS。

    • 主备切换脚本:/etc/systemd/system/sync_check_switch.sh

      自动检测Master NAS是否可用,若可用则使用Master NAS,否则自动切换到备用NAS;Master NAS恢复后,自动切换回Master NAS。

    重要

    当前NAS容灾备份方案是一个最简单的示例和基本思路,还存在一些局限性,需要用户您结合自身业务去做一些完善和补充。

    例如,当前NAS容灾备份方案是单向的(Master -> Backup),在真实的业务场景中,如果文件不只是读,还有写操作的情况下,Master NAS出现故障后,需要结合自身业务做一些额外的策略:

    • 如果对于写的可用性要求不高,可以在切换到Backup NAS时,禁止写入文件。

    • 如果对于写有可用性要求,那么在Master NAS故障恢复后,不应该立即将 ECS 应用的操作文件目录切换到Master NAS的挂载点目录上,应该先将故障期间,Backup NAS上产生的新文件,同步到Master NAS之后,再做切换,并且要确保切切换期间,Backup NAS上不要产生文件变更,或者产生的文件变更也能同步到Master NAS中。

操作步骤

  1. 单击一键部署,在页面左上角选择地域(本文示例:华东1(杭州))。

  2. 配置模板参数页面修改资源栈名称,选择ECS实例和NAS可用区、选择ECS实例规格、配置ECS实例密。填写完所有必选信息并确认后单击创建开始一键配置。

  3. 资源栈信息页签的状态栏变成创建成功时,表示已完成资源创建和模型部署。

    image.png

  4. 单击输出页签,可查看并访问已创建资源,以便验证方案。

    image

完成及清理

15

方案验证

  • 验证ECS高可用

    您可以通过停机一台ECS模拟故障进而验证服务的可用性。操作如下:

    1. 登录ECS控制台,选择概览,在资源列表选择一台ECS实例(假设为ECS_01),单击停止

    2. 等ECS状态为已停止后,输入负载均衡公网IP访问网站,能正常访问网站,则表明服务高可用。

  • 验证共享存储

    您可以通过在其中一台ECS实例上的NAS文件系统挂载路径上更新、新增、或删除文件,如果另一台ECS实例对应路径下的文件,也同步更新了,表明存储共享。

  • 验证NAS容灾高可用

    您可以移除Maser NAS的挂载点,约4秒后再输入负载均衡公网IP访问网站,能正常访问网站,则表明已从Maser NAS切换至Backup NAS。如何移除挂载点?

    重要
    • NAS容灾恢复策略需要结合业务定制,本文只是简单的示例参考。

    • 若移除挂载点后,出现无法重新挂载文件系统至ECS的情况,可尝试执行sudo umount -f <挂载地址>或重启ECS后,再添加挂载点并将文件系统挂载至ECS。如何添加挂载点?

清理资源

  1. 登录资源编排管理控制台,左侧导航栏菜单选择资源栈

  2. 在页面的顶部选择部署的资源栈所在地域,找到部署的资源栈。单击其右侧操作列的删除并确认,可一键删除一键配置所创建的资源。