Install
sudo apt-get update
sudo apt-get install haproxy
setting
sudo vi /etc/haproxy/haproxy.cfg
#全局配置
global
#日誌配置,配置在本地,通過local0 輸出
log 127.0.0.1 local3
#定義日誌級別【error warning info debug】
log 127.0.0.1 local4 debug
#運行路徑
chroot /var/lib/haproxy
#PID 文件存放路徑
pidfile /var/lib/haproxy/data/haproxy.pid
#最大連接數
maxconn 30000
#運行haproxy 用戶
user root
#運行haproxy 用戶組
group root
#以後臺形式運行haproxy
daemon
#設置進程數量
nbproc 1
#ulimit 的數量限制
#ulimit-n 819200
#haproxy 調試級別,建議只在開啓單進程的時候調試
#debug
#quiet
stats socket /var/lib/haproxy/stats
#默認配置
defaults
#默認的模式 【tcp:4層; http:7層; health:只返回OK】
mode tcp
#採用全局的日誌定義輸出
log global
#日誌類別,採用httplog
#option httplog
#如果後端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip
#option forwardfor
#每次請求完畢後主動關閉http通道,haproxy不支持keep-alive,只能模擬這種模式的實現
option httpclose
#不記錄健康檢查日誌信息
option dontlognull
#當serverID對應的服務器掛掉後,強制定向到其它健康服務器
option redispatch
#當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
option abortonclose
#三次連接失敗就人爲服務器不可用,也可以在後面定義負載服務器中設置
retries 3
#默認http請求超時時間
timeout http-request 10s
#默認隊列超時時間
timeout queue 1m
#連接超時
timeout connect 7200s
#客戶端超時
timeout client 120m
#服務器超時
timeout server 120m
#默認持久連接超時時間
timeout http-keep-alive 10s
#心跳檢測超時
timeout check 10s
#默認的最大連接數
maxconn 600
#設置默認負載均衡方式,類似於nginx的ip_hash
#balance source
#設置默認負載均衡方式,最小連接數
#balnace leastconn
######## 統計頁面配置 ########
listen HAProxy-Statistics
bind 0.0.0.0:1188 #監聽端口
mode http #http的7層模式
option httplog #採用http日誌格式
log 127.0.0.1 local3 err
maxconn 100
stats refresh 30s #統計頁面自動刷新時間
stats uri /stats #統計頁面url
stats realm XingCloud\ Haproxy #統計頁面密碼框上提示文本
stats auth username:password #統計頁面用戶名和密碼設置
stats hide-version #隱藏統計頁面上HAProxy的版本信息
########## Eureka-Server 配置###############
listen Eureka-Server
#綁定端口
bind 0.0.0.0:18761
mode http
#負載策略(最少調用)
balance leastconn
maxconn 50
log 127.0.0.1 local0 debug
#每隔五秒對服務進行健康檢查, 兩次成功表示可用, 三次失敗表示服務不可用
server showname xx.xx.xx.xx:8761 weight 1 check inter 2000 rise 2 fall 3
########## Hystrix-Dashboard 配置###############
listen Hystrix-Dashboard
#綁定端口
bind 0.0.0.0:19999
mode http
#負載策略(最少調用)
balance leastconn
maxconn 50
log 127.0.0.1 local0 debug
#每隔五秒對服務進行健康檢查, 兩次成功表示可用, 三次失敗表示服務不可用
server showname xx.xx.xx.xx:9999 weight 1 check inter 2000 rise 2 fall 3
########## Redis-Server配置 ###############
listen Redis-Server
#綁定端口
bind 0.0.0.0:16379
mode tcp
#負載策略(最少調用)
balance leastconn
maxconn 50
log 127.0.0.1 local0 debug
#每隔五秒對服務進行健康檢查, 兩次成功表示可用, 三次失敗表示服務不可用
server redis xx.xx.xx.xx:6379 weight 1 check inter 2000 rise 2 fall 3
########## Jenkins配置 ###############
listen Jenkins
#綁定端口
bind 0.0.0.0:18080
mode http
#負載策略(最少調用)
balance leastconn
maxconn 20
log 127.0.0.1 local0 debug
#每隔五秒對服務進行健康檢查, 兩次成功表示可用, 三次失敗表示服務不可用
server tomcat xx.xx.xx.xx:8080 weight 1 check inter 2000 rise 2 fall 3
########## MySQL配置 ###############
listen MySQL
#綁定端口
bind 0.0.0.0:13306
mode tcp
#負載策略(最少調用)
balance leastconn
maxconn 50
log 127.0.0.1 local0 debug
#每隔五秒對服務進行健康檢查, 兩次成功表示可用, 三次失敗表示服務不可用
server mysql xx.xx.xx.xx:3306 weight 1 check inter 2000 rise 2 fall 3
load
haproxy -c -f /etc/haproxy/haproxy.cfg
sudo service haproxy restart