设为首页 收藏本站
查看: 1107|回复: 0

[经验分享] 配置Keepalived单实例实现单IP自动漂移接管

[复制链接]

尚未签到

发表于 2018-12-31 07:06:38 | 显示全部楼层 |阅读模式
  本篇主要演示Keepalived高可用对之间的故障切换过程及详细配置,具体工作原理可以见上一篇博客《Keepalived学习总结》。

  

  实验要求 ==> 实现Keepalived高可用对之间的故障切换过程,配置的vrrp实例的VIP为192.168.10.66,可以将其配置在网卡别名上。
  实验环境 ==> CentOS 7.x
  实验目的 ==> 实现Keepalived高可用对之间的故障切换功能
  实验主机 ==> 192.168.10.6(主机名:node1)、192.168.10.7(主机名:node2)
  实验前提 ==> 高可用对之间时间同步(可通过周期性任务来实现)
  实验操作如下。

  

  1、编辑keepalived配置文件

  注意:使用vim打开/etc/keepalived/keepalived.conf后,先注释掉virtual_server相关的配置,可在末行模式下使用命令":.,$s/^/#/g"注释。
  

  2、启动keepalived服务
  (1) 在node1(192.168.10.6)上
[root@node1 ~]# systemctl start keepalived.service# 启动keepalived服务
[root@node1 ~]# systemctl status keepalived.service# 查看keepalived服务状态
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-07-08 05:51:16 CST; 5s ago
      # 已经在运行中
  Process: 16520 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 16521 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─16521 /usr/sbin/keepalived -D
           ├─16522 /usr/sbin/keepalived -D
           └─16523 /usr/sbin/keepalived -D
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Netlink reflector reports IP 192.168.10.6 added
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Registering Kernel netlink reflector
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Registering Kernel netlink command channel
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Configuration is using : 7429 Bytes
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Using LinkWatch kernel netlink reflector...
Jul 08 05:51:18 node1 Keepalived_vrrp[16523]: VRRP_Instance(VI_1) Entering MASTER STATE
  # node1启动后状态为MASTER路由器
Jul 08 05:51:18 node1 Keepalived_vrrp[16523]: VRRP_Instance(VI_1) setting protocol VIPs.
Jul 08 05:51:18 node1 Keepalived_vrrp[16523]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 192.168.10.66
  # node1发送免费ARP通告虚拟路由所在的MAC地址(ens33)
Jul 08 05:51:18 node1 Keepalived_healthcheckers[16522]: Netlink reflector reports IP 192.168.10.66 added
# 已经添加虚拟路由IP(192.168.10.66)  

  同样的信息可在/var/log/message中获得。
[root@node1 ~]# tail -5 /var/log/messages
Jul  8 05:51:18 localhost Keepalived_vrrp[16523]: VRRP_Instance(VI_1) Entering MASTER STATE
Jul  8 05:51:18 localhost Keepalived_vrrp[16523]: VRRP_Instance(VI_1) setting protocol VIPs.
Jul  8 05:51:18 localhost Keepalived_vrrp[16523]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 192.168.10.66
Jul  8 05:51:18 localhost Keepalived_healthcheckers[16522]: Netlink reflector reports IP 192.168.10.66 added
Jul  8 05:51:23 localhost Keepalived_vrrp[16523]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 192.168.10.66  

  查看虚拟路由IP。
[root@node1 ~]# ip addr l
(...省略...)
ens33:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:13:d1:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.6/24 brd 192.168.10.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.10.66/32 scope global ens33# 已经配置了虚拟路由IP
       valid_lft forever preferred_lft forever  

  (2) 在node2(192.168.10.7)上
[root@node2 ~]# systemctl start keepalived.service
[root@node2 ~]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-07-08 06:48:36 CST; 30s ago
  Process: 14507 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 14508 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─14508 /usr/sbin/keepalived -D
           ├─14509 /usr/sbin/keepalived -D
           └─14510 /usr/sbin/keepalived -D
Jul 08 06:48:36 node2 Keepalived_vrrp[14510]: Configuration is using : 62884 Bytes
Jul 08 06:48:36 node2 Keepalived_vrrp[14510]: Using LinkWatch kernel netlink reflector...
Jul 08 06:48:36 node2 Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Entering BACKUP STATE
  # 启动后作为BACKUP路由器
Jul 08 06:48:36 node2 Keepalived_vrrp[14510]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Netlink reflector reports IP 192.168.10.7 added
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Registering Kernel netlink reflector
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Registering Kernel netlink command channel
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Configuration is using : 7427 Bytes
Jul 08 06:48:36 node2 Keepalived_healthcheckers[14509]: Using LinkWatch kernel netlink reflector...  

  此时VIP应该只配置在node1的ens33接口上,而不是配置在本主机(node2)的ens34接口上。
[root@node2 ~]# ip a
ens34:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:68:80:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.7/24 brd 192.168.10.255 scope global ens34
       valid_lft forever preferred_lft forever
       # BACKUP状态下没有配置VIP  

  3、暂停node1上的keepalived服务,测试node2节点是否会自动转变为MASTER状态
  (1) 在node1(192.168.10.6)上
[root@node1 ~]# systemctl stop keepalived.service
[root@node1 ~]# tail /var/log/messages
Jul  8 06:58:20 localhost Keepalived[16723]: Stopping Keepalived v1.2.13 (11/05,2016)
# 关闭keepalived服务
Jul  8 06:58:20 localhost systemd: Stopping LVS and VRRP High Availability Monitor...
Jul  8 06:58:20 localhost Keepalived_vrrp[16725]: VRRP_Instance(VI_1) sending 0 priority
# 将自身优先级将为0,以让其它节点接任Master
Jul  8 06:58:20 localhost Keepalived_vrrp[16725]: VRRP_Instance(VI_1) removing protocol VIPs.
# 移除VIP
Jul  8 06:58:20 localhost Keepalived_healthcheckers[16724]: Netlink reflector reports IP 192.168.10.66 removed
# VIP已经从node1上移除
Jul  8 06:58:20 localhost systemd: Stopped LVS and VRRP High Availability Monitor.  

  查看ip地址。
[root@node1 ~]# ip a
ens33:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:13:d1:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.6/24 brd 192.168.10.255 scope global ens33
       valid_lft forever preferred_lft forever
       # node1已经移除了VIP  

  (2) 在node2(192.168.10.7)上
[root@node2 ~]# tail /var/log/messages
Jul  8 06:58:21 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul  8 06:58:22 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Entering MASTER STATE
# node2转变为Master状态
Jul  8 06:58:22 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) setting protocol VIPs.
# node2设置VIP
Jul  8 06:58:22 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens34 for 192.168.10.66
# node2发送免费ARP,通告现在VIP对应的MAC地址
Jul  8 06:58:22 localhost Keepalived_healthcheckers[14509]: Netlink reflector reports IP 192.168.10.66 added
Jul  8 06:58:27 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens34 for 192.168.10.66  

  此时在node2的ens34接口上应该配置有VIP。
[root@node2 ~]# ip a
ens34:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:68:80:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.7/24 brd 192.168.10.255 scope global ens34
       valid_lft forever preferred_lft forever
    inet 192.168.10.66/32 scope global ens34# VIP
       valid_lft forever preferred_lft forever  

  4、再次启动node1节点的keepalived服务,测试node1是否能够转变为Master状态,并夺回VIP
  (1) 在node1(192.168.10.6)上
[root@node1 ~]# systemctl start keepalived.service
[root@node1 ~]# tail /var/log/messages
Jul  8 07:14:38 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul  8 07:14:38 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Jul  8 07:14:39 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) Entering MASTER STATE
Jul  8 07:14:39 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) setting protocol VIPs.
Jul  8 07:14:39 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 192.168.10.66
Jul  8 07:14:39 localhost Keepalived_healthcheckers[16777]: Netlink reflector reports IP 192.168.10.66 added
Jul  8 07:14:44 localhost Keepalived_vrrp[16778]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 192.168.10.66
# node1再次发送免费ARP
[root@node1 ~]#
[root@node1 ~]#
[root@node1 ~]# ip a
ens33:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:13:d1:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.6/24 brd 192.168.10.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.10.66/32 scope global ens33# VIP已经夺回
       valid_lft forever preferred_lft forever  

  (2) 在node2(192.168.10.7)上
[root@node2 ~]# tail /var/log/messages
Jul  8 07:14:39 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Received higher prio advert
# node2收到node1发送的vrrp报文,发现node1的优先级比自己的高
Jul  8 07:14:39 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) Entering BACKUP STATE
# node2重新返回BACKUP状态
Jul  8 07:14:39 localhost Keepalived_vrrp[14510]: VRRP_Instance(VI_1) removing protocol VIPs.
Jul  8 07:14:39 localhost Keepalived_healthcheckers[14509]: Netlink reflector reports IP 192.168.10.66 removed
# node2将VIP移除  

  此时node2上应该没有配置VIP。
[root@node2 ~]# ip a
ens34:  mtu 1280 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:68:80:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.7/24 brd 192.168.10.255 scope global ens34
       valid_lft forever preferred_lft forever  

  测试演示完毕。
  

  补充:
  此外,也可将VIP配置在网卡别名上,例如:
# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
...
    virtual_ipaddress {
        192.168.10.66 dev ens33 label ens33:0
    }
}  这样配置的VIP则可以通过ifconfig命令来查看。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657756-1-1.html 上篇帖子: centos6中三台物理机配置nginx+keepalived+lvs 下篇帖子: keepalived高可用lvs集群,主/备和主/主模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表