Mycat–实践–20–haporxy实现Mycat的负载均衡和高可用
1、架构
2、机器
名称 | Ip | Port |
---|---|---|
MyCat1 | 192.168.187.129 | 8066 |
MyCat2 | 192.168.187.131 | 8066 |
HAProxy 主机 | 192.168.187.133 | 7071 |
2.1、安装MyCat
参考地址
https://blog.csdn.net/zhou920786312/article/details/122425291
3、开启 rsyslog 的 haproxy 日志记录功能(HAProxy 主机上)
默认情况下 haproxy 是不记录日志的,如果需要记录日志,还需要配置系统的 syslog,在 linux 系统中是 rsyslog 服务。
syslog 服务器可以用作一个网络中的日志监控中心,rsyslog 是一个开源工具,被
广泛用于 Linux 系统以通过 TCP/UDP 协议转发或接收日志消息。
3.1、安装配置 rsyslog 服务
步骤1:没安装的情况下执行安装
yum install rsyslog -y
步骤2:修改配置
vi /etc/rsyslog.conf
rsyslog.conf内容,没有就新增
# 模块名, 支持 UDP 协议
$ModLoad imudp
# 允许 514 端口接收使用 UDP 和 TCP 协议转发过来的日志,而 rsyslog 在默认情况下,正是在 514 端口监听 UDP
$UDPServerRun 514
# rsyslog 服务的配置文件路径
$IncludeConfig /etc/rsyslog.d/*.conf
步骤3:创建 haproxy 的日志配置文件
# rsyslog 服务会来此目录加载配置
cd /etc/rsyslog.d/
# 创建 haproxy 的日志配置文件
touch haproxy.conf
vim /etc/rsyslog.d/haproxy.conf
haproxy.conf
local0.* /var/log/haproxy.log
&~
如果不加上面的的"&~"配置则除了在/var/log/haproxy.log 中写入日志外,也会写入/var/log/message文件中
步骤4: 重启 rsyslog 服务
service rsyslog restart
4、配置系统内核的 IP 包转发功能(HAProxy 主机上)
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使配置生效
sysctl -p
5、安装HAProxy
名称 | Ip | Port |
---|---|---|
HAProxy 主机 | 192.168.187.133 | 7071 |
5.1、搭建7071的HAProxy
步骤1:创建配置文件
# 创建配置文件目录
mkdir -p /root/haproxy
# 创建配置文件
vim /root/haproxy/haproxy.cfg
haproxy.cfg
global
# 定义全局的 syslog 服务器,最多可以定义 2 个
# local0 是日志设备,对应于/etc/rsyslog.conf 中的配置,默认回收 info 的日志级别
log 127.0.0.1 local0 info
# 同 gid,不过这里为指定的用户组名
group haproxy
# 同 uid,但这里使用的为用户名
user haproxy
# 设置 haproxy 后台守护进程形式运行
daemon
# 设定每个 haproxy 进程所接受的最大并发连接数,
maxconn 4096
# 进程文件(默认路径 /var/run/haproxy.pid)
# pidfile /var/run/haproxy.pid
# 定义当前节点的名称,用于 HA 场景中多 haproxy 进程共享同一个 IP 地址时,不同的机器这里要不同
node haproxy-01
# 当前实例的描述信息,不同的机器这里要不同
description haproxy-01
# 用于为所有其他配置段提供默认参数
defaults
# 继承 global 中 log 的定义
log global
# mode:所处理的模式 (tcp:四层 , http:七层 , health:状态检查,只会返回 OK) ,前后端请求的模式
# tcp: 实例运行于纯 tcp 模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对 7 层报文做任何类型的检查,此为默认模式
# http:实例运行于 http 模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与 RFC 模式兼容的请求都会被拒绝
# health:实例运行于 health 模式,其对入站请求仅响应“OK”信息并关闭连接,且不会记录任何日志信息 ,此模式将用于相应外部组件的监控状态检测请求
mode http
# 启用日志记录 HTTP 请求
option httplog
# 3次健康检查都死亡,认为服务端死亡
retries 3
# serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
option redispatch
# 前端的最大并发连接数(默认为 2000)
maxconn 2000
# 连接超时(默认是毫秒,单位可以设置 us,ms,s,m,h,d)
timeout connect 5000ms
# 客户端超时
timeout client 50000ms
# 服务器超时
timeout server 50000ms
# HAProxy 的状态信息统计页面
listen admin_stats
bind 0.0.0.0:48800 # 绑定端口
stats uri /admin #统计页面
stats auth admin:admin # 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可
mode http
option httplog # 启用日志记录 HTTP 请求
# listen: 用于定义通过关联"前端"和"后端"一个完整的代理
listen mycat_servers
bind :3306 # 绑定端口
mode tcp
# 记录 TCP 请求日志
option tcplog
balance roundrobin # 定义动态权重轮询算法
server mycat_01 192.168.187.129:8066 check inter 2000ms rise 2 fall 3 weight 10
server mycat_02 192.168.187.131:8066 check inter 2000ms rise 2 fall 3 weight 10
步骤2:启动
docker run -d -p 7071:48800 -p 3306:3306 --name haproxy -v /root/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:2.5.0
步骤3:测试
http://192.168.187.133:7071/admin