Keepalived实现数据库集群双机热备

之前我们已经搭建好了MyCat管理的PXC集群以及replication集群

MyCat实现PXC集群负载均衡以及replication集群读写分离

为了实现高可用,我们接下来需要在MyCat中间件之前使用Keepalived实现双机热备

一.Keepalived如何实现双机热备?

为了实现高可用,我们使用keepalived来实现双机热备。

其主要工作原理是,在MyCat容器上面使用keepalived来生成一个虚拟IP地址。

连接数据库的时候不实用MyCat的IP地址,而是使用keepalived的虚拟IP地址。

在我们构建的双keepalived+MyCat方案中,两个keepalived争抢节点连接,

抢到之后该节点变为master节点,另一个节点变成backup节点。

同时master节点开始向外发布广播,如果master节点宕机,那么广播就会停止,

此时backup收不到广播,就会去获得节点连接,实现双机热备。

因为在Keepalived一方面把MyCat端口的请求映射到swarm集群中的虚拟IP。

但是在swarm集群外部,我们是没有办法访问到swarm集群的,因此需要在宿主机上安装keepalived,然后把宿主机的某个端口映射到swarm集群中的虚拟IP中的端口。

这样才可以实现双机热备

二.Keepalived在Docker容器的配置

首先,因为keepalived端口发送广播是VRRP协议的,因此需要centos7先支持VRRP协议。

vrrp在Docker上面的配置如下:

{

state 	Mater			##这里配置keepalived节点的地位 master代表主节点,backup代表备用节点,如果两个都设置为master,那么两个节点在开始连接的时候会竞争

interface 	docker_gwbridge      ##dokcer_gwbridge指docker虚拟机的网卡

virtual_route_id  	51    ##这里指多个keepalived连接时的路由号,必须保持一致

priority   	100      ##分配权重

advert_int 	1        ##表示1S没有接受到master的VRRP广播就开始竞争节点

autnentication {		

​		auth_type  		PASS					##表示使用密码方式来链接

​		auth_pass  		123456

}

virtual_ipaddress{				##映射的虚拟IP

​				172.18.0.201

}

}

三.Keepalived在宿主机的配置

这里因为Keepalived是安装在宿主机上面,因此我们需要把宿主机上面配置上虚拟IP跟上面相似


state 	Mater			##这里配置keepalived节点的地位 master代表主节点,backup代表备用节点,如果两个都设置为master,那么两个节点在开始连接的时候会竞争

interface 	docker_gwbridge      ##dokcer_gwbridge指docker虚拟机的网卡

virtual_route_id  	61    ##这里跟上面的路由号不一样

priority   	100      ##分配权重

advert_int 	1        ##表示1S没有接受到master的VRRP广播就开始竞争节点

autnentication {		

​		auth_type  		PASS					##表示使用密码方式来链接

​		auth_pass  		123456

}

virtual_ipaddress{				##映射的虚拟IP

​				192.168.99.150   ##注意 这是宿主机的虚拟IP

}

但是呢 因为我们需要映射到Docker的某些端口上,因此比上面我们需要多配置一些

{

virtual_server 192.168.99.150  8066{

​		delay_loop   	3 

​		lb_algo		rr

​		lb_kind 	   NAT

​		persistence 	 timeout  50

​		protocol      TCP

​		real_reserver 	 172.18.0.201.8066{  ##虚拟IP接受到请求之后,把IP转发到真正的IP

​			weight     1

​			}

}

virtual_server 192.168.99.150  9066{

​		delay_loop   	3 

​		lb_algo		rr

​		lb_kind 	   NAT

​		persistence 	 timeout  50

​		protocol      TCP

​		real_reserver 	 172.18.0.201.9066{  ##虚拟IP接受到请求之后,把IP转发到真正的IP

​			weight     1

​			}

}

}

这里我们可以看到,在宿主机上的keepalived把宿主机上的两个虚拟端口转发到Docker上的两个keepalived节点上面。这里我们的配置就完成了。

你可能感兴趣的:(数据库集群的部署)