Haproxy安裝配置TCP反向代理

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章