keepalived 是基于网络的冗余实现的高可用 完全遵守VRRPD协议。
具体vrrpd协议是什么就不做过多的解释,可以自行百度。
首先整理下面的表格:
说明 IP
node1 192.168.1.101
node2 192.168.1.102
VIP 192.168.1.109
这样方便明确双主的环境基本参数
- 安装keepalived 和MySQL-python 在两个节点都要安装
[root@node1 ~]# yum install -y keepalived
[root@node1 ~]# yum install -y MySQL-python
- 创建用于复制和监控的的MySQL账号
(product)root@localhost [db_1]> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by 'repl4slave';
Query OK, 0 rows affected, 1 warning (0.00 sec)
(product)root@localhost [db_1]> grant replication client on *.* to 'monitor'@'192.168.1.%' identified by 'm0n1tor';
Query OK, 0 rows affected, 1 warning (0.00 sec)
(product)root@localhost [db_1]> flush privleges;
建立 node1和node2的互为主从的机制
创建node1到node2的复制:
详见 MySQL创建AB复制
http://blog.csdn.net/zuixinyan/article/details/49648207
创建node2到node1的复制:这样互为主从的复制就创建完成了
设置keepalived的参数
在node1 节点上
/etc/keepalived/keepalived.conf
这里只是配置了最简单的参数
vrrp_script vs_mysql_82 { 这个82一般都是网络管理员固定分配额的
script “/etc/keepalived/checkMySQL.py -h 192.168.11.82 -P 3306”
interval 5 这里面的作用就是利用python写了一个连接db的脚本每5s连接一 次看是否能连接成功
}
vrrp_instance VI_82 {
state BACKUP
nopreempt
interface eth0#网卡
virtual_router_id 82 #自定义的网卡的router id 这个在包含网络高可用的 环境中需要网络管理员统一分配。
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
vs_mysql_82
}
virtual_ipaddress {
192.168.1.109 这个是VIP的地址
}
}
在node1上启动keepalived 查看日志
[root@node1 keepalived]# service keepalived start
Redirecting to /bin/systemctl start keepalived.service
[root@node1 keepalived]# ps aux|grep keepalived
root 3209 0.0 0.1 111616 1276 ? Ss 18:25 0:00 /usr/sbin/keepalived -D
root 3210 0.0 0.2 113836 2892 ? S 18:25 0:00 /usr/sbin/keepalived -D
root 3211 0.0 0.2 113712 2168 ? S 18:25 0:00 /usr/sbin/keepalived -D
root 3267 0.0 0.0 112656 976 pts/0 S+ 18:25 0:00 grep –color=auto keepalived
[root@node1 keepalived]# tail -f /var/log/messages
Nov 4 18:25:33 localhost Keepalived_healthcheckers[3210]: Configuration is using : 5165 Bytes
Nov 4 18:25:33 localhost Keepalived_healthcheckers[3210]: Using LinkWatch kernel netlink reflector…
Nov 4 18:25:33 localhost kernel: IPVS: ipvs loaded.
Nov 4 18:25:33 localhost Keepalived_vrrp[3211]: **VRRP_Script(vs_mysql_82) succeeded
Nov 4 18:25:48 localhost Keepalived_vrrp[3211]: VRRP_Instance(VI_82) Transition to MASTER STATE**
Nov 4 18:25:53 localhost Keepalived_vrrp[3211]: VRRP_Instance(VI_82) Entering MASTER STATE
Nov 4 18:25:53 localhost Keepalived_vrrp[3211]: VRRP_Instance(VI_82) setting protocol VIPs.
Nov 4 18:25:53 localhost Keepalived_vrrp[3211]: VRRP_Instance(VI_82) Sending gratuitous ARPs on eth0 for 192.168.1.109
Nov 4 18:25:53 localhost Keepalived_healthcheckers[3210]: Netlink reflector reports IP 192.168.1.109 added
Nov 4 18:25:58 localhost Keepalived_vrrp[3211]: VRRP_Instance(VI_82) Sending gratuitous ARPs on eth0 for 192.168.1.109
[root@node1 keepalived]# ip addr show
1: lo: