一、什么是高可用和负载均衡?
高可用:系统中部分节点失效时,其他节点能够接替它继续提供服务,则为高可用。
负载均衡:建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。当请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求,则为负载均衡。
二、利用keepalived+haproxy实现双机热备,达到集群真正的高可用负载均衡
要想实现双击热备,关键的解决方法为Linux的虚拟IP技术+keepalived
双机热备是应用于服务器的一种解决方案,其构造思想是主机和从机通过TCP/IP网络连接,正常情况下主机处于工作状态,从机处于监视状态,一旦从机发现主机异常,从机将会在很短的时间之内代替主机,完全实现主机的功能。
2.1Linux的虚拟IP技术
虚拟IP,即在Linux网卡上绑定另一个虚拟IP,此时网卡有两个IP,一个真实IP一个虚拟IP,使用这两个IP中的任意一个都可以连接到这台主机。
2.2利用keepalived实现双机热备功能
当两台haproxy的容器中安装keepalived后,keepalived运行时会抢占虚拟IP,抢到虚拟IP的keepalived所在的haproxy便作为主服务器,没有抢到便是从服务器。
主从服务器之间进行心跳检测,当主服务器宕机后,从服务器便会抢占虚拟IP,从而代替主服务器,保障运行。
2.3docker+keepalived+haproxy实现双击热备的架构图
docker的IP借助宿主机的keepalived实现与外网连接。一个请求经宿主机IP转发到docker的IP,docker的IP被任意容器内的keepalived抢占,请求又被转发到抢占docker虚拟IP的容器内的haproxy,通过haproxy的负载均衡技术将请求发送到数据库的某个节点上。
三、操作
(1)创建docker-mysql-pxc集群
1.1拉取pxc镜像(拉取,重命名)
1.2建立单独网段
1.3创建docker卷
1.4启动pxc
(如果你是8.0+且没有使用相同的证书,那么你肯定会遇到一个ssl相关的错误“error:0407008A:rsaroutines:RSA_padding_check_PKCS1_type_1:invalid padding”。可以参考报错的官方网站提供解决方案处理)
pxc1
(必须要等待node1的数据库初始化完成且Navicat客服端连接成功后,才能创建其余节点,否则会出现闪退现象)
pxc2
pxc3
(2)拉取haproxy镜像
2.1创建haproxy1
优先创建haproxy的配置文件
创建容器并启动
2.2同样的方法创建并启动haproxy2
(3)加装keepalived
进入容器内,使用apt-get update更新容器内的下载工具,然后apt-get install 安装
再haproxy的宿主机映射目录中创建keepalived.conf文件
3.1 haproxy1
将映射的keepalived.conf文件复制到/etc/keepalived下并启动keepalived
验证是否可以ping通keepalived所占的虚拟IP
3.2 haproxy2
(4)宿主机安装keepalived
注释原来的keepalived.conf文件,配置新的keepalived.conf文件
启动宿主机的keepalived服务并ping宿主机供请求访问的ip
(5)测试
通过宿主机keepalived绑定的ip访问haproxy监控服务
(注意此时的IP是宿主机keepalived抢占的虚拟IP)
测试数据库请求
测试Haproxy双击热备的高可用
·暂停运行h1容器
·给数据库添加数据,如果仍然可以实现同步,即双击热备的高可用性实现