上次用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