心跳机制keepalived-集群
1、介绍
转接访问,相当于一个中转站,来一个请求动态的给到两台或多态haproxy机器上访问。
2、原理图
3、安装
查看版本号
yum list | grep keepalived
下载
yum -y install keepalived.x86_64
4、配置
vim /etc/keepalived/keepalived.conf,在这个文件中进行参数的配置
global_defs { router_id NodeA #节点A 每个haproxy节点名字 另一个取B } vrrp_script chk_haproxy { script "etc/check_haproxy.sh" #这个自启动文件 需要自己创建编辑 interval 4 weight 3 } vrrp_instance VI_1 { state MASTER #主服务器 interface ens33 #网卡 virtual_router_id 10 #保证多个节点在保持心跳时间一致 priority 90 #权重,数字越高,权重越大 这个配置两个haproxy时,不能一样另一个100 advert_int 1 track_script { chk_haproxy } authentication { auth_type PASS auth_pass 1234 #多个节点必须保持此值一致 } virtual_ipaddress { 192.168.2.222/24 #心跳虚拟ip }
}
vi /etc/check_haproxy.sh启动文件,在上述配置中引用
A=`ps -C haproxy --no-header |wc -1` if [ $A -eq 0];then systemctl start haproxy.service fi
5、测试
a. 启动
systemctl start keepalived.service 开启服务
systemctl restart keepalived.service
systemctl status keepalived.service
systemctl enable keepalived.service 开机自启
注意:需要配置另一台心跳机器,将两个配置文件都拷贝过去,将节点名字,权重更改不同就行,节点router_id改为NodeB,权重priority为90
b. 使用ip addr命令
进行查看虚拟ip是否被抢到,下面这个是haproxy1
haproxy2查看ip a,没有变化
如果haproxy1挂掉了的话,再看haproxy2,这里haproxy2获得了虚拟ip。
上述结果是根据配置文件中,设置的权重来分配的。haproxy1的权重为100,haproxy2权重为90,所以两台机器同时运行时,会优先分配haproxy1,但是当haproxy1挂机以后,haproxy2就会抢到虚拟ip绑定到自己的网卡。但是当haproxy1再次开机启动后,haproxy1又会根据权重分配。
c. 集群搭建访问流程:window
mysql -uroot -proot -h192.168.209.222 -P8066
192.168.209.222——>VIP(keepalived)——》haproxy ——》MyCat1/MyCat2 ——》MySQL主从数据库(master、slave)
d. 测试连接数据库
随便在一台具有数据库的计算机访问虚拟ip,通过8066端口。这个时候访问到的是逻辑库。流程如上。
e. 根据虚拟库拿到所有的数据
f. 假如我现在宕机一台电脑-haproxy1。
g. 这是查询的数据丝毫不受影响
6、总结
a. 以上的配置是一主一从。
b. 还可以一主,多从,每个从节点的配置都是一样,唯一的区别server-id必须不同。
c. 互为主从,左边master,右边是slave,同时右边是master,左边是slave。
d. 级联主从,主机一是master,主机二是主机一的slave,主机二又可以作为master,主机三作为主机二的slave
e. 可以将以上关系进行结合使用架构。