在之前的文章我们已经搭建好了PXC集群,所有的PXC集群节点都是可读可写的,在程序发送请求给数据库时,我们不能把所有的请求全发送给一个PXC节点,对于这种情况,就形成了一个节点负载特别高、性能差,其他节点就显得很空闲,这种情况是我们不希望的。我们希望所有的PXC节点都参与到请求的处理,所以我们就要用到数据库负载均衡技术。
这里我们使用Haproxy来做负载均衡,Haproxy是作为一个请求的转发器,将各个请求均匀分给不同的节点,这样就保证了单个节点负载低、性能好。
然而单点的Haproxy又不具备高可用,一旦Haproxy出现故障,整个程序就无法正常工作了,所以我们必须要做多个Haproxy节点,一个节点挂掉,必须要有其他Haproxy来顶替。因此这里我们使用Keepalived来实现双机热备。
下载镜像

查看镜像

创建Haproxy配置文件
Haproxy配置
global chroot /usr/local/etc/haproxy log 127.0.0.1 local5 info daemon
defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000
listen admin_stats bind 0.0.0.0:8888 mode http stats uri /dbs stats realm Global\ statistics stats auth admin:tang1611
listen proxy-mysql bind 0.0.0.0:3306 mode tcp balance roundrobin option tcplog option mysql-check user haproxy server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000 server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 server MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000 server MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000 option tcpka
|
创建Haproxy容器

进入后台运行的Haproxy容器

指明配置文件路径

创建haproxy数据库账号
进入haproxy监控页面
浏览器访问 服务器ip:4001/dbs
其中4001是我们启动容器映射的宿主机的端口,dbs是配置文件里面配置的URL相对地址
例如我的访问地址是http://192.168.186.129:4001/dbs
进入后输入用户名和密码,也是在配置文件内配置的,我这里用户名是admin,密码也是tang1611

验证haproxy是否转发请求
(1)创建连接

(2)更新数据
在刚刚创建的连接的表中增加一行数据,haproxy不处理任何数据,它会将这个请求发送给其他1个PXC节点,而PXC具备强一致性,就会将数据同步到其他节点

进入haproxy容器,更新apt-get

安装keepalived

安装vim编译器
创建keepalived配置文件
keepalived配置文件
vrrp_instance VI_1{ state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication{ auth_type PASS auth_pass 123456 } virtual_ipaddress{ 172.18.0.201 } }
|
启动keepalived

创建第二个Haproxy容器
进入容器,并指定配置文件
更新apt-get
安装keepalived
安装vim编译器
创建keepalived配置文件
keepalived配置文件
vrrp_instance VI_1{ state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication{ auth_type PASS auth_pass 123456 } virtual_ipaddress{ 172.18.0.201 } }
|
启动keepalived