在之前的博客中我们已经安装好了三个节点的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
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 ,输入上边配置文件中配置的用户名密码。出现以下页面说明配置成功
2.7 使用navicat连接Haproxy
因为我们使用Haproxy做数据库的负载均衡前置机。我们试验是否通过navicat能否连上Haproxy操作数据库。
我们在Haproxy创建数据库hadb
刷新haproxy负载均衡的数据库节点。
这三个节点因为PXC的同步机制都创建了hadb数据库
新建表和新建数据就不再演示,请自行测试。至此haproxy+pxc集群已搭建完成。