MySQL主主:http://blog.csdn.net/chengshiep/article/details/50943221
兩臺服務器
MySQL-master1(主):192.168.2.202
MySQL-master2(備):192.168.2.222
MySQL-VIP(虛擬ip):192.168.2.201
MySQL-master1(主)
#修改防火牆設置
vi /etc/sysconfig/iptables
#加上
iptables -A INPUT -p vrrp -j ACCEPT
service iptables restart
#安裝keepalived
cd /usr/local/src
tar zxvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived --with-kernel-dir
make && make install
#複製keepalived腳本
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
#設置keepalived開機啓動腳本
chkconfig keepalived on
#修改配置腳本
vi /etc/keepalived/keepalived.conf
#內容如下
global_defs {
#notification_email {
# [email protected]
#}
#notification_email_from [email protected]
#smtp_server smtp.qq.com
#smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.201
}
}
virtual_server 192.168.2.201 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.202 3306 {
weight 3
notify_down /etc/rc.d/keepalived.sh
TCP_CHECK {
# 連接超時時間
connect_timeout 10
# 重連次數
nb_get_retry 3
# 重連間隔時間
delay_before_retry 3
# 健康檢查端口
connect_port 3306
}
}
}
#編寫檢測服務down後所要執行的腳本
vi /etc/rc.d/keepalived.sh
#內容如下
----------
#!/bin/sh
/etc/init.d/keepalived stop
----------
#或者內容如下
----------
#!/bin/bash
# 環境變量
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
# 暫停5秒執行,防止數據庫人工正常重啓
sleep 5
# mysql_id(存活=1 死掉=0)
mysql_id=`ps -C mysqld --noheader |wc -l`
# 判斷mysql_id若死掉,則重啓mysql一次,若仍然無法啓動mysql則殺掉keepaliaved進程實現VIP切換
if [ $mysql_id -eq 0 ];then
/etc/init.d/mysqld restart
sleep 5
if [ $mysql_id -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
----------
#啓動keepalived
/etc/init.d/keepalived start
#查看連接狀態
ps -aux | grep keepalived
#查看VIP信息
ip addr
#查看vrrp通信
tcpdump vrrp
#查看keepalived進程
ps -aux | grep keepalived
MySQL-master2(備)
#修改防火牆設置
vi /etc/sysconfig/iptables
#加上
iptables -A INPUT -p vrrp -j ACCEPT
service iptables restart
#安裝keepalived
cd /usr/local/src
tar zxvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived --with-kernel-dir
make && make install
#複製keepalived腳本
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
#設置keepalived開機啓動腳本
chkconfig keepalived on
#修改配置腳本
vi /etc/keepalived/keepalived.conf
#內容如下
----------
global_defs {
#notification_email {
# [email protected]
#}
#notification_email_from [email protected]
#smtp_server smtp.qq.com
#smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1 {
state BACKUP
interface em1
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.201
}
}
virtual_server 192.168.2.201 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.2.222 3306 {
weight 1
notify_down /etc/rc.d/keepalived.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
----------
#編寫檢測服務down後所要執行的腳本
vi /etc/rc.d/keepalived.sh
#內容如下
----------
#!/bin/sh
/etc/init.d/keepalived stop
----------
#或者內容如下
----------
#!/bin/bash
# 環境變量
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
# 暫停5秒執行,防止數據庫人工正常重啓
sleep 5
# mysql_id(存活=1 死掉=0)
mysql_id=`ps -C mysqld --noheader |wc -l`
# 判斷mysql_id若死掉,則重啓mysql一次,若仍然無法啓動mysql則殺掉keepaliaved進程實現VIP切換
if [ $mysql_id -eq 0 ];then
/etc/init.d/mysqld restart
sleep 5
if [ $mysql_id -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
----------
#啓動keepalived
/etc/init.d/keepalived start
#查看連接狀態
ps -aux | grep keepalived
#查看VIP信息
ip addr
#查看vrrp通信
tcpdump vrrp
#查看keepalived進程
ps -aux | grep keepalived
其他命令
#設置開機啓動
chkconfig mysqld on
chkconfig keepalived on
#查看連接狀態
ps -aux | grep keepalived
#查看VIP信息
ip addr
#查看vrrp通信
tcpdump vrrp
#查看keepalived進程
ps -aux | grep keepalived
#注意兩個數據庫的用戶名需要有一套相同的,用於vip鏈接
#主Keepalived故障重啓,不希望搶佔備keepalived,可以配置nopreempt屬性
設置爲不搶佔
注:這個配置只能設置在backup主機上,而且這個主機優先級要比另外一臺高
advert_int 1
nopreempt