【操作系统版本】CentOS 5.464位)

Keepalived版本】1.1.19

1.20以上在此系统上有问题,所以选择较低版本。

使用keepadlived ,在数据库主机和备用机上同时开启该程序,通过虚拟VIP地址对外提供数据库访问接口。并抢占VIP地址,正常情况下数据库主机VIP地址具有优先权,并提供数据库访问服务。在数据库主机数据库无法访问时,keep自动关闭程序注销VIP地址,同时备用机抢占VIP地址,数据库备用机将自动接管并顶替主机数据库。


【编译】

  1. #./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-x86_64/  

【安装】

  1. #make && make install 
  2.  
  3. #cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig 
  4.  
  5. #cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/rc.d/keepalived 
  6.  
  7. #vi /usr/local/MySQL/bin/MySQL.sh  
  8.  #!/bin/sh  
  9.  service keepalived stop 
  10.  
  11. #chmod +x /usr/local/MySQL/bin/MySQL.sh 
  12.  
  13. #mkdir /etc/keepalived/ 
  14.  
  15. #vi /etc/keepalived.conf 

##AB机均按以上步骤安装。


【主机A配置】


  1. ! Configuration File for keepalived  
  2.  
  3. global_defs {  
  4.  
  5.      notification_email {  
  6.  
  7.      xikder@foxmail.com  
  8.  
  9.      }  
  10.  
  11.      notification_email_from xikder@foxmail.com  
  12.  
  13.      smtp_server 127.0.0.1  
  14.  
  15.      smtp_connect_timeout 30  
  16.  
  17.      router_id MySQL-ha  
  18.  
  19.      }  
  20.  
  21. vrrp_instance VI_1 {  
  22.  
  23.      state MASTER   #两台配置此处均是BACKUP  
  24.  
  25.      interface eth0  
  26.  
  27.      virtual_router_id 51  
  28.  
  29.      priority 100   #优先级,另一台改为90  
  30.  
  31.      advert_int 1  
  32.  
  33.      nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置  
  34.  
  35.      authentication {  
  36.  
  37.      auth_type PASS  
  38.  
  39.      auth_pass 1111  
  40.  
  41.      }  
  42.  
  43.      virtual_ipaddress {  
  44.  
  45.      192.168.0.250  
  46.  
  47.      }  
  48.  
  49.      }  
  50.  
  51. virtual_server 192.168.0.250 3306 {  
  52.  
  53.      delay_loop 2   #每个2秒检查一次real_server状态  
  54.  
  55.      lb_algo wrr   #LVS算法  
  56.  
  57.      lb_kind DR    #LVS模式  
  58.  
  59.      persistence_timeout 60   #会话保持时间  
  60.  
  61.      protocol TCP  
  62.  
  63.      real_server 192.168.0.245 3306 {  
  64.  
  65.      weight 3  
  66.  
  67.      notify_down "/usr/local/MySQL/bin/MySQL.sh"  #检测到服务down后执行的脚本  
  68.  
  69.      TCP_CHECK {  
  70.  
  71.      connect_timeout 10    #连接超时时间  
  72.  
  73.      nb_get_retry 3       #重连次数  
  74.  
  75.      delay_before_retry 3   #重连间隔时间  
  76.  
  77.      connect_port 3306   #健康检查端口  
  78.  
  79.      }  
  80.  
  81.      } 

【主机B 配置】

  1. ! Configuration File for keepalived  
  2.  
  3. global_defs {  
  4.  
  5.      notification_email {  
  6.  
  7.      xikder@foxmail.com  
  8.  
  9.      }  
  10.  
  11.      notification_email_from xikder@foxmail.com  
  12.  
  13.      smtp_server 127.0.0.1  
  14.  
  15.      smtp_connect_timeout 30  
  16.  
  17.      router_id MySQL-ha  
  18.  
  19.      }  
  20.  
  21. vrrp_instance VI_1 {  
  22.  
  23.      state BACKUP  
  24.  
  25.      interface eth0  
  26.  
  27.      virtual_router_id 51  
  28.  
  29.      priority 90  
  30.  
  31.      advert_int 1  
  32.  
  33.      authentication {  
  34.  
  35.      auth_type PASS  
  36.  
  37.      auth_pass 1111  
  38.  
  39.      }  
  40.  
  41.      virtual_ipaddress {  
  42.  
  43.      192.168.0.250  
  44.  
  45.      }  
  46.  
  47.      }  
  48.  
  49. virtual_server 192.168.0.250 3306 {  
  50.  
  51.      delay_loop 2  
  52.  
  53.      lb_algo wrr  
  54.  
  55.      lb_kind DR  
  56.  
  57.      persistence_timeout 60  
  58.  
  59.      protocol TCP  
  60.  
  61.      real_server 192.168.0.246 3306 {  
  62.  
  63.      weight 3  
  64.  
  65.      notify_down /usr/local/MySQL/bin/MySQL.sh  
  66.  
  67.      TCP_CHECK {  
  68.  
  69.      connect_timeout 10  
  70.  
  71.      nb_get_retry 3  
  72.  
  73.      delay_before_retry 3  
  74.  
  75.      connect_port 3306  
  76.  
  77.      }  
  78.  
  79.      } 

【开启服务】

  1. /usr/local/keepalived/sbin/keepalived -D