3、负载均衡的高可用方案
Last updated
Last updated
单节点Haproxy不具备高可用,必须要有冗余设计
原理:虚拟出来一个虚拟IP,keepalived去争抢,谁争抢到谁就是主服务器。
具体方案架构:
当应用程序访问192.168.99.65发送数据库请求,这个请求就会路由到docker的这个虚拟ip(182.18 .0.15)上,然后转发到主服务器容器,再负载均衡到PXC集群的某个mysql数据库。
keepalived必须要安装在Haproxy所在的容器之内。
建议apt-get加速,比如设置成163镜像
Keepalived的配置文件是/etc/Keepalived/Keepalived.conf
修改配置文件
方式1:可以在容器内修改
方式2:宿主机上定义好,传入到容器中
配置文件说明:
state MASER: 标识Keepalived的身份(Master 主服务器,BACKUP备用服务器)。主服务器要抢占虚拟IP,备用服器不会抢占IP。
如果把每个Keepalived的配置文件都定义成身份是MASTER,这些节点启动之后都会去争抢虚拟IP,只会有一个节点抢到,其他节点身份自动降级为SLAVE。
interface eth0:虚拟ip保存到eth0网卡,宿主机可以访问,局域网其他电脑是看不到这个eth0网卡,所以需要在宿主机上把eth0这个网卡里的虚拟IP映射到局域网上的某一个虚拟ip上,所以后续还在宿主机上安装Keepalived。
virtual_router_id 51:虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。标识可以 0~255.
priority 100:MASTER权重要高于BACKUP,数字越大优选级越高。
advert_int 1:Keepalived节点之间同步检查的实际间隔,单位为秒,主备之间必须一致。
authentication:Keepalived节点之间通信需要验证,主从服务器验证方式。主备必须使用相同 密码爱能正常通信。
virtual_ipaddress:虚拟IP地址.可以设置多个虚拟IP地址,每行一个。注意和你的PXC集群同网段.
haproxy1容器中启动Keepalived
宿主机器上ping 一下虚拟IP测试
182.18.0.15是Docker内的虚拟IP不能被外网使用,所以需要借助宿主机器上安装keepalived,把192.168.99.65可以被外网访问的这个ip映射到Docker这个虚拟ip182.18 .0.15。