docker+keeplived+haproxy实现数据库的高可用负载均衡

一、什么是高可用和负载均衡?

高可用:系统中部分节点失效时,其他节点能够接替它继续提供服务,则为高可用。

负载均衡:建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。当请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求,则为负载均衡。

二、利用keepalived+haproxy实现双机热备,达到集群真正的高可用负载均衡

要想实现双击热备,关键的解决方法为Linux的虚拟IP技术+keepalived

双机热备是应用于服务器的一种解决方案,其构造思想是主机和从机通过TCP/IP网络连接,正常情况下主机处于工作状态,从机处于监视状态,一旦从机发现主机异常,从机将会在很短的时间之内代替主机,完全实现主机的功能。

2.1Linux的虚拟IP技术

虚拟IP,即在Linux网卡上绑定另一个虚拟IP,此时网卡有两个IP,一个真实IP一个虚拟IP,使用这两个IP中的任意一个都可以连接到这台主机。

docker+keeplived+haproxy实现数据库的高可用负载均衡_第1张图片

 2.2利用keepalived实现双机热备功能

当两台haproxy的容器中安装keepalived后,keepalived运行时会抢占虚拟IP,抢到虚拟IP的keepalived所在的haproxy便作为主服务器,没有抢到便是从服务器。

docker+keeplived+haproxy实现数据库的高可用负载均衡_第2张图片

主从服务器之间进行心跳检测,当主服务器宕机后,从服务器便会抢占虚拟IP,从而代替主服务器,保障运行。

2.3docker+keepalived+haproxy实现双击热备的架构图

docker+keeplived+haproxy实现数据库的高可用负载均衡_第3张图片

docker的IP借助宿主机的keepalived实现与外网连接。一个请求经宿主机IP转发到docker的IP,docker的IP被任意容器内的keepalived抢占,请求又被转发到抢占docker虚拟IP的容器内的haproxy,通过haproxy的负载均衡技术将请求发送到数据库的某个节点上。

 三、操作

(1)创建docker-mysql-pxc集群

1.1拉取pxc镜像(拉取,重命名)

docker+keeplived+haproxy实现数据库的高可用负载均衡_第4张图片

1.2建立单独网段

docker+keeplived+haproxy实现数据库的高可用负载均衡_第5张图片

1.3创建docker卷

 docker+keeplived+haproxy实现数据库的高可用负载均衡_第6张图片

1.4启动pxc

(如果你是8.0+且没有使用相同的证书,那么你肯定会遇到一个ssl相关的错误“error:0407008A:rsaroutines:RSA_padding_check_PKCS1_type_1:invalid padding”。可以参考报错的官方网站提供解决方案处理)

pxc1

(必须要等待node1的数据库初始化完成且Navicat客服端连接成功后,才能创建其余节点,否则会出现闪退现象) 

pxc2

pxc3 

(2)拉取haproxy镜像

docker+keeplived+haproxy实现数据库的高可用负载均衡_第7张图片

2.1创建haproxy1

优先创建haproxy的配置文件

docker+keeplived+haproxy实现数据库的高可用负载均衡_第8张图片

创建容器并启动

docker+keeplived+haproxy实现数据库的高可用负载均衡_第9张图片

2.2同样的方法创建并启动haproxy2

docker+keeplived+haproxy实现数据库的高可用负载均衡_第10张图片

(3)加装keepalived

进入容器内,使用apt-get update更新容器内的下载工具,然后apt-get install 安装

docker+keeplived+haproxy实现数据库的高可用负载均衡_第11张图片

再haproxy的宿主机映射目录中创建keepalived.conf文件

docker+keeplived+haproxy实现数据库的高可用负载均衡_第12张图片

3.1  haproxy1 

docker+keeplived+haproxy实现数据库的高可用负载均衡_第13张图片

将映射的keepalived.conf文件复制到/etc/keepalived下并启动keepalived

docker+keeplived+haproxy实现数据库的高可用负载均衡_第14张图片

验证是否可以ping通keepalived所占的虚拟IP

docker+keeplived+haproxy实现数据库的高可用负载均衡_第15张图片

3.2  haproxy2

docker+keeplived+haproxy实现数据库的高可用负载均衡_第16张图片

docker+keeplived+haproxy实现数据库的高可用负载均衡_第17张图片

docker+keeplived+haproxy实现数据库的高可用负载均衡_第18张图片

(4)宿主机安装keepalived

docker+keeplived+haproxy实现数据库的高可用负载均衡_第19张图片

注释原来的keepalived.conf文件,配置新的keepalived.conf文件

docker+keeplived+haproxy实现数据库的高可用负载均衡_第20张图片

启动宿主机的keepalived服务并ping宿主机供请求访问的ip

docker+keeplived+haproxy实现数据库的高可用负载均衡_第21张图片

(5)测试

通过宿主机keepalived绑定的ip访问haproxy监控服务 

docker+keeplived+haproxy实现数据库的高可用负载均衡_第22张图片

(注意此时的IP是宿主机keepalived抢占的虚拟IP)

测试数据库请求

docker+keeplived+haproxy实现数据库的高可用负载均衡_第23张图片

docker+keeplived+haproxy实现数据库的高可用负载均衡_第24张图片

docker+keeplived+haproxy实现数据库的高可用负载均衡_第25张图片

测试Haproxy双击热备的高可用

 ·暂停运行h1容器

·给数据库添加数据,如果仍然可以实现同步,即双击热备的高可用性实现

docker+keeplived+haproxy实现数据库的高可用负载均衡_第26张图片

 docker+keeplived+haproxy实现数据库的高可用负载均衡_第27张图片

 docker+keeplived+haproxy实现数据库的高可用负载均衡_第28张图片

你可能感兴趣的:(linux,负载均衡,数据库,docker)