实验环境
主机名/IP | 系统 | 角色 |
server04/192.168.1.204 | ubuntu 22.04 | 主节点 |
server05/192.168.1.205 | ubuntu 22.04 | 节点 |
server06/192.168.1.206 | ubuntu 22.04 | 节点 |
server07/192.168.1.207 | ubuntu 22.04 | 仲裁节点/HAProxy |
PXC配置
参考文章:PXC集群部署
额外配置
修改mysql配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address=0.0.0.0
#允许外部访问数据库
重启服务
systemctl restart mysql
新建数据库用户对test数据库具有全部权限
mysql -u root -p
CREATE USER 'haproxy'@'192.168.1.104' IDENTIFIED BY 'wakamizu';
GRANT ALL PRIVILEGES ON test.* TO 'haproxy'@'192.168.1.104';
HAProxy配置
安装
apt install haproxy -y
修改配置文件
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0 info # 定义全局日志输出设置
maxconn 5000 # 设置最大并发连接数
nbthread 2 # 启动的进程数,一般设置成逻辑核心数的数量
ulimit-n 12000 # 系统允许的最大文件描述符数,一般设置成maxconn的双倍多一点(还有额外套接字数),因为每个连接可能占用两个文件描述符—1—一个用于客户端连接,另一个用于后端服务器连接。
user haproxy # 运行HAProxy的用户
group haproxy # 运行HAProxy的用户组
chroot /var/lib/haproxy # 限制haproxy的工作目录
daemon # 以守护进程方式运行
defaults
log global # 引用全局日志设置
mode tcp # 设置为TCP模式
option tcplog # 使用TCP日志格式
option redispatch # 如果绑定的服务器不可用,则重新将请求分配给其他健康的服务器,而不是丢弃请求或让其失败。
timeout connect 5m # 连接超时时间
timeout client 5m # 客户端超时时间
timeout server 5m # 服务器超时时间
frontend frontend
bind *:3306 # 监听3306端口
default_backend backend # 默认后端服务器组
backend backend
balance leastconn # 负载均衡算法:最少连接数
server server1 192.168.1.204:3306 check inter 2000 rise 2 fall 3
# 定义后端服务器1,inter设置检查间隔
server server2 192.168.1.205:3306 check inter 2000 rise 2 fall 3
# 定义后端服务器2,fall设置服务器被标记为不可用前必须验证的次数
server server3 192.168.1.206:3306 check inter 2000 rise 2 fall 3
# 定义后端服务器3,rise设置服务器被标记为可用前必须验证的次数
设置ulimit
ulimit -n 65535
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
启动服务
systemctl start haproxy
测试
mysql -u haproxy -p -h 192.168.1.207