架构图:
本次实验严格按照下图完成
1.系统环境设置
1.1SELinux设置
vim /etc/selinux/config
输入:
disabled
reboot
getenforce
1.2设置时间同步
timedatectl set-timezone Asia/Shanghai date
1.3注意事项
1.3.1 mycat/keepaliced不能安装在同一台服务器,否则VIP设置不成功
2.安装(keepalived)
参考:https://www.cnblogs.com/ivictor/p/5261445.html
2.1软件安装
[root@keepalived01 ~]# yum install keepalived -y
2.2设置配置
[root@keepalived01 ~]# cd /etc/keepalived/ [root@keepalived01 keepalived]# cp -a keepalived.conf keepalived.conf.bak [root@keepalived01 ~]# cat /etc/keepalived/keepalived.conf
2.3新增mycat设置
在两台MyCAT服务器上为lo:0绑定VIP地址、抑制ARP广播 (务必开通两台mycat:8066的防火墙,之前用来连接mysql不需要开通,所以一直没开通,今天做高可用集群需要用到这台机的8066端口,我就是忘记开了,一直校验不成功QAQ) [root@mycat01 init.d]# firewall-cmd --permanent --add-port=8066/tcp [root@mycat01 init.d]# firewall-cmd --reload [root@mycat01 init.d]# [root@mycat01 init.d]# pwd /etc/rc.d/init.d [root@mycat01 init.d]# touch realserver [root@mycat01 init.d]# chmod 755 realserver [root@mycat01 init.d]# vim realserver #!/bin/bash #description: Config realserver VIP=192.168.247.200 /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
2.4启动(realserver )
[root@keepalived01 init.d]# service realserver start [root@keepalived01 init.d]# ip addr (ifconfig无法查看配置的虚拟IP) .... inet 192.168.247.200/32 brd 192.168.247.200 scope global lo:0 ...
2.5启动(keepalived)
[root@keepalived01 ~]# systemctl enable keepalived.service
[root@keepalived01 ~]# systemctl start keepalived.service
3.测试验证
3.1验证连通性:
[root@keepalived01 ~]# ipvsadm -L (看到如下信息表示VIP映射成功) IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP keepalived01:8066 rr persistent 50 -> 192.168.247.81:8066 Route 1 0 0 -> 192.168.247.82:8066 Route 1 0 0
3.2验证高可用
在一台客户机上执行SQL(不能在keepalived和mycat服务器上) mysql -uroot -p123456 -h 192.168.247.200 -P 8066 -Dmycat -e 'select * from localtion' 执行结果如下:经过对比,每次查询的结果都不一样,是因为前面的两台mycat,只有一台做了分库分表,所以可以验证两次查询经过的是不同的mycat服务器。
使用 ipvsadm -L命令可以查询SQL的流向,且只有keepalived83才能看见。
关闭247.83服务器后继续查询,发现84已经自动切换为主keepalived,至此高可用验证成功
当83重启时,查询作用会主动切换为83,因为权重部分83为100,84为99