网络结构:
VIP 192.168.20.50
mysq11 192.168.20.37 主
mysql2 192.168.20.38 备
mysql 主主同步
二 安装keepalived
三 keepalived 主备配置文件
mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
五 防火墙设置
六 测试及诊断
七 参考资料
注 keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18
mysql 主主同步
请百度谷歌。
二 安装keepalived

  1. wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz

  2. tar zxvf keepalived-1.2.2.tar.gz

  3. cd keepalived-1.2.2

  4. ./configure --prefix=/

  5. make

  6. make install

复制代码
三 keepalived 主备配置文件
主备置文件不同处有 state  nopreempt priority 参考资料里有详细说明作用
192.168.20.37 主配置
vim /etc/keepalived/keepalived.conf
  1. ! Configuration File for keepalived

  2. global_defs {

  3.   router_id 9ai9.net

  4. }

  5. vrrp_script check_run {

  6.   script "/root/keepalived_check_mysql.sh"

  7.   interval 5

  8. }

  9. vrrp_sync_group VG1 {

  10.    group {

  11.          VI_1

  12.    }

  13. }

  14. vrrp_instance VI_1 {

  15.    state MASTER

  16.    interface eth0

  17.    virtual_router_id 88

  18.    priority 100

  19.    advert_int 1

  20.    nopreempt

  21.    authentication {

  22.        auth_type PASS

  23.        auth_pass 9ai9.net

  24.    }

  25.    track_script {

  26.        check_run

  27.    }

  28.    virtual_ipaddress {

  29.        192.168.20.50

  30.    }

  31. }

复制代码
192.168.20.38 备用配置文件
vim /etc/keepalived/keepalived.conf
  1. ! Configuration File for keepalived

  2. global_defs {

  3.   router_id 9ai9.net

  4. }

  5. vrrp_script check_run {

  6.   script "/root/keepalived_check_mysql.sh"

  7.   interval 5

  8. }

  9. vrrp_sync_group VG1 {

  10.    group {

  11.          VI_1

  12.    }

  13. }

  14. vrrp_instance VI_1 {

  15.    state BACKUP

  16.    interface eth0

  17.    virtual_router_id 88

  18.    priority 80

  19.    advert_int 1

  20.    authentication {

  21.        auth_type PASS

  22.        auth_pass 9ai9.net

  23.    }

  24.    track_script {

  25.        check_run

  26.    }

  27.    virtual_ipaddress {

  28.        192.168.20.50

  29.    }

  30. }

复制代码
mysql状态检测脚本/root/bin/keepalived_check_
mysql.sh
vim  /root/keepalived_check_
mysql.sh
  1. #!/bin/bash

  2. MYSQL=/usr/local/mysql/bin/mysql

  3. MYSQL_HOST=localhost

  4. MYSQL_USER=root

  5. MYSQL_PASSWORD=9ai9.net

  6. CHECK_TIME=3

  7. #mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0

  8. MYSQL_OK=1

  9. function check_mysql_helth (){

  10.    $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1

  11.    if [ $? = 0 ] ;then

  12.    MYSQL_OK=1

  13.    else

  14.    MYSQL_OK=0

  15.    fi

  16.    return $MYSQL_OK

  17. }

  18. while [ $CHECK_TIME -ne 0 ]

  19. do

  20.    let "CHECK_TIME -= 1"

  21.    check_mysql_helth

  22. if [ $MYSQL_OK = 1 ] ; then

  23.    CHECK_TIME=0

  24.    exit 0

  25. fi

  26. if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]

  27. then

  28.    /etc/init.d/keepalived stop

  29.    exit 1

  30. fi

  31. sleep 1

  32. done

复制代码
赋予执行权限
  1. chmod 755 /root/keepalived_check_mysql.sh

复制代码
五 防火墙设置
vrrp协议 使用224.0.0.18地址组播
iptables -I RH-Firewall-1-INPUT  -d 224.0.0.18 -j ACCEPT
六 测试及工具
故障前

故障切换

keepalived_failover1.jpg
可以用同网段的另一台服务器 arping 1 这个虚拟IP
看看对应该的MAC地址 可以知道虚拟IP对应的真实服务器
配置文件 不正确时 有时候日志会有以下提示
VRRP_Instance(VI_1) Now in FAULT state
advert_int 两台keepalived 这个参数 不一致时 日志会有以下提示
Keepalived_vrrp: advertissement interval mismatch mine=5000000 rcved=1
七 参考资料
keepalived 官网
田老
Linuxtone
虚拟路由器冗余协议

组播

文章出自: