4、配置keepalived   在线视频演示

1)编辑配置文件

  1. #guration File for keepalived 
  2. #global define 
  3. global_defs { 
  4.         router_id Hadb_1 
  5.         } 
  6. vrrp_sync_group VGM { 
  7.         group { 
  8.         VI_HA 
  9.         } 
  10. vrrp_script chk_mysql { 
  11.         script "killall -0 mysqld" 
  12.         interval 5 
  13. # vvrp_instance define # 
  14. vrrp_instance VI_HA { 
  15.         state MASTER 
  16.         interface eth0 
  17.         virtual_router_id 51 
  18.         priority 100 
  19.         advert_int 5 
  20.         authentication { 
  21.                 auth_type PASS 
  22.                 auth_pass hamysql 
  23.         } 
  24.         virtual_ipaddress { 
  25.                 10.0.0.20 
  26.         } 
  27.         track_script { 
  28.                 chk_mysql 
  29.         } 

2)启动Keepalived服务

分别启动两台服务器的Keepalived服务并观察其日志,效验高可用是否成功。

  1. [10.0.0.18@localhost ~]# service keepalived start 
  2. [10.0.0.18@localhost ~]# tail /var/log/messages  
  3. Jun 15 03:06:35 localhost Keepalived_vrrp: VRRP_Script(chk_mysql) succeeded 
  4. Jun 15 03:06:36 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Transition to MASTER STATE 
  5. Jun 15 03:06:41 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Entering MASTER STATE 
  6. Jun 15 03:06:41 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) setting protocol VIPs. 
  7. Jun 15 03:06:41 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Sending gratuitous ARPs on eth0 for 10.0.0.20 
  8. Jun 15 03:06:41 localhost Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to MASTER state 
  9. Jun 15 03:06:41 localhost Keepalived_vrrp: Netlink reflector reports IP 10.0.0.18 added 
  10. Jun 15 03:06:41 localhost Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.18 added 
  11. Jun 15 03:06:46 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Sending gratuitous ARPs on eth0 for 10.0.0.20 
  12.  

5、测试
1)找一台装有mysql客户端的windows或linux机器登陆VIP测试。

  1. [root@CentOS ~]# mysql -uroot -p123456 -h10.0.0.20 
  2. Welcome to the MySQL monitor.  Commands end with ; or \g. 
  3. Your MySQL connection id is 7 
  4. Server version: 5.0.77-log Source distribution 
  5.  
  6. Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

2)keepalived故障转移测试

A:在windows或linux客户端一直去ping  VIP,然后关闭10.0.0.18上的keepalived,正常情况下VIP就会切换到10.0.0.19上面去

B:开启10.0.0.18上的keepalived,看是否能自动切换

3)MySQL故障转移测试

A:在10.0.0.18上关闭MySQL服务,看VIP是否会切换到10.0.0.19上
 

  1. [10.0.0.18@localhost ~]# service mysqld stop 
  2. [10.0.0.18@localhost ~]# tail /var/log/messages -f 
  3. Jun 15 03:20:35 localhost Keepalived_vrrp: VRRP_Script(chk_mysql) failed 
  4. Jun 15 03:20:36 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Entering FAULT STATE 
  5. Jun 15 03:20:36 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) removing protocol VIPs. 
  6. Jun 15 03:20:36 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Now in FAULT state 
  7. Jun 15 03:20:36 localhost Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to FAULT state 
  8. Jun 15 03:20:36 localhost Keepalived_vrrp: Netlink reflector reports IP 10.0.0.18 removed 
  9. Jun 15 03:20:36 localhost Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.18 removed 
  10.  
  11.  
  12. [10.0.0.19@localhost ~]# tail /var/log/messages -f 
  13. Jun 15 03:20:47 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Transition to MASTER STATE 
  14. Jun 15 03:20:47 localhost Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to MASTER state 
  15. Jun 15 03:20:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Entering MASTER STATE 
  16. Jun 15 03:20:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) setting protocol VIPs. 
  17. Jun 15 03:20:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Sending gratuitous ARPs on eth0 for 10.0.0.20 
  18. Jun 15 03:20:52 localhost Keepalived_vrrp: Netlink reflector reports IP 10.0.0.19 added 
  19. Jun 15 03:20:52 localhost Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.19 added 
  20. Jun 15 03:20:57 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Sending gratuitous ARPs on eth0 for 10.0.0.20 

B:开启10.0.0.18上的MySQL和keepalived

  1. [10.0.0.18@localhost ~]# service mysqld start 
  2. [10.0.0.19@localhost ~]# tail /var/log/messages -f 
  3. Jun 15 03:23:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Received higher prio advert 
  4. Jun 15 03:23:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Entering BACKUP STATE 
  5. Jun 15 03:23:52 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) removing protocol VIPs. 
  6. Jun 15 03:23:52 localhost Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to BACKUP state 
  7. Jun 15 03:23:52 localhost Keepalived_vrrp: Netlink reflector reports IP 10.0.0.19 removed 
  8. Jun 15 03:23:52 localhost Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.19 removed 

C:下客户端连接的MySQL的VIP,在切换时我执行了一个MySQL查询命令
 

  1. mysql> show tables; 
  2. No connection. Trying to reconnect... 
  3. Connection id:    10 
  4. Current database: test 
  5. +----------------+ 
  6. | Tables_in_test | 
  7. +----------------+ 
  8. | t2             | 
  9. +----------------+ 
  10. 1 row in set (0.00 sec)