本實驗我們用的是ubuntu16.5,我們公司最近要做一部分的應用利用haproxy進行負載均衡, HAProxy厲害的點,不需要web站點的健康檢測,軟件本身可以檢測出服務停止,然後切換到正常的服務器上,而且當服務器重啓之後,HAProxy不需要重啓,也能識別並且切換上去
1 首先確保環境安裝了gcc
yum install -y gcc
2 我們下載的是1.8的版本,官網提供很多最新版的
wget http://haproxy.org/download/1.8/src/haproxy-1.8.27.tar.gz
tar -zxvf haproxy-1.8.27.tar.gz
cd haproxy-1.8.27
sudo make TARGET=generic PREFIX=/usr/local/haproxy //( TARGET 是linunx的版本號可以用uname -r看到,如果你不清楚填generic,PREFIX是安裝目錄 )
sudo make install
3 配置服務
配置haproxy.cfg /usr/local/haproxy/目錄下沒有haproxy.cfg文件,要從安裝目錄拷過去
cp /var/local/haproxy-1.8.27/haproxy.cfg /usr/local/haproxy/haproxy.cfg
配置haproxy.cfg
global ### 全局設置 本臺服服務器(haproxy-server的IP:192.168.1.205)
log 127.0.0.1 local0 #存儲日誌目錄別名
log 127.0.0.1 local1 notice #存儲日誌級別(notice,info,error)
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy ##這個目錄如果沒有,要新建 sudo mkdir /usr/share/haproxy
uid 99
gid 99
daemon
pidfile /usr/local/haproxy/haproxy.pid
#debug
#quiet
defaults ##默認配置
log global
mode http
option httplog
option dontlognull
option forwardfor
option httpclose
stats uri /haproxy-admin #haproxy 監控頁面的訪問地址
stats auth admin:adminadmin
stats hide-version
retries 3
#redispatch
maxconn 2000
# contimeout 5000
#clitimeout 50000
# srvtimeout 50000
timeout connect 5s
timeout client 5s
timeout server 5s
frontend http-in #定義進入端名字爲 http-in 所謂前端(用戶直接訪問到的主機)定義
bind *:80
mode http
option httplog
log global
default_backend htmpool
backend htmpool #定義後端(躲在haproxy後面真正業務處理的主機)
balance leastconn ##輪循算法
server web1 192.168.206.138:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3
server web2 192.168.206.137:80 cookie 2 weight 5 check inter 2000 rise 2 fall 3
4 啓動服務
sudo haproxy -f /usr/local/haproxy/haproxy.cfg
查看服務是否啓動
ps ef | grep haproxy
這就表明haproxy已經啓動了。
接下來就是驗證的時候
打開瀏覽器http://192.168.206:139
再刷新
後續可以通過web的管理界面管理節點的健康狀態