
# 准备工作
当您首次使用华为云时注册的账号，则无需执行该准备工作，如果您使用的是IAM用户账户，请确认您是否在admin用户组中，如果您不在admin组中，则需要为您的账号[授予相关权限](https://support.huaweicloud.com/usermanual-iam/iam_01_0652.html)，并完成以下准备工作。
#### 创建rf_admin_trust委托（可选）
1. 进入华为云官网，打开[控制台管理](https://console.huaweicloud.com/console/?region=cn-north-4#/home)界面，鼠标移动至个人账号处，打开"统一身份认证"菜单。
   
   图1控制台管理界面   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002122191274.png)
   图2统一身份认证菜单   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002122033134.png)
   
   
2. 进入"委托"菜单，搜索"rf_admin_trust"委托。 
   图3委托列表   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002157392913.png)
   - 如果委托存在，则不用执行接下来的创建委托的步骤
   
   - 如果委托不存在，则需执行以下步骤创建委托
   
   
   
   
3. 单击步骤2界面中的"创建委托"按钮，在委托名称中输入"rf_admin_trust"，委托类型选择"云服务"，选择"RFS"，单击"下一步"。 
   图4创建委托   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002157392905.png)
   
   
4. 在搜索框中输入"Tenant Administrator"权限，并勾选搜索结果，单击"下一步"。 
   图5选择策略   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002122191266.png)
   
   
5. 选择"所有资源"，并单击"下一步"完成配置。 
   图6设置授权范围   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002157311301.png)
   
   
6. "委托"列表中出现"rf_admin_trust"委托则创建成功。 
   图7委托列表   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002122033130.png)
   
   
 
#### 客户源端配置（region：上海一 模拟客户源端）
1. **购买Flexus X实例：** 访问[Flexus云服务器X实例控制台](https://console.huaweicloud.com/hecsx/?agencyId=dfe412d1047e49288c7dd7f1e0dd315e&region=cn-east-3&locale=zh-cn#/ecs/manager/xList)，参考**[购买Flexus X实例](https://support.huaweicloud.com/usermanual-flexusx/server_create_0000.html)** 教程，按如下配置购买X实例。
   
   表1X实例相关配置 
   | **资源类型**    | **资源数量** | **配置**                                                                                                                                                                                                                                                                                                                                                                                                   | **示例说明**                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|:---|:---|
   | 虚拟私有云VPC和子网 | 1        | - IPv4网段：172.16.0.0/24  - 子网IPv4网段：172.16.0.0/24                                                                                                                                                                                                            | 详见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)指南。                                                                                                                                                                                                                                                                                 |
   | 弹性云服务器ECS   | 2        | - 按需计费  - 区域：华东-上海一 规格：性能模式（关闭）\| 2核 \| 4 GB   - 镜像：CentOS 7.9 64bit  - 系统盘：通用型SSD \| 40GB   | 本示例中，需要两个ECS作为主备倒换，配置说明如下： - 名称：本示例分别为**Flexus-X-HA1** 和**Flexus-X-HA2**。  - 安全组：本示例中**Flexus-X-HA1** 和**Flexus-X-HA2**使用同一个安全组。   私有IP地址：**Flexus-X-HA1** 为172.16.0.127，**Flexus-X-HA2**为172.16.0.97 |
   | 弹性公网IP      | 2        | 线路：全动态BGP 公网带宽：按流量计费 带宽大小：300Mbit/s                                                                                                                                                                                                                                                                                                              | 本示例中EIP1为1.94.xxx.236，EIP2为115.120.xxx.252。                                                                                                                                                                                                                                                                                                                                   |
      
   表2安全组配置 
   | **方向** | **策略** | **类型** | **协议端口** | **源地址** **/** **目的地址** | **描述**                                        |
   |:---|:---|:---|:---|:---|:---|
   | 入方向    | 允许     | IPv4   | TCP: 22  | 源地址：0.0.0.0/0          | 放通安全组内ECS的SSH(22)端口，用于远程登录Linux ECS。          |
   | 入方向    | 允许     | IPv4   | TCP: 80  | 源地址：0.0.0.0/0          | 放通安全组内ECS的HTTP(80)端口，用于外部通过HTTP协议访问ECS上部署的网站。 |
   | 入方向    | 允许     | IPv4   | 全部       | 源地址：当前安全组              | 针对IPv4，用于安全组内ECS之间网络互通。                       |
   | 入方向    | 允许     | IPv6   | 全部       | 源地址：当前安全组              | 针对IPv6，用于安全组内ECS之间网络互通。                       |
   | 出方向    | 允许     | IPv4   | 全部       | 目的地址：0.0.0.0/0         | 针对IPv4，用于安全组内ECS访问外部，允许流量从安全组内ECS流出。          |
   | 出方向    | 允许     | IPv6   | 全部       | 目的地址：::/0              | 针对IPv6，用于安全组内ECS访问外部，允许流量从安全组内ECS流出。          |
      
   
   
2. **申请虚拟IP地址：** 在源端子网中申请两个虚拟IP地址，具体方法请参见[申请虚拟IP地址](https://support.huaweicloud.com/usermanual-vpc/vpc_vip_0002.html)（本示例中虚拟IP1为172.16.0.203，虚拟IP2为172.16.0.47）。
   
   图8虚拟IP地址   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002159806697.png)
   
   
3. **安装Nginx、Keepalived软件包及相关依赖：** 登录主备Flexus-X-HA1、Flexus-X-HA2服务器，执行以下命令，安装Nginx、Keepalived软件包及相关依赖包
   
   ```
   命令：yum install nginx keepalived -y
   ```
   
   
4. **配置nginx：** 修改index.html文件内容，用来验证网站的访问情况。执行以下命令，打开"/usr/share/nginx/html/index.html"文件。将文件中原有的内容，**全部替换** 成以下内容。
   
   ```
   命令：vim /usr/share/nginx/html/index.html
   Flexus-X-HA1改为
   Welcome to Flexus-X-HA1
   Flexus-X-HA2改为
   Welcome to Flexus-X-HA2
   ```
   
   
5. **启动Nginx：** 执行以下命令，设置Nginx服务开机自启动，并启动Nginx服务。
   
   ```
   命令：
   systemctl enable nginx
   systemctl start nginx.service
   ```
   
   
6. **验证Nginx：** 打开浏览器，并输入EIP地址，验证Nginx单节点的访问情况，网页如下图所示，表示**Flexus-X-HA1** 和**Flexus-X-HA2** 的Nginx配置成功。
   
   图9**Flexus-X-HA1**
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002159856321.png)
   图10**Flexus-X-HA2**   
   ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002124735390.png)
   
   
   
7. **配置Keepalived：** 执行以下命令，打开"/etc/keepalived/keepalived.conf"文件，根据实际情况，替换配置文件中的IP参数，并将文件中原有的内容，**全部替换** 成以下内容。
   
   ```
   命令：vim /etc/keepalived/keepalived.conf
   ```
   **Flexus-X-HA1：**
   - **mcast_src_ip** 和**unicast_src_ip**参数值：替换为Flexus-X-HA1的私有IP地址，本示例为172.16.0.127。
   
   - **virtual_ipaddress**参数值：替换为虚拟IP地址，本示例为172.16.0.47和172.16.0.203
   
   
   ```
   ! Configuration File for keepalived
   global_defs {
   router_id master-node
   }
   vrrp_script chk_http_port {
             script  "/etc/keepalived/chk_nginx.sh"
             interval 2
             weight -5
             fall 2
             rise 1
           }
   vrrp_instance VI_1 {
        state MASTER
        interface eth0
        mcast_src_ip 172.16.0.127
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
                  auth_type PASS
                  auth_pass 1111
                  }
        unicast_src_ip 172.16.0.127                                                  
        virtual_ipaddress {                    
                        172.16.0.47
                        172.16.0.203
                       }
        track_script {
             chk_http_port
        }
   }
   ```
   **Flexus-X-HA2：**
   - **mcast_src_ip** 和**unicast_src_ip**参数值：替换为Flexus-X-HA2的私有IP地址，本示例为172.16.0.97。
   
   - **virtual_ipaddress** 参数值：替换为虚拟IP地址，本示例为172.16.0.47和172.16.0.203。
     ```
     ! Configuration File for keepalived
     global_defs {
     router_id master-node
     }
     vrrp_script chk_http_port {
               script  "/etc/keepalived/chk_nginx.sh"
               interval 2
               weight -5
               fall 2
               rise 1
             }
     vrrp_instance VI_1 {
          state MASTER
          interface eth0
          mcast_src_ip 172.16.0.97
          virtual_router_id 51
          priority 100
          advert_int 1
          authentication {
                    auth_type PASS
                    auth_pass 1111
                    }
          unicast_src_ip 172.16.0.97                                                  
          virtual_ipaddress {                    
                          172.16.0.47
                          172.16.0.203
                         }
          track_script {
               chk_http_port
          }
     }
     ```
     
   
   
   
   
8. **配置Nginx监控脚本：** 主备服务器执行以下命令，打开"/etc/keepalived/chk_nginx.sh"文件，将文件中原有的内容，全部替换成以下内容。
   
   ```
   命令：vim /etc/keepalived/chk_nginx.sh
   #!/bin/bash
   counter=$(ps -C nginx --no-heading|wc -l)
   if [ "${counter}" = "0"  ]; then
        systemctl start nginx.service
        sleep 2
        counter=$(ps -C nginx  --no-heading|wc -l)
        if [ "${counter}" =  "0" ]; then
             systemctl stop keepalived.service
        fi
   fi
   ```
   
   
9. 脚本权限：主备服务器执行以下命令，为"chk_nginx.sh"文件添加执行权限。 
   ```
   命令：chmod +x /etc/keepalived/chk_nginx.sh
   ```
   
   
10. **启动Keepalived：** 主备服务器执行以下命令，设置Keepalived服务开机自启动，并启动Keepalived服务。
    
    ```
    命令：
    systemctl enable keepalived
    systemctl start keepalived.service
    ```
    
    
11. **绑定虚拟IP：** 将Flexus-X-HA1和Flexus-X-HA2两台服务器的EIP进行解绑，具体方法参见[解绑弹性公网IP](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0182.html)。然后将虚拟IP绑定至实例和弹性公网IP详见：[将虚拟IP绑定至实例或者EIP](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0067802474.html?locale=zh-cn)指南。（注意控制台绑定完成需要**登录服务器配置虚拟IP地址），** 如下图所示。
    
    图11虚拟IP绑定   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163258273.png)
    表3虚拟ip配置 
    | 虚拟IP | 2 | 虚拟IP1：172.16.0.203 虚拟IP2：172.16.0.47 | 绑定实例：将两个虚拟IP绑定至Flexus-X-HA1和Flexus-X-HA2 绑定弹性公网IP：将虚拟IP1绑定至EIP1（1.94.xx.236），将虚拟IP2绑定至EIP2（115.120.xx.252）。 |
    |---|---|---|---|
       
    
    
12. **（可选）关闭主备服务器的IP转发功能** （本示例中服务器默认关闭）：使用虚拟IP构建主备场景的高可用集群时，需要关闭备云服务器的IP转发功能，当主备云服务器切换后，则需要确保新的云服务器也关闭IP转发功能。为了避免云服务器主备切换后遗漏配置，建议您将主备云服务器的IP转发功能全都关闭。关闭IP转发功能的操作如下：
    
    ```
    切换root用户。
    命令：su root
    执行以下命令，查看IP转发功能是否已开启。
    命令：cat /proc/sys/net/ipv4/ip_forward
    回显结果：1为开启，0为关闭，默认为0。
    回显为0，任务结束。
    回显为1，继续执行以下操作。
    以下提供两种方法修改配置文件，二选一即可。
    方法一：
    执行以下命令，打开“/etc/sysctl.conf”文件。
    命令：vim /etc/sysctl.conf
    按i进入编辑模式。
    修改net.ipv4.ip_forward = 0。
    按ESC退出，并输入:wq!保存配置。
    方法二：
    执行sed命令，命令示例如下：
    命令：sed -i '/net.ipv4.ip_forward/s/1/0/g' /etc/sysctl.conf
    执行以下命令，使修改生效。
    命令：sysctl -p /etc/sysctl.conf
    ```
    
    
13. **重启主备服务器：** 执行以下命令，分别重启主备服务器Flexus-X-HA1和Flexus-X-HA2
    
    ```
    命令：reboot
    ```
    
    
14. **验证自动切换功能：** 打开浏览器，分别输入EIP1（1.94.xx.236）、EIP2（115.120.xx.252），验证主服务器的网页访问情况，网页如下图所示，表示此时主服务器是Flexus-X-HA1，表明配置正常。
    
    图12   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163274733.png)
    图13   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163275165.png)
    
    
15. **确认网卡是否正确配置：** 远程登录Flexus-X-HA1，并执行以下命令，查看虚拟IP是否已绑定到Flexus-X-HA1的eth0网卡上，回显类似如下信息，虚拟IP1（172.16.0.203）和虚拟IP2（172.16.0.47）已绑定至eth0网卡上，再次确认Flexus-X-HA1为主服务器。
    
    ```
    命令：ip addr show
    ```
    图14主服务器网卡配置   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163281477.png)
    
    
16. **主备切换：** 执行以下命令，停止主服务器的Keepalived服务或者重启主云服务器二选一，本示例中主云服务器为Flexus-X-HA1。
    
    ```
    停止Keepalived服务
    命令: systemctl stop keepalived.service
    重启主云服务器
    命令：reboot
    ```
    
    
17. **验证主备切换：** 执行以下命令，验证主服务器是否切换成Flexus-X-HA2。远程登录Flexus-X-HA2，并执行以下命令，查看虚拟IP是否已绑定到Flexus-X-HA2的eth0网卡上。
    
    ```
    命令：ip addr show
    ```
    图15备服务器网卡配置   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163416485.png)
    
    
18. **验证自动切换功能：** 打开浏览器，并分别输入EIP1（1.94.xx.236）、EIP2（115.120.xx.252），验证Flexus-X-HA2作为主服务器时的网页访问情况。
    
    网页如下图所示，表示此时主服务器是Flexus-X-HA2，且网页访问正常。
    图16   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002163290469.png)
    图17   
    ![](https://support.huaweicloud.com/mscipa-ctf/zh-cn_image_0000002127891034.png)
    
    
    
 
