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

[经验分享] 14、高可用keepalived搭建及切换

[复制链接]

尚未签到

发表于 2015-9-4 09:06:50 | 显示全部楼层 |阅读模式
keepalived主从切换试验:
1、先搭建192.168.1.20与192.168.1.21的主主架构     192.168.1.76为VIP
2、在2机都安装keepalived


  • tar -zxvf keepalived-1.2.13.tar.gz
  • cd keepalived-1.2.13
  • ./configure -prefix=/usr/local/keepalived
  • make
  • make install
  • [iyunv@likun keepalived-1.2.13]# cat /opt/mysql/mysql.sh
  • #!/bin/sh
  • pkill keepalived
  • [iyunv@likun keepalived-1.2.13]# chmod +x /opt/mysql/mysql.sh

3、配置20机器的keepalived配置文件


  • [iyunv@likun keepalived-1.2.13]# cat /usr/local/keepalived/etc/keepalived.conf
  • !ConfigurationFilefor keepalived

  • global_defs {
  •    notification_email {
  •      likun@163.com
  •    }
  •    router_id mysql-ha
  • }

  • vrrp_instance VI_20 {
  •     state BACKUP
  •     interface eth0
  •     virtual_router_id 20
  •     priority 90
  •     advert_int 1
  •     nopreempt        
  •     authentication {
  •         auth_type PASS
  •         auth_pass 1111  
  •     }
  •     virtual_ipaddress {   
  •         192.168.1.76
  •     }
  • }

  • virtual_server 192.168.1.763306{
  •     delay_loop 2
  •     lb_algo wrr
  •     lb_kind DR
  •     persistence_timeout 60
  •     protocol TCP

  •     real_server 192.168.1.203306{
  •         weight 3
  •         notify_down /opt/mysql/mysql.sh
  •             TCP_CHECK {
  •             connect_timeout 10
  •             nb_get_retry 3
  •             delay_before_retry 3
  •             connect_port 3306
  •         }
  •     }
  • }

4、配置21机器的keepalived配置文件


  • !ConfigurationFilefor keepalived

  • global_defs {
  •    notification_email {
  •      likun@163.com
  •    }
  •    router_id mysql-ha
  • }

  • vrrp_instance VI_21 {
  •     state BACKUP
  •     interface eth0
  •     virtual_router_id 20        --注意2边要一致
  •     priority 100
  •     advert_int 1
  •     nopreempt        
  •     authentication {
  •         auth_type PASS
  •         auth_pass 1111  
  •     }
  •     virtual_ipaddress {   
  •         192.168.1.76
  •     }
  • }

  • virtual_server 192.168.1.763306{
  •     delay_loop 2
  •     lb_algo wrr
  •     lb_kind DR
  •     persistence_timeout 60
  •     protocol TCP

  •     real_server 192.168.1.213306{
  •         weight 3
  •         notify_down /opt/mysql/mysql.sh
  •             TCP_CHECK {
  •             connect_timeout 10
  •             nb_get_retry 3
  •             delay_before_retry 3
  •             connect_port 3306
  •         }
  •     }
  • }

5、测试

  • 在20机器测试,mysql没有启动的情况下,keepalived启动会被自动杀掉,证明keepalived配置正确

service mysql stop
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived.conf -D
ps -ef|grep keepalived        看到没有keepalived进程


  • 在2边启动mysql并启动keepalived,测试用vip登陆数据库



  • [iyunv@likun1 keepalived-1.2.13]# mysql -h192.168.1.76-P3306 -uroot -proot
  • Welcome to the MySQL monitor.  Commands end with ; or \g.
  • YourMySQL connection id is 682
  • Server version:5.5.30-log Source distribution

  • Copyright(c)2000,2013,Oracle and/or its affiliates.All rights reserved.

  • Oracle is a registered trademark of OracleCorporation and/or its
  • affiliates.Other names may be trademarks of their respective
  • owners.

  • Type'help;' or '\h'for help.Type'\c' to clear the current input statement.

  • mysql>


21机器查看IP:


  • [iyunv@likun1 keepalived-1.2.13]# ip addr show
  • 1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  •     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  •     inet 127.0.0.1/8 scope host lo
  •     inet6 ::1/128 scope host
  •        valid_lft forever preferred_lft forever
  • 2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  •     link/ether 08:00:27:5d:ef:c3 brd ff:ff:ff:ff:ff:ff
  •     inet 192.168.1.21/24 brd 192.168.1.255 scope global eth0
  •     inet 192.168.1.76/32 scope global eth0
  •     inet6 fe80::a00:27ff:fe5d:efc3/64 scope link
  •        valid_lft forever preferred_lft forever


20机器查看IP:


  • [iyunv@likun keepalived-1.2.13]# ip addr show
  • 1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  •     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  •     inet 127.0.0.1/8 scope host lo
  •     inet6 ::1/128 scope host
  •        valid_lft forever preferred_lft forever
  • 2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  •     link/ether 08:00:27:00:58:57 brd ff:ff:ff:ff:ff:ff
  •     inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0
  •     inet6 fe80::a00:27ff:fe00:5857/64 scope link
  •        valid_lft forever preferred_lft forever

关闭20节点的mysql,发现VIP漂移到21上,并且20上的keepalived被kill


  • 杀掉master的keepalived,vip会飘到slave上,slave的日志:



  • Jul2020:03:31 likun Keepalived_vrrp[8547]: VRRP_Instance(VI_20)Transition to MASTER STATE
  • Jul2020:03:32 likun Keepalived_vrrp[8547]: VRRP_Instance(VI_20)Entering MASTER STATE
  • Jul2020:03:32 likun Keepalived_vrrp[8547]: VRRP_Instance(VI_20) setting protocol VIPs.
  • Jul2020:03:32 likun Keepalived_vrrp[8547]: VRRP_Instance(VI_20)Sending gratuitous ARPs on eth0 for192.168.1.76
  • Jul2020:03:32 likun Keepalived_healthcheckers[8546]:Netlink reflector reports IP 192.168.1.76 added


  • 再启动master的keepalived,不会抢vip,变为backup state,master的日志:



  • Jul2020:03:49 likun1 Keepalived[7416]:StartingKeepalived v1.2.13(07/20,2014)
  • Jul2020:03:49 likun1 Keepalived[7417]:StartingHealthcheck child process, pid=7418
  • Jul2020:03:49 likun1 Keepalived[7417]:Starting VRRP child process, pid=7419
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:Netlink reflector reports IP 192.168.1.21 added
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:Netlink reflector reports IP 192.168.1.21 added
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:Netlink reflector reports IP fe80::a00:27ff:fe5d:efc3 added
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:RegisteringKernel netlink reflector
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:RegisteringKernel netlink command channel
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:Netlink reflector reports IP fe80::a00:27ff:fe5d:efc3 added
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:RegisteringKernel netlink reflector
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:RegisteringKernel netlink command channel
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:Registering gratuitous ARP shared channel
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:Configuration is using:62953Bytes
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]:UsingLinkWatch kernel netlink reflector...
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]: VRRP_Instance(VI_21)Entering BACKUP STATE
  • Jul2020:03:49 likun1 Keepalived_vrrp[7419]: VRRP sockpool:[ifindex(2), proto(112), unicast(0), fd(10,11)]
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:Configuration is using:11555Bytes
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:UsingLinkWatch kernel netlink reflector...
  • Jul2020:03:49 likun1 Keepalived_healthcheckers[7418]:Activating healthchecker for service [192.168.1.21]:3306



切换时不会kill keepalived的方式
20、21先配置主主架构

2边数据库做授权:
root@localhost 19:30:38 [db3]> GRANT REPLICATION CLIENT ON *.* TO 'monitor'@'%' IDENTIFIED BY 'm0n1tor';
Query OK, 0 rows affected (0.00 sec)
flush privileges

2边系统拷贝检测脚本并+x
chmod +x /usr/local/keepalived/checkMySQL.py        (脚本在附件,要检查一下脚本变量值)

两边配置文件做成如下:
20:


  • [iyunv@likun ~]# cat /usr/local/keepalived/etc/keepalived.conf
  • vrrp_script vs_mysql_20 {
  •     script "/usr/local/keepalived/checkMySQL.py -h 192.168.1.20 -P 3306"
  •     interval 60
  • }
  • vrrp_instance VI_20 {
  •     state BACKUP
  •     nopreempt
  •     interface eth0
  •     virtual_router_id 21
  •     priority 100
  •     advert_int 5
  •     authentication {
  •         auth_type PASS
  •         auth_pass 1111
  •     }
  •     track_script {
  •        vs_mysql_20
  •     }
  •     virtual_ipaddress {
  •         192.168.1.76
  •     }
  • }

21:


  • [iyunv@likun1 ~]# cat /usr/local/keepalived/etc/keepalived.conf
  • vrrp_script vs_mysql_21 {
  •     script "/usr/local/keepalived/checkMySQL.py -h 192.168.1.21 -P 3306"
  •     interval 60
  • }
  • vrrp_instance VI_21 {
  •     state BACKUP
  •     nopreempt
  •     interface eth0
  •     virtual_router_id 21
  •     priority 90
  •     advert_int 5
  •     authentication {
  •         auth_type PASS
  •         auth_pass 1111
  •     }
  •     track_script {
  •        vs_mysql_21
  •     }
  •     virtual_ipaddress {
  •         192.168.1.76
  •     }
  • }


启动20的keepalived,并查看日志,发现启动为master状态,vip绑定:


  • [iyunv@likun ~]#/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived.conf -D
  • [iyunv@likun ~]# tail -f /var/log/messages
  • Aug  820:58:41 likun Keepalived[8023]:StoppingKeepalived v1.2.13(07/20,2014)
  • Aug  820:59:04 likun Keepalived[8064]:StartingKeepalived v1.2.13(07/20,2014)
  • Aug  820:59:04 likun Keepalived[8065]:StartingHealthcheck child process, pid=8066
  • Aug  820:59:04 likun Keepalived[8065]:Starting VRRP child process, pid=8067
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:Netlink reflector reports IP 192.168.1.20 added
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:Netlink reflector reports IP 10.0.3.15 added
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:Netlink reflector reports IP fe80::a00:27ff:fe00:5857 added
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP 192.168.1.20 added
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:Netlink reflector reports IP fe80::a00:27ff:fe5d:683a added
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:RegisteringKernel netlink reflector
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:RegisteringKernel netlink command channel
  • Aug  820:59:04 likun Keepalived_vrrp[8067]:Registering gratuitous ARP shared channel
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP 10.0.3.15 added
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP fe80::a00:27ff:fe00:5857 added
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP fe80::a00:27ff:fe5d:683a added
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:RegisteringKernel netlink reflector
  • Aug  820:59:04 likun Keepalived_healthcheckers[8066]:RegisteringKernel netlink command channel
  • Aug  820:59:05 likun Keepalived_vrrp[8067]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Aug  820:59:05 likun Keepalived_healthcheckers[8066]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Aug  820:59:05 likun Keepalived_vrrp[8067]:Configuration is using:62993Bytes
  • Aug  820:59:05 likun Keepalived_healthcheckers[8066]:Configuration is using:5287Bytes
  • Aug  820:59:05 likun Keepalived_vrrp[8067]:UsingLinkWatch kernel netlink reflector...
  • Aug  820:59:05 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Entering BACKUP STATE
  • Aug  820:59:05 likun Keepalived_vrrp[8067]: VRRP sockpool:[ifindex(2), proto(112), unicast(0), fd(10,11)]
  • Aug  820:59:05 likun Keepalived_healthcheckers[8066]:UsingLinkWatch kernel netlink reflector...
  • Aug  820:59:07 likun Keepalived_vrrp[8067]: VRRP_Script(vs_mysql_20) succeeded
  • Aug  820:59:20 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Transition to MASTER STATE
  • Aug  820:59:25 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Entering MASTER STATE
  • Aug  820:59:25 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20) setting protocol VIPs.
  • Aug  820:59:25 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Sending gratuitous ARPs on eth0 for192.168.1.76
  • Aug  820:59:25 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP 192.168.1.76 added
  • Aug  820:59:30 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Sending gratuitous ARPs on eth0 for192.168.1.76

启动21的keepalived,并查看日志,启动为backup状态:


  • [iyunv@likun1 ~]#/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived.conf -D
  • [iyunv@likun1 ~]# tail -f /var/log/messages
  • Aug  918:11:27 likun1 Keepalived[3355]:StartingKeepalived v1.2.13(07/20,2014)
  • Aug  918:11:27 likun1 Keepalived[3356]:StartingHealthcheck child process, pid=3357
  • Aug  918:11:27 likun1 Keepalived[3356]:Starting VRRP child process, pid=3358
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:Netlink reflector reports IP 192.168.1.21 added
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:Netlink reflector reports IP 192.168.1.21 added
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:Netlink reflector reports IP 10.0.3.15 added
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:Netlink reflector reports IP fe80::a00:27ff:fe5d:efc3 added
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:Netlink reflector reports IP 10.0.3.15 added
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:Netlink reflector reports IP fe80::a00:27ff:fe97:754a added
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:RegisteringKernel netlink reflector
  • Aug  918:11:27 likun1 Keepalived_healthcheckers[3357]:RegisteringKernel netlink command channel
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:Netlink reflector reports IP fe80::a00:27ff:fe5d:efc3 added
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:Netlink reflector reports IP fe80::a00:27ff:fe97:754a added
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:RegisteringKernel netlink reflector
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:RegisteringKernel netlink command channel
  • Aug  918:11:27 likun1 Keepalived_vrrp[3358]:Registering gratuitous ARP shared channel
  • Aug  918:11:30 likun1 Keepalived_vrrp[3358]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Aug  918:11:30 likun1 Keepalived_healthcheckers[3357]:Opening file '/usr/local/keepalived/etc/keepalived.conf'.
  • Aug  918:11:30 likun1 Keepalived_vrrp[3358]:Configuration is using:63001Bytes
  • Aug  918:11:30 likun1 Keepalived_healthcheckers[3357]:Configuration is using:5295Bytes
  • Aug  918:11:30 likun1 Keepalived_vrrp[3358]:UsingLinkWatch kernel netlink reflector...
  • Aug  918:11:30 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21)Entering BACKUP STATE
  • Aug  918:11:30 likun1 Keepalived_vrrp[3358]: VRRP sockpool:[ifindex(2), proto(112), unicast(0), fd(10,11)]
  • Aug  918:11:30 likun1 Keepalived_healthcheckers[3357]:UsingLinkWatch kernel netlink reflector...
  • Aug  918:11:31 likun1 Keepalived_vrrp[3358]: VRRP_Script(vs_mysql_21) succeeded

20机器关闭mysql,看到20 keepalived切换为fault状态,21机器切换为master状态并绑定vip


  • 20日志:
  • Aug  823:09:05 likun Keepalived_vrrp[8067]: VRRP_Script(vs_mysql_20) failed
  • Aug  823:09:08 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Entering FAULT STATE
  • Aug  823:09:08 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20) removing protocol VIPs.
  • Aug  823:09:08 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Now in FAULT state
  • Aug  823:09:08 likun Keepalived_healthcheckers[8066]:Netlink reflector reports IP 192.168.1.76 removed



  • 21日志:
  • Aug  920:21:00 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21)Transition to MASTER STATE
  • Aug  920:21:05 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21)Entering MASTER STATE
  • Aug  920:21:05 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21) setting protocol VIPs.
  • Aug  920:21:05 likun1 Keepalived_healthcheckers[3357]:Netlink reflector reports IP 192.168.1.76 added
  • Aug  920:21:05 likun1 avahi-daemon[1320]:Registeringnew address record for192.168.1.76 on eth0.IPv4.
  • Aug  920:21:05 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21)Sending gratuitous ARPs on eth0 for192.168.1.76
  • Aug  920:21:10 likun1 Keepalived_vrrp[3358]: VRRP_Instance(VI_21)Sending gratuitous ARPs on eth0 for192.168.1.76

20机器再次启动mysql,keepalived会切换为backup状态,但不会抢vip


  • Aug  823:49:05 likun Keepalived_vrrp[8067]: VRRP_Script(vs_mysql_20) succeeded
  • Aug  823:49:08 likun Keepalived_vrrp[8067]: VRRP_Instance(VI_20)Entering BACKUP STATE




keepalived双主带一从的配置方式
20 <-->21(双主)
|
22(从库)

  

运维网声明 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-109231-1-1.html 上篇帖子: [工具开发] keepalived使用nagios监控脚本 下篇帖子: keepalived绑定的ip一段时间(大约几分钟)后消失的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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