一、 背景
为什么要用 keepalived+haproxy 实现 docker 下的高可用负载均衡?在不同环境下
有哪些方式可以实现高可用负载均衡?
首先第一点,实现负载均衡并不是只有 haproxy 一个中间件,网上还有很多方案是
用 keepalived+LVS 等等,所以对于 docker 下的高可用负载均衡不一定只有
keepalived+haproxy。
只是本次我是基于之前搭建的 pxc 集群进行继续搭建的,所以用的是 haproxy。
为什么这里强调的是 docker、keepalived?
首先我们运行环境是 docker,keepalived 的作用是抢占虚拟 ip,docker 环境下,
镜像内的网段外网是无法访问的,所以我们需要一个外网在宿主机上映射到 docker
内的 ip 上,keepalived 一方面可以映射 ip 到 docker 服务内,二可以在 docker 服
务内强占虚拟 ip。所以在 docker 搭建负载均衡的多种方案中都常见会出现
keepalived。
为什么要抢占虚拟 ip?为什么要用 keepalived 呢?
负载均衡中间件(haproxy,lvs)等等在实际中不可能只是单节点存在(单节点不
需要 keepalived),都要有冗余设计,即集群设计,和数据库集群不一样的是,docker
中实现负载均衡中间件的集群是通过抢占一个 ip 地址实现的,有主备和主主方式,
虽然方式不一样,但都有一个心跳检测的共同点,在主节点抢占虚拟 ip 时,主从节
点上会有心跳检测线,如果发现主节点心跳检测连不上,则从节点会主动抢占 ip
实现数据不中断的冗余机制;
总结描述:由于是在 docker 环境下,我们要搭建负载均衡集群需要通过 keepalived
抢占虚拟 ip 实现,而负载均衡功能需要 haproxy 中间件实现,
所以本次我搭建的是一个在 docker 环境下高可用的负载均衡方案是:
keepalived+haproxy+pxc。
二、 haproxy 安装配置
评论