安装HAProxy
#更新软件包
sudo apt-get update
#查找haproxy
sudo apt list|grep haproxy
#安装haproxy
sudo apt-get install haproxy验证安装
#查看服务状态
sudo systemctl status haproxy
#查看版本
haproxy -v
#如果要设置HAProxy服务开机自启,可以使用:
sudo systemctl enable haproxy执行结果
root@hcss-ecs-2618:~# sudo systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor
preset: enabled)
Active: active (running) since Wed 2024-05-15 16:57:34 CST; 10min ago
Docs: man:haproxy(1)
file:/usr/share/doc/haproxy/configuration.txt.gz
Process: 45478 ExecStartPre=/usr/sbin/haproxy -Ws -f $CONFIG -c -q
$EXTRAOPTS (code=exited, status=0/SUCCESS)
Main PID: 45480 (haproxy)
Tasks: 3 (limit: 2006)
Memory: 69.4M
CPU: 92ms
CGroup: /system.slice/haproxy.service
├─45480 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p
/run/haproxy.pid -S /run/haproxy-master.sock
└─45482 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p
/run/haproxy.pid -S /run/haproxy-master.sock
May 15 16:57:34 hcss-ecs-2618 systemd[1]: Starting HAProxy Load Balancer...
May 15 16:57:34 hcss-ecs-2618 haproxy[45480]: [NOTICE] (45480) : New worker
#1 (45482) forked
May 15 16:57:34 hcss-ecs-2618 systemd[1]: Started HAProxy Load Balancer.
root@hcss-ecs-2618:~# haproxy -v
HAProxy version 2.4.24-0ubuntu0.22.04.1 2023/10/31 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-2.4.24.html
Running on: Linux 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC
2023 x86_64
root@hcss-ecs-2618:~#修改haproxy.cfg
vim /etc/haproxy/haproxy.cfg追加以下内容:
# haproxy web 管理界面
listen stats
bind *:8100
mode http
stats enable
stats realm Haproxy\ Statistics
stats uri /
stats auth admin:admin
# 配置负载均衡
listen rabbitmq
bind *:5670
mode tcp
balance roundrobin
server rabbitmq1 127.0.0.1:5672 check inter 5000 rise 2 fall 3
server rabbitmq2 127.0.0.1:5673 check inter 5000 rise 2 fall 3
server rabbitmq3 127.0.0.1:5674 check inter 5000 rise 2 fall 3在 HAProxy 的配置文件中,listen stats 是用来设置一个监听器的指令,这个监听器专门用于 HAProxy 的统计信息页面。这个页面提供了关于 HAProxy 运行状况的实时数据,包括当前的连接数、活动会话、以及流量等信息。
配置说明
# haproxy web 管理界面
listen stats #设置一个监听器, 统计HAProxy的统计信息
bind *:8100 #指定了监听器绑定到的IP地址和端口
mode http #监听器的工作模式为HTTP
stats enable #启用统计页面
stats realm Haproxy\ Statistics
stats uri /
stats auth admin:admin #haproxy登录账号和密码
# 配置负载均衡
listen rabbitmq #设置监听器
bind *:5670 #监听器绑定到的IP地址和端口, 也就是集群前端IP, 供producer和consumer来进行选择,由于5672端口已经默认使用, 这里选择5670端口
mode tcp #由于RabbitMQ使用AMQP协议,它是一个基于TCP的协议,所以这里使用TCP模式
balance roundrobin #指定负载均衡策略为轮询
#负载均衡中的集群节点配置,这里选择的rabbit节点
server rabbitmq1 127.0.0.1:5672 check inter 5000 rise 2 fall 3
server rabbitmq2 127.0.0.1:5673 check inter 5000 rise 2 fall 3
server rabbitmq3 127.0.0.1:5674 check inter 5000 rise 2 fall 3server rabbitmq1 127.0.0.1:5672 check inter 5000 rise 2 fall 3 : 定义后端RabbitMQ服务器的配置.
-
server rabbitmq1:定义 RabbitMQ 服务的内部标识,这里的rabbitmq1是指 haproxy 内部使用的,不是指 RabbitMQ 的节点名称。 -
127.0.0.1:5672:RabbitMQ 真实的 IP 和端口。 -
check inter 5000:定义每隔多少毫秒检查 RabbitMQ 服务是否可用。 -
rise 2:定义 RabbitMQ 服务在发生故障之后,需要多少次健康检查才能被再次确认可用。 -
fall 3:定义需要经历多少次失败的健康检查之后,HAProxy 才会停止使用此 RabbitMQ 服务。
配置后整个文件如下
不同的服务器,配置文件会略有不同,此处做参考
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd
listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# See: https://ssl-config.mozilla.org/#server=haproxy&server-
version=2.0.3&config=intermediate
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-
AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-
SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-
AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
# haproxy web 管理界面
listen stats
bind *:8100
mode http
stats enable
stats realm Haproxy\ Statistics
stats uri /
stats auth admin:admin
# 配置负载均衡
listen rabbitmq
bind *:5670
mode tcp
balance roundrobin
server rabbitmq1 127.0.0.1:5672 check inter 5000 rise 2 fall 3
server rabbitmq2 127.0.0.1:5673 check inter 5000 rise 2 fall 3
server rabbitmq3 127.0.0.1:5674 check inter 5000 rise 2 fall 3重启HAProxy
sudo systemctl restart haproxy查看HAProxy
访问: http://124.71.229.73:8100/
可以看到咱们的集群节点已经出来了
