keepalived基础介绍

            keepalived基础介绍

                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.keepalived概述

1>.什么是keepalived

  vrrp协议(Virtual Router Redundancy Protocol)的软件实现,原生设计目的为了高可用ipvs服务。
  
  keepalived有以下组件:
    用户空间核心组件(Core components):
      VRRP Stack:
        定期发送广播包通知其它节点自己拥有的IP地址,即VIP消息报告。
      Checkers:
        在ipvs模式下使用,用来监测服务器(real server)是否存货。
      System call 
        顾名思义,用来标记服务器(real server)的权重。       
      SMTP-邮件组件
        发送邮件通知的组件。
      IPVS wrapper:
        根据咱们自定义的配置文件生成相应的IPVS规则。
      Netlink Reflector:
        用来传输数据的网络接口。
      WatchDog:
        监控进程,用来监控以上组件的进程。
    控制组件(Control Plane):
      配置文件分析器,说白了就是解析配置文件的组件。
    IO复用器(Scheduler-I/O Multiplexer):
      IO多路复用的一个组件。
    内存管理组件(Memory Mngt):
      顾名思义,管理内存的组件。

  通告:
    心跳,优先级等;周期性
  
  工作方式:
    抢占式,非抢占式

  安全工作认证:
    无认证
    简单字符认证:预共享密钥

  工作模式:
    主/备:单虚拟路由器
    主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)


  博主推荐阅读:
    https://keepalived.org/documentation.html

  

2>.keepalived功能

  基于vrrp协议完成地址流动
  为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  为ipvs集群的各RS做健康状态检测
  基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

3>.keepalived术语

  虚拟路由器(Virtual Router):
  虚拟路由器标识:VRID(
0-255),唯一标识虚拟路由器
  物理路由器:     master(主设备)     backup(备用设备)     priority(优先级)     VIP(Virtual IP)     VMAC(Viruta lMAC (
00-00-5e-00-01-VRID))

二.安装keepalived

1>.使用yum方式安装keepalived

[root@node102.yinzhengjie.org.cn ~]# yum -y install keepalived
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                          | 8.3 kB  00:00:00     
 * base: mirrors.aliyun.com
 * epel: mirrors.njupt.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                          | 3.6 kB  00:00:00     
epel                                                                          | 5.3 kB  00:00:00     
extras                                                                        | 2.9 kB  00:00:00     
updates                                                                       | 2.9 kB  00:00:00     
(1/2): epel/x86_64/updateinfo                                                 | 1.0 MB  00:00:03     
(2/2): epel/x86_64/primary_db                                                 | 6.9 MB  00:00:46     
Resolving Dependencies
--> Running transaction check
---> Package keepalived.x86_64 0:1.3.5-16.el7 will be installed
--> Processing Dependency: libnetsnmpmibs.so.31()(64bit) for package: keepalived-1.3.5-16.el7.x86_64
--> Processing Dependency: libnetsnmpagent.so.31()(64bit) for package: keepalived-1.3.5-16.el7.x86_64
--> Processing Dependency: libnetsnmp.so.31()(64bit) for package: keepalived-1.3.5-16.el7.x86_64
--> Running transaction check
---> Package net-snmp-agent-libs.x86_64 1:5.7.2-43.el7 will be installed
--> Processing Dependency: libsensors.so.4()(64bit) for package: 1:net-snmp-agent-libs-5.7.2-43.el7.x
86_64---> Package net-snmp-libs.x86_64 1:5.7.2-43.el7 will be installed
--> Running transaction check
---> Package lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================
 Package                    Arch          Version                                  Repository   Size
=====================================================================================================
Installing:
 keepalived                 x86_64        1.3.5-16.el7                             base        331 k
Installing for dependencies:
 lm_sensors-libs            x86_64        3.4.0-8.20160601gitf9185e5.el7           base         42 k
 net-snmp-agent-libs        x86_64        1:5.7.2-43.el7                           base        706 k
 net-snmp-libs              x86_64        1:5.7.2-43.el7                           base        750 k

Transaction Summary
=====================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 1.8 M
Installed size: 6.0 M
Downloading packages:
(1/4): lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm              |  42 kB  00:00:00     
(2/4): keepalived-1.3.5-16.el7.x86_64.rpm                                     | 331 kB  00:00:01     
(3/4): net-snmp-libs-5.7.2-43.el7.x86_64.rpm                                  | 750 kB  00:00:00     
(4/4): net-snmp-agent-libs-5.7.2-43.el7.x86_64.rpm                            | 706 kB  00:00:01     
-----------------------------------------------------------------------------------------------------
Total                                                                1.0 MB/s | 1.8 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:net-snmp-libs-5.7.2-43.el7.x86_64                                               1/4 
  Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64                             2/4 
  Installing : 1:net-snmp-agent-libs-5.7.2-43.el7.x86_64                                         3/4 
  Installing : keepalived-1.3.5-16.el7.x86_64                                                    4/4 
  Verifying  : keepalived-1.3.5-16.el7.x86_64                                                    1/4 
  Verifying  : 1:net-snmp-agent-libs-5.7.2-43.el7.x86_64                                         2/4 
  Verifying  : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64                             3/4 
  Verifying  : 1:net-snmp-libs-5.7.2-43.el7.x86_64                                               4/4 

Installed:
  keepalived.x86_64 0:1.3.5-16.el7                                                                   

Dependency Installed:
  lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7  net-snmp-agent-libs.x86_64 1:5.7.2-43.el7 
  net-snmp-libs.x86_64 1:5.7.2-43.el7                     

Complete!
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# yum -y install keepalived
[root@node102.yinzhengjie.org.cn ~]# keepalived -v          #查看keepalived的版本信息。
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2

Copyright(C) 2001-2017 Alexandre Cassen, <acassen@gmail.com>

Build options:  PIPE2 LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_OIFNAME FRA_SUPPRESS_PREFIXLEN FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK LIBIPTC LIBI
PSET_DYNAMIC LVS LIBIPVS_NETLINK VRRP VRRP_AUTH VRRP_VMAC SOCK_NONBLOCK SOCK_CLOEXEC FIB_ROUTING INET6_ADDR_GEN_MODE SNMP_V3_FOR_V2 SNMP SNMP_KEEPALIVED SNMP_CHECKER SNMP_RFC SNMP_RFCV2 SNMP_RFCV3 SO_MARK[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# 

2>.keepalived的程序环境

主配置文件:
  /etc/keepalived/keepalived.conf 主程序文件:
  /usr/sbin/keepalived Unit File:   /usr/lib/systemd/system/keepalived.service(CentOS)   /lib/systemd/system/keepalived.service(Ubuntu) Unit File的环境配置文件:   /etc/sysconfig/keepalived

三.keepalived软件初体验

1>.编辑haproxny的配置文件

[root@node102.yinzhengjie.org.cn ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

#上一行是注释信息,global_defs则定义全局配置。
global_defs {
   #定义收件人信息,即发生故障切换时邮件发送的对象,可以按行区分写多个。
   notification_email {
     jason@yinzhengjie.org.cn
   }
   #定义发件人信息。
   notification_email_from root@yinzhengjie.org.cn
   #定义邮件服务器地址。
   smtp_server 127.0.0.1
   #定义邮件服务器的连接超时时间。
   smtp_connect_timeout 30
   #声明虚拟路标识符,一般会写当前主机名称,需要保证该id在局域网唯一。
   router_id node102.yinzhengjie.org.cn
   #所有报文都检查比较消耗性能,此配置为如果收到的报文和上一个报文是同一个路由器发出的则跳过检查报文中的源地址。
   vrrp_skip_check_adv_addr
   #禁用防火墙策略,keepalived默认启动时会自动生成iptables策略,因此我们启用此项就可以不生成iptables的策略。
   vrrp_iptables
   #严格遵守VRRP协议,即不允许以下三种状况:
   #    1>.没有VIP地址;
   #    2>.单播邻居;
   #    3>.在VRRP版本2中有IPv6地址;
   vrrp_strict
   #ARP报文发送延迟时间,0表示不延迟。
   vrrp_garp_interval 0
   #消息发送延迟,0表示不延迟。
   vrrp_gna_interval 0
   #默认组播IP地址,224.0.0.0到239.255.255.255,不写的话默认就是224.0.0.18。
   vrrp_mcast_group4 224.0.0.18
}

#使用vrrp_instance指令定义一个VIP实例名称,我这里自定义VIP实例的名称为"VIP01",生产环境建议该名称和业务相结合。
vrrp_instance VIP01 {
    #指定当前实例默认角色,当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    state MASTER
    #定义VIP绑定的本地接口的名称(该接口名称必须在当前节点存在哟~),即绑定为当前虚拟路由器使用的物理接口
    interface eth1
    #定义当前虚拟路由器惟一标识,该id的范围是0-255,该id不要和其它keepalived的id冲突即可。
    virtual_router_id 27
    #当前物理节点在此虚拟路由器中的优先级;范围1-254
    priority 150
    #定义vrrp通告的时间间隔,默认1s
    advert_int 3
    #定义认证机制
    authentication {
        #指定认证类型
        auth_type PASS
        #指定认证密码,仅前8位有效哟~
        auth_pass yinzhengjie
    }
    #指定具体的虚拟IP地址,可以指定多个。
    virtual_ipaddress {
        172.30.1.200 dev eth1 label eth1:0
    }
}
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# cat /etc/keepalived/keepalived.conf
[root@node103.yinzhengjie.org.cn ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

#上一行是注释信息,global_defs则定义全局配置。
global_defs {
   #定义收件人信息,即发生故障切换时邮件发送的对象,可以按行区分写多个。
   notification_email {
     jason@yinzhengjie.org.cn
   }
   #定义发件人信息。
   notification_email_from root@yinzhengjie.org.cn
   #定义邮件服务器地址。
   smtp_server 127.0.0.1
   #定义邮件服务器的连接超时时间。
   smtp_connect_timeout 30
   #声明虚拟路标识符,一般会写当前主机名称,需要保证该id在局域网唯一。
   router_id node103.yinzhengjie.org.cn
   #所有报文都检查比较消耗性能,此配置为如果收到的报文和上一个报文是同一个路由器发出的则跳过检查报文中的源地址。
   vrrp_skip_check_adv_addr
   #禁用防火墙策略,keepalived默认启动时会自动生成iptables策略,因此我们启用此项就可以不生成iptables的策略。
   vrrp_iptables
   #严格遵守VRRP协议,即不允许以下三种状况:
   #    1>.没有VIP地址;
   #    2>.单播邻居;
   #    3>.在VRRP版本2中有IPv6地址;
   vrrp_strict
   #ARP报文发送延迟时间,0表示不延迟。
   vrrp_garp_interval 0
   #消息发送延迟,0表示不延迟。
   vrrp_gna_interval 0
   #默认组播IP地址,224.0.0.0到239.255.255.255,不写的话默认就是224.0.0.18。
   vrrp_mcast_group4 224.0.0.18
}

#使用vrrp_instance指令定义一个VIP实例名称,我这里自定义VIP实例的名称为"VIP01",生产环境建议该名称和业务相结合。
vrrp_instance VIP01 {
    #指定当前实例默认角色,当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    state BACKUP
    #定义VIP绑定的本地接口的名称(该接口名称必须在当前节点存在哟~),即绑定为当前虚拟路由器使用的物理接口
    interface eth1
    #定义当前虚拟路由器惟一标识,该id的范围是0-255,注意,用一组keepalived的id编号必须要一致哟~
    virtual_router_id 27
    #当前物理节点在此虚拟路由器中的优先级;范围1-254
    priority 100
    #定义vrrp通告的时间间隔,默认1s
    advert_int 3
    #定义认证机制
    authentication {
        #指定认证类型
        auth_type PASS
        #指定认证密码,仅前8位有效哟~
        auth_pass yinzhengjie
    }
    #指定具体的虚拟IP地址,可以指定多个。
    virtual_ipaddress {
        172.30.1.200 dev eth1 label eth1:0
    }
}
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# cat /etc/keepalived/keepalived.conf

2>.启动keepalived

[root@node102.yinzhengjie.org.cn ~]# yum -y install ipvsadm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.njupt.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================
 Package                           Arch                             Version                                 Repository                      Size
=================================================================================================================================================
Installing:
 ipvsadm                           x86_64                           1.27-7.el7                              base                            45 k

Transaction Summary
=================================================================================================================================================
Install  1 Package

Total download size: 45 k
Installed size: 75 k
Downloading packages:
ipvsadm-1.27-7.el7.x86_64.rpm                                                                                             |  45 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : ipvsadm-1.27-7.el7.x86_64                                                                                                     1/1 
  Verifying  : ipvsadm-1.27-7.el7.x86_64                                                                                                     1/1 

Installed:
  ipvsadm.x86_64 0:1.27-7.el7                                                                                                                    

Complete!
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# yum -y install ipvsadm          #安装ipvsadm工具用来管理使用keepalived生成的ipvs规则。
[root@node102.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:50:b8:26  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 590 (590.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 522 (522.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.102  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)
        RX packets 270  bytes 25083 (24.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 195  bytes 29595 (28.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# systemctl start keepalived            #启动keepalived后发现多出来一个"eth1:0"的子接口,IP地址就是咱们配置的"172.30.1.200"
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:50:b8:26  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 590 (590.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 522 (522.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.102  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)
        RX packets 850  bytes 76539 (74.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 620  bytes 87369 (85.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.200  netmask 255.255.255.255  broadcast 0.0.0.0
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 12  bytes 1248 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1248 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# systemctl start keepalived        #启动keepalived后发现多出来一个"eth1:0"的子接口,IP地址就是咱们配置的"172.30.1.200"
[root@node103.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:ef:75:60  txqueuelen 1000  (Ethernet)
        RX packets 268  bytes 40307 (39.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 298  bytes 28199 (27.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.103  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:3a:da:a7  txqueuelen 1000  (Ethernet)
        RX packets 1736  bytes 146445 (143.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1154  bytes 141857 (138.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# systemctl start keepalived        #同样的操作在"node103.yinzhengjie.org.cn"上操作发现没有任何变化,这很正常,稍安勿躁。
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:ef:75:60  txqueuelen 1000  (Ethernet)
        RX packets 280  bytes 42243 (41.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 29379 (28.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.103  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:3a:da:a7  txqueuelen 1000  (Ethernet)
        RX packets 1784  bytes 150521 (146.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1185  bytes 146795 (143.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# systemctl start keepalived        #同样的操作在"node103.yinzhengjie.org.cn"上操作发现没有任何变化,这很正常,稍安勿躁
[root@node105.yinzhengjie.org.cn ~]# yum -y install tcpdump              #安装抓包工具
[root@node105.yinzhengjie.org.cn ~]#
[root@node105.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:81:8d:8d  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 590 (590.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 432 (432.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.105  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:a5:ed:54  txqueuelen 1000  (Ethernet)
        RX packets 652  bytes 51232 (50.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 330  bytes 52830 (51.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node105.yinzhengjie.org.cn ~]# 
[root@node105.yinzhengjie.org.cn ~]# tcpdump -i eth1 host -nn 224.0.0.18     #我们对224.0.0.18这个节点进行抓包,如下图所示。

3>.使用"node105.yinzhengjie.org.cn"去ping"172.30.1.200"这个IP地址,于此同时将"node102.yinzhengjie.org.cn"节点的keepalived关闭。

[root@node102.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:50:b8:26  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 590 (590.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 522 (522.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.102  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)
        RX packets 3251  bytes 279834 (273.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2587  bytes 311804 (304.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.200  netmask 255.255.255.255  broadcast 0.0.0.0
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 128  bytes 13312 (13.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 128  bytes 13312 (13.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# systemctl stop keepalived            #当停掉master节点的keepalvied服务,我们发现"172.30.1.200"的IP地址不存在但依旧可以ping通,如下图所示。
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:50:b8:26  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 590 (590.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 522 (522.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.102  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:1d:d2:80  txqueuelen 1000  (Ethernet)
        RX packets 3315  bytes 285222 (278.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2636  bytes 319524 (312.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 128  bytes 13312 (13.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 128  bytes 13312 (13.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# 

[root@node103.yinzhengjie.org.cn ~]# ifconfig                 #我们发现"172.30.1.200"这个IP地址飘到了backup节点上来啦。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        ether 08:00:27:ef:75:60  txqueuelen 1000  (Ethernet)
        RX packets 304  bytes 45830 (44.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 337  bytes 31957 (31.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.103  netmask 255.255.255.0  broadcast 172.30.1.255
        ether 08:00:27:3a:da:a7  txqueuelen 1000  (Ethernet)
        RX packets 1866  bytes 155913 (152.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1268  bytes 153687 (150.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.200  netmask 255.255.255.255  broadcast 0.0.0.0
        ether 08:00:27:3a:da:a7  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# 
原文地址:https://www.cnblogs.com/yinzhengjie/p/12169214.html