MySQL数据库集群之PXC方案---Haproxy+PXC集群

在之前的博客中我们已经安装好了三个节点的PXC集群。在这一篇博客中讲解Haproxy与PXC集群的搭配使用。

1. Haproxy简介

HaProxy是一个特别适用于高可用性环境的TCP/HTTP开源的反向代理和负载均衡软件。在七层负载均衡方面的功能很强大(支持cookie track,header rewrite等等),支持双机热备,支持虚拟主机,支持健康检查,同时还提供直观的监控页面,可以清晰的监控服务集群的运行状况。同时支持Linux2.6内核中System Epoll,通过简化系统调用,大幅的提高了网络I/O性能。

Haproxy包括以下一些特征:

  • 根据静态分配的cookie分配HTTP请求
  • 分配负载到各个服务器,同时保证服务器通过使用HTTP Cookie实现连接保持;
  • 当主服务器宕机时切换到备服务器,允许特殊端口的服务监控;
  • 做维护时通过配置可以保证业务的连续性,更加人性化;
  • 添加修改删除HTTP Request和Respone头;
  • 通过特定表达式Block HTTP请求;
  • 根据应用的cookie做连接保持;
  • 常有用户验证的详细的HTML监控报告。

1.1 Haproxy负载均衡算法

HaProxy的负载均衡算法现在具体有如下8种:
1、 roundrobin:简单的轮询
2、 static-rr:权重轮询
3、 leastconn:最少连接者优先
4、 source:根据请求源IP,这个跟Nginx的ip_hash机制类似
5、 ri:根据请求的URI
6、 rl_param:表示根据请求的URI参数‘balance url_param’requires an URL parameter name;
7、 hdr(name):根据HTTP请求头来锁定每一次HTTP请求
8、 rdp-cookie(name):根据cookie来锁定并哈希每一次TCP请求

2. 安装Haproxy

2.1 关闭SELINUX

把selinux的值改为disabled

vi /etc/selinux/config

修改完毕reboot重启虚拟机

reboot

2.2 开放端口

端口 作用
3306 TCP/IP转发
4001 监控界面控制
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4001/tcp --permanent
firewall-cmd --reload

2.3 安装Haproxy

yum install -y haproxy

MySQL数据库集群之PXC方案---Haproxy+PXC集群_第1张图片

2.4 Haproxy配置

2.4.1 Haproxy配置文件介绍

Haproxy的配置文件在/etc/haproxy目录下的haproxy.cfg文件,主要说明一下后台监控界面配置和负载均衡相关配置

后台监控界面配置

listen   admin_stats  
         bind    0.0.0.0:4001  #监控界面访问的ip和端口
         mode  http            #访问协议
         stats uri       /dbs  #URI相对地址
         stats realm  Global\ statistics   #统计报告格式
         stats auth    admin:abc123456  #登录账号信息

负载均衡相关配置

listen   proxy-mysql
         bind    0.0.0.0:3306  
         mode  tcp 
         balance  roundrobin   #负载均衡请求转发的算法
         option  tcplog       #日志格式
         server   pxc1 192.168.1.166:3306  check  port  3306 weight 1 maxconn  2000  
         server   pxc2 192.168.1.173:3306  check  port  3306 weight 1 maxconn  2000 
         server   pxc3 192.168.1.174:3306  check  port  3306 weight 1 maxconn  2000  

2.4.2 配置Haproxy

vi /etc/haproxy/haproxy.cfg

贴上最终配置文件内容

global
         log         127.0.0.1 local2
         chroot      /var/lib/haproxy
         pidfile     /var/run/haproxy.pid
         maxconn     4000
         user        haproxy
         group       haproxy
         daemon
         # turn on stats unix socket
         stats socket /var/lib/haproxy/stats

     defaults
         mode                    http
         log                     global
         option                  httplog
         option                  dontlognull
         option http-server-close
         option forwardfor       except 127.0.0.0/8
         option                  redispatch
         retries                 3
         timeout http-request    10s
         timeout queue           1m
         timeout connect         10s
         timeout client          1m
         timeout server          1m
         timeout http-keep-alive 10s
         timeout check           10s
         maxconn                 3000

     listen   admin_stats
         bind    0.0.0.0:4001  #监控界面访问的ip和端口
         mode  http            #访问协议
         stats uri       /dbs  #URI相对地址
         stats realm  Global\ statistics   #统计报告格式
         stats auth    admin:abc123456  #登录账号信息
     listen   proxy-mysql
         bind    0.0.0.0:3306
         mode  tcp
         balance  roundrobin
         option  tcplog       #日志格式
         server   pxc1 192.168.1.166:3306  check  port  3306 weight 1 maxconn  2000
         server   pxc2 192.168.1.173:3306  check  port  3306 weight 1 maxconn  2000
         server   pxc3 192.168.1.174:3306  check  port  3306 weight 1 maxconn  2000

2.5 Haproxy启动

service haproxy start #启动

service haproxy stop  #关闭

service haproxy restart  #重启

2.6 查看Haproxy管理界面

用浏览器打开 ip:4001/dbs ,输入上边配置文件中配置的用户名密码。出现以下页面说明配置成功

MySQL数据库集群之PXC方案---Haproxy+PXC集群_第2张图片

2.7 使用navicat连接Haproxy

因为我们使用Haproxy做数据库的负载均衡前置机。我们试验是否通过navicat能否连上Haproxy操作数据库。
MySQL数据库集群之PXC方案---Haproxy+PXC集群_第3张图片
我们在Haproxy创建数据库hadb
MySQL数据库集群之PXC方案---Haproxy+PXC集群_第4张图片
刷新haproxy负载均衡的数据库节点。
这三个节点因为PXC的同步机制都创建了hadb数据库
MySQL数据库集群之PXC方案---Haproxy+PXC集群_第5张图片

新建表和新建数据就不再演示,请自行测试。至此haproxy+pxc集群已搭建完成。

你可能感兴趣的:(MySQL集群之PXC)