应用场景
   虚拟IP(Virtual IP Address)是从VPC子网网段中划分的一个内网IP地址,通常搭配高可用软件(比如Keepalived)使用,主要用来搭建高可用的主备集群。多个云服务器形成主备集群,当主云服务器发生故障无法对外提供服务时,系统动态将虚拟IP切换到备云服务器,通过备云服务器继续对外提供服务。本文档为您详细介绍使用虚拟IP和Keepalived搭建高可用Web集群的方法。
   
  
   方案架构
   
    本示例中,高可用Web集群架构如
图1所示,将虚拟IP同时绑定至ECS-HA1和ECS-HA2,使用Keepalived搭建一个高可用集群。同时,为虚拟IP绑定EIP,该集群具备公网访问能力,可以面向公网提供Web访问服务。实现原理如下: 
    
     - ECS-HA1作为主云服务器,通过与虚拟IP绑定的EIP对外提供服务,ECS-HA2作为备云服务器不承载实际业务。
 
     - 当ECS-HA1发生故障时,此时会自动启用ECS-HA2,ECS-HA2将会接管业务并对外提供服务,实现业务不中断的高可用需求。
 
    
    
     图1 使用虚拟IP和Keepalived搭建高可用Web集群
     
     
    
   
  
   方案优势
   基于虚拟IP和Keepalived能力,采用“一主一备”或“一主多备”的方法组合使用云服务器,这些云服务器对外呈现为一个虚拟IP。当主云服务器故障时,备云服务器可以转为主云服务器并继续对外提供服务,以此达到高可用性HA(High Availability)的目的,可以解决用户由于云服务器故障导致的对外服务中断问题。
   
  
   约束与限制
   使用虚拟IP搭建的高可用集群,所有服务器必须位于同一个虚拟私有云的子网内。
   
  
   资源规划说明
   本示例中,虚拟私有云VPC和子网、虚拟IP、弹性公网IP以及弹性云服务器ECS等资源只要位于同一个区域内即可,可用区可以任意选择,无需保持一致。
   
    
 
    
     以下资源规划详情仅为示例,您可以根据需要自行修改。
     
    
   
    
     
      表1 使用虚拟IP和Keepalived搭建高可用Web集群资源规划总体说明
     
     
      
       | 
         资源类型  | 
       
         资源数量  | 
       
         说明  | 
      
     
     
      
       | 
         虚拟私有云VPC和子网  | 
       
         1  | 
       
        
         - VPC名称:请根据实际情况填写,本示例为VPC-A。
 
         - IPv4网段:请根据实际情况填写,本示例为192.168.0.0/16。
 
         - 子网名称:请根据实际情况填写,本示例为Subnet-A01。
 
         - 子网IPv4网段:请根据实际情况填写,本示例为192.168.0.0/24。
 
          | 
      
      
       | 
         弹性云服务器ECS  | 
       
         2  | 
       
         本示例中,需要两个ECS作为主备倒换,配置说明如下: 
        
         - 名称:根据实际情况填写,本示例分别为ECS-HA1和ECS-HA2。
 
         - 镜像:请根据实际情况选择,本示例为公共镜像(CentOS 7.8 64bit)。
 
         - 系统盘:通用型SSD盘,40GB。
 
         - 数据盘:本示例未选购数据盘,请您根据实际业务需求选购数据盘,并切实考虑两个ECS节点之间的业务数据一致性问题。
 
         - 网络: 
          
           - 虚拟私有云:选择您的虚拟私有云,本示例为VPC-A。
 
           - 子网:选择子网,本示例为Subnet-A01。
 
            
         - 安全组:请根据实际情况选择,本示例中ECS-HA1和ECS-HA2使用同一个安全组,安全组名称为Sg-A。
 
         - 私有IP地址:ECS-HA1为192.168.0.195,ECS-HA2为192.168.0.233
 
          | 
      
      
       | 
         虚拟IP  | 
       
         1  | 
       
         在子网Subnet-A01中申请虚拟IP地址: 
        
         - 创建方式:根据实际情况填写,本示例为自动分配。
 
         - 虚拟IP地址:本示例为192.168.0.177。
 
         - 绑定实例:将虚拟IP绑定至ECS-HA1和ECS-HA2。
 
         - 绑定弹性公网IP:将虚拟IP绑定至EIP-A。
 
          | 
      
      
       | 
         弹性公网IP  | 
       
         1  | 
       
        
         - 计费模式:请根据情况选择计费模式,本示例为按需计费。
 
         - EIP名称:请根据实际情况填写,本示例为EIP-A。
 
         - EIP地址:EIP地址系统随机分配,本示例为124.X.X.187。
 
          | 
      
     
    
    
   
  
   操作流程
   使用虚拟IP和Keepalived搭建高可用Web集群,流程如图2所示。
   
    图2 使用虚拟IP和Keepalived搭建高可用Web集群
    
    
   
  
  
   
    
     
步骤二:为主备ECS配置Keepalived
    
    
     
      - 执行以下操作,为ECS-HA1配置Keepalived。 
       
        - 将EIP绑定至ECS-HA1。 
         
具体方法请参见绑定弹性公网IP。
 
        - 远程登录ECS-HA1。 
         
ECS有多种登录方法,具体请参见登录弹性云服务器。
 
        - 执行以下命令,安装Nginx、Keepalived软件包及相关依赖包。 
         
yum install nginx keepalived -y
         
          回显类似如下信息,表示安装完成。 
          
[root@ecs-ha1 ~]# yum install nginx keepalived -y
Loaded plugins: fastestmirror
Determining fastest mirrors
base                                                                                                                                                                 | 3.6 kB  00:00:00     
epel                                                                                                                                                                 | 4.3 kB  00:00:00     
extras                                                                                                                                                               | 2.9 kB  00:00:00     
updates                                                                                                                                                              | 2.9 kB  00:00:00     
(1/7): epel/x86_64/group                                                                                                                                             | 399 kB  00:00:00     
(2/7): epel/x86_64/updateinfo                                                                                                                                        | 1.0 MB  00:00:00     
(3/7): base/7/x86_64/primary_db                                                                                                                                      | 6.1 MB  00:00:00     
(4/7): base/7/x86_64/group_gz                                                                                                                                        | 153 kB  00:00:00     
(5/7): epel/x86_64/primary_db                                                                                                                                        | 8.7 MB  00:00:00     
(6/7): extras/7/x86_64/primary_db                                                                                                                                    | 253 kB  00:00:00     
(7/7): updates/7/x86_64/primary_db      
.....
Dependency Installed:
  centos-indexhtml.noarch 0:7-9.el7.centos                   gperftools-libs.x86_64 0:2.6.1-1.el7                 lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7_9.1             
  net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.4              net-snmp-libs.x86_64 1:5.7.2-49.el7_9.4              nginx-filesystem.noarch 1:1.20.1-10.el7                                 
  openssl11-libs.x86_64 1:1.1.1k-7.el7                      
Complete!
          
        - 执行以下操作,修改Nginx配置文件,添加80端口相关配置。 
         
          - 执行以下命令,打开“/etc/nginx/nginx.conf”文件。 
           
vim /etc/nginx/nginx.conf
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
      worker_connections 1024;
      }
http {
     include mime.types;
     default_type application/octet-stream;
     #log_format main '$remote_addr  - $remote_user [$time_local] "$request" '
     # '$status $body_bytes_sent  "$http_referer" '
     # '"$http_user_agent"  "$http_x_forwarded_for"';
     #access_log logs/access.log main;
     sendfile on;
     #tcp_nopush on;
     #keepalive_timeout 0;
     keepalive_timeout 65;
     #gzip on;
     server {
          listen 80;
          server_name localhost;
          #charset koi8-r;
          #access_log logs/host.access.log main;
          location / {
                    root html;
                    index index.html index.htm;
                    }
          #error_page 404  /404.html;
          # redirect server error pages to the static page /50x.html
          error_page 500 502 503 504 /50x.html;
          location =  /50x.html {
                              root html;
                              }
          }
} 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下操作,修改index.html文件内容,用来验证网站的访问情况。 
         
          - 执行以下命令,打开“/usr/share/nginx/html/index.html”文件。 
           
vim /usr/share/nginx/html/index.html
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
Welcome to ECS-HA1
 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。 
         
systemctl enable nginx
         systemctl start nginx.service
         
          回显类似如下信息: 
          
[root@ecs-ha1 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@ecs-ha1 ~]# systemctl start nginx.service
          
        - 打开浏览器,并输入EIP地址(124.X.X.187),验证Nginx单节点的访问情况。 
         
          网页如下图所示,表示ECS-HA1的Nginx配置成功。 
          
           图3 ECS-HA1访问验证
           
           
           
        - 执行以下操作,修改Keepalived配置文件。 
         
          - 执行以下命令,打开“/etc/keepalived/keepalived.conf”文件。 
           
vim /etc/keepalived/keepalived.conf
 
          - 按i进入编辑模式。
 
          - 根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。 
           
            - mcast_src_ip和unicast_src_ip:替换为ECS-HA1的私有IP地址,本示例为192.168.0.195。
 
            - virtual_ipaddress:替换为虚拟IP地址,本示例为192.168.0.177。
 
           
           ! 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 192.168.0.195
     virtual_router_id 51
     priority 100
     advert_int 1
     authentication {
               auth_type PASS
               auth_pass 1111
               }
     unicast_src_ip 192.168.0.195                                                  
     virtual_ipaddress {
                    192.168.0.177
                    }
track_script {
     chk_http_port
     }
} 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下操作,配置Nginx监控脚本。 
         
          - 执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件。 
           
vim /etc/keepalived/chk_nginx.sh
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
#!/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 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下命令,为“chk_nginx.sh”文件添加执行权限。 
         
chmod +x /etc/keepalived/chk_nginx.sh
 
        - 执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。 
         
systemctl enable keepalived
         systemctl start keepalived.service
 
        - 将EIP和ECS-HA1解绑定。 
         
具体方法请参见解绑弹性公网IP。
 
       
 
      - 执行以下操作,为ECS-HA2配置Keepalived。 
       
        - 将EIP绑定至ECS-HA2。 
         
具体方法请参见绑定弹性公网IP。
 
        - 远程登录ECS-HA2。 
         
ECS有多种登录方法,具体请参见登录弹性云服务器。
 
        - 执行以下命令,安装Nginx、Keepalived软件包及相关依赖包。 
         
yum install nginx keepalived -y
         
          回显类似如下信息,表示安装完成。 
          
[root@ecs-ha2 ~]# yum install nginx keepalived -y
Loaded plugins: fastestmirror
Determining fastest mirrors
base                                                                                                                                                                 | 3.6 kB  00:00:00     
epel                                                                                                                                                                 | 4.3 kB  00:00:00     
extras                                                                                                                                                               | 2.9 kB  00:00:00     
updates                                                                                                                                                              | 2.9 kB  00:00:00     
(1/7): epel/x86_64/group                                                                                                                                             | 399 kB  00:00:00     
(2/7): epel/x86_64/updateinfo                                                                                                                                        | 1.0 MB  00:00:00     
(3/7): base/7/x86_64/primary_db                                                                                                                                      | 6.1 MB  00:00:00     
(4/7): base/7/x86_64/group_gz                                                                                                                                        | 153 kB  00:00:00     
(5/7): epel/x86_64/primary_db                                                                                                                                        | 8.7 MB  00:00:00     
(6/7): extras/7/x86_64/primary_db                                                                                                                                    | 253 kB  00:00:00     
(7/7): updates/7/x86_64/primary_db      
.....
Dependency Installed:
  centos-indexhtml.noarch 0:7-9.el7.centos                   gperftools-libs.x86_64 0:2.6.1-1.el7                 lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7_9.1             
  net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.4              net-snmp-libs.x86_64 1:5.7.2-49.el7_9.4              nginx-filesystem.noarch 1:1.20.1-10.el7                                 
  openssl11-libs.x86_64 1:1.1.1k-7.el7                      
Complete!
          
        - 执行以下操作,修改Nginx配置文件,添加80端口相关配置。 
         
          - 执行以下命令,打开“/etc/nginx/nginx.conf”文件。 
           
vim /etc/nginx/nginx.conf
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
      worker_connections 1024;
      }
http {
     include mime.types;
     default_type application/octet-stream;
     #log_format main '$remote_addr  - $remote_user [$time_local] "$request" '
     # '$status $body_bytes_sent  "$http_referer" '
     # '"$http_user_agent"  "$http_x_forwarded_for"';
     #access_log logs/access.log main;
     sendfile on;
     #tcp_nopush on;
     #keepalive_timeout 0;
     keepalive_timeout 65;
     #gzip on;
     server {
          listen 80;
          server_name localhost;
          #charset koi8-r;
          #access_log logs/host.access.log main;
          location / {
                    root html;
                    index index.html index.htm;
                    }
          #error_page 404  /404.html;
          # redirect server error pages to the static page /50x.html
          error_page 500 502 503 504 /50x.html;
          location =  /50x.html {
                              root html;
                              }
          }
} 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下操作,修改index.html文件内容,用来验证网站的访问情况。 
         
          - 执行以下命令,打开“/usr/share/nginx/html/index.html”文件。 
           
vim /usr/share/nginx/html/index.html
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
Welcome to ECS-HA2
 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。 
         
systemctl enable nginx
         systemctl start nginx.service
         
          回显类似如下信息: 
          
[root@ecs-ha2 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@ecs-ha2 ~]# systemctl start nginx.service
          
        - 打开浏览器,并输入EIP地址(124.X.X.187),验证Nginx单节点的访问情况。 
         
          网页如下图所示,表示ECS-HA2的Nginx配置成功。 
          
           图4 ECS-HA2访问验证
           
           
           
        - 执行以下操作,修改Keepalived配置文件。 
         
          - 执行以下命令,打开“/etc/keepalived/keepalived.conf”文件。 
           
vim /etc/keepalived/keepalived.conf
 
          - 按i进入编辑模式。
 
          - 根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。 
           
            - mcast_src_ip和unicast_src_ip:替换为ECS-HA2的私有IP地址,本示例为192.168.0.233。
 
            - virtual_ipaddress:替换为虚拟IP地址,本示例为192.168.0.177。
 
           
           ! 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 BACKUP
     interface eth0
     mcast_src_ip 192.168.0.233
     virtual_router_id 51
     priority 90
     advert_int 1
     authentication {
               auth_type PASS
               auth_pass 1111
               }
     unicast_src_ip 192.168.0.233                                                  
     virtual_ipaddress {
                    192.168.0.177
                    }
track_script {
     chk_http_port
     }
} 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下操作,配置Nginx监控脚本。 
         
          - 执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件。 
           
vim /etc/keepalived/chk_nginx.sh
 
          - 按i进入编辑模式。
 
          - 将文件中原有的内容,全部替换成以下内容。 
           
#!/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 
          - 按ESC退出,并输入:wq!保存配置。
 
         
 
        - 执行以下命令,为“chk_nginx.sh”文件添加执行权限。 
         
chmod +x /etc/keepalived/chk_nginx.sh
 
        - 执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。 
         
systemctl enable keepalived
         systemctl start keepalived.service
 
        - 将EIP和ECS-HA2解绑定。 
         
具体方法请参见解绑弹性公网IP。
 
       
 
     
     
    
   
  
   
    
     
步骤三:将虚拟IP绑定至主备ECS及EIP
    
    
     
      - 将虚拟IP分别绑定至主备ECS上,本示例中需要绑定ECS-HA1和ECS-HA2。 
       
具体操作请参见将虚拟IP地址绑定至实例或EIP。
 
      - 关闭主备ECS网卡的“源/目的检查”功能。 
       
        将虚拟IP绑定至ECS时,系统会自动关闭ECS网卡的“源/目的检查”功能,您需要参考以下操作检查关闭情况。如果未关闭,则请关闭该功能。 
        
         - 在ECS列表中,单击目标ECS的名称。 
          
进入ECS详情页。
 
         - 选择“弹性网卡”页签,并单击
展开ECS的网卡详情区域,可以查看“源/目的检查”功能。 
          如图5所示,表示“源/目的检查”功能已关闭。
          
           图5 关闭网卡的“源/目的检查”功能
           
            
        
         
      - 将虚拟IP绑定至EIP上,本示例中需要绑定EIP-A。 
       
具体操作请参见将虚拟IP地址绑定至实例或EIP。
 
     
     
    
   
  
   
    
     
步骤四:关闭备ECS的IP转发功能
    
    
     使用虚拟IP构建主备场景的高可用集群时,需要关闭备ECS的IP转发功能,当主备ECS切换后,则需要确保新的备ECS也关闭IP转发功能。
     为了避免ECS主备切换后遗漏配置,建议您将主备ECS的IP转发功能全都关闭。
     
      - 打开浏览器,并输入EIP地址(124.X.X.187),通过网页确认主ECS。 
       
        网页如下图所示,表示此时主ECS是ECS-HA1。 
        
         图6 主ECS验证
         
         
         
      - 远程登录备ECS,本示例是ECS-HA2。 
       
ECS有多种登录方法,具体请参见登录弹性云服务器。
 
      - 请根据ECS的操作系统,在表4中选择关闭IP转发功能的操作,本示例ECS为Linux操作系统。 
       
        
        
         
          表4 关闭IP转发功能
         
         
          
           | 
             操作系统  | 
           
             操作指导  | 
          
         
         
          
           | 
             Linux系统  | 
           
            
             - 执行以下命令,切换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  
              | 
          
          
           | 
             Windows系统  | 
           
            
             - 在搜索框中输入cmd,打开Windows系统的“命令提示符”窗口,执行以下命令。 
              
ipconfig/all 
              
               - 回显结果中,“IP 路由已启用”为 “否”, 表示IP转发功能已关闭。
 
               - 回显结果中,“IP 路由已启用”为 “是”, 表示IP转发功能未关闭,继续执行以下操作。
 
                
             - 在搜索框中输入regedit,打开注册表编辑器。
 
             - 编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的IPEnableRouter值为0。 
              
               - 指定值为 0:关闭 IP 转发。
 
               - 指定值为 1:启用 IP 转发。
 
                
              | 
          
         
        
         
     
     
    
   
  
   
    
     
步骤五:验证主备ECS的自动切换功能
    
    
     
      - 执行以下操作,分别重启主备ECS。 
       
        - 远程登录ECS-HA1。 
         
ECS有多种登录方法,具体请参见登录弹性云服务器。
 
        - 执行以下命令,重启ECS-HA1。 
         
reboot
 
        - 参考1.a~1.b,重启ECS-HA2。
 
       
 
      - 执行以下操作,验证主ECS的网页访问情况。 
       
        - 打开浏览器,并输入EIP地址(124.X.X.187),验证主ECS的网页访问情况。 
         
          网页如下图所示,表示此时主ECS是ECS-HA1,且网页访问正常。 
          
           图7 主ECS验证(ECS-HA1)
           
           
           
        - 远程登录ECS-HA1,并执行以下命令,查看虚拟IP是否已绑定到ECS-HA1的eth0网卡上。 
         
ip addr show
         
          回显类似如下信息,可以看到虚拟IP(192.168.0.177)已绑定至eth0网卡上,再次确认ECS-HA1为主ECS。 
          
[root@ecs-ha1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether fa:16:3e:fe:56:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.195/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 107898685sec preferred_lft 107898685sec
    inet 192.168.0.177/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fefe:5619/64 scope link 
       valid_lft forever preferred_lft forever
          
        - 执行以下命令,停止主ECS的Keepalived服务,本示例中主ECS为ECS-HA1。 
         
systemctl stop keepalived.service
 
       
 
      - 执行以下命令,验证主ECS是否切换成ECS-HA2。 
       
        - 远程登录ECS-HA2,并执行以下命令,查看虚拟IP是否已绑定到ECS-HA2的eth0网卡上。 
         
ip addr show
         
          回显类似如下信息,可以看到虚拟IP(192.168.0.177)已绑定至eth0网卡上,此时确认ECS-HA2为主ECS。 
          
[root@ecs-ha2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether fa:16:3e:fe:56:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.233/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 107898091sec preferred_lft 107898091sec
    inet 192.168.0.177/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fefe:563f/64 scope link 
       valid_lft forever preferred_lft forever
          
        - 打开浏览器,并输入EIP地址(124.X.X.187),验证ECS-HA2作为主ECS时的网页访问情况。 
         
          网页如下图所示,表示此时主ECS是ECS-HA2,且网页访问正常。 
          
           图8 主ECS验证(ECS-HA2)