高可用(keepalived+lvs)

架构图:

本次实验严格按照下图完成

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,因为权重部分83100,8499


转载需注明出处

猜你喜欢

转载自www.cnblogs.com/tanshouke/p/12206089.html
今日推荐