版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianglingchuan/article/details/82218469
上次用Nginx进行反向代理TCP,发现测试还是还是几K的链接数就挂掉了,按官方的推荐使用Haproxy进行测试。
安装
安装命令:
yum install haproxy
haproxy的配置文件位于/etc/haproxy/, 为了防止出错,先备份原始配置文件:
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.backup
Centos6命令:
启动/停止/重启: service haproxy start/stop/restart/
Centos7命令:
/bin/systemctl start haproxy.service
/bin/systemctl stop haproxy.service
/bin/systemctl restart haproxy.service
日志配置
配置rsyslog
我们需要使用rsyslog记录HAProxy的日志,编辑rsyslog.conf配置文件,打开UDP的514端口:
vim /etc/rsyslog.conf
去掉如下行的注释:
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
local3.* /var/log/haproxy.log #新添加这句
保存退出,重启服务rsyslog、Haproxy
重启rsyslog:
systemctl restart rsyslog
查看进程:
[root@ffm ~]# ps -ef | grep haproxy
root 10307 1 0 Aug14 ? 00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy 10308 10307 0 Aug14 ? 00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy 10309 10308 0 Aug14 ? 00:00:59 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
root 16723 16698 0 17:10 pts/0 00:00:00 grep --color=auto haproxy
配置文件
文件配置/etc/haproxy/haproxy.cfg
global #全局配置
log 127.0.0.1 local3 info #
maxconn 100000
user haproxy
group haproxy
daemon #设置为后台进程
nbproc 4 #进程数量(可以设置多个进程提高性能)
ulimit-n 65535 #ulimit的数量限制
#Haproxy控制台管理
listen admin_stats
stats enable
bind *:9090 #ip
mode http #
option httplog
log global
maxconn 10
stats refresh 30s #统计页面自动刷新时间
stats uri /admin #访问的uri ip:8080/admin
stats realm haproxy
stats auth admin:Redhat #认证用户名和密码
stats hide-version #隐藏HAProxy的版本号
stats admin if TRUE #管理界面,如果认证成功了,可通过webui管理节点
#EMQ后台控制器展示
frontend emqtt-admin-front
bind *:18089
mode http
default_backend emqtt-admin-backend
backend emqtt-admin-backend
mode http
balance roundrobin
server emq1 127.0.0.1:18083 check
server emq2 127.0.0.3:18083 check
#EMQ前端TCP代理
frontend emqtt-front
bind *:1889
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
balance roundrobin #负载均衡算法
maxconn 100000 #最大链接数
timeout connect 60s #连接超时
timeout client 30000 #客户端超时,
###timeout client 24h
##这个参数在使用EMQ压力测试时很有用,刚开始设备的超时时间过段,导致测试一小会儿就出现 {shutdown,connack_timeout}
timeout server 30000 #服务器超时
default_backend mqtt
backend emqtt-backend
balance roundrobin
server emq1 127.0.0.1:1884 check inter 10000 fall 2 rise 5 weight 1
server emq2 127.0.0.2:1884 check inter 10000 fall 2 rise 5 weight 1
控制台访问地址: http://127.0.0.1:9090/admin