Haproxy實現多服務器線路負載均衡

           負載均衡最大的作用就是0宕機,可以做到宕機秒切換。Haproxy 會將多個服務器線路進行負載均衡整合,也即用 haproxy 宿主機一個線路,代替了原來多個服務器線路,這樣就不用手動切換了。筆者把Haproxy安裝在阿里雲服務器(ubuntu系統)上,建議使用國內的雲服務器:一方面延時低,另一方面不容易掛掉。

使用haproxy進行多服務器負載均衡的兩個前提條件:

(1)所有的服務器線路的密碼、端口必須一致。

(2)加密方式、協議/混淆也必須一致。

1、更新apt的資源列表

sudo apt-get update

2、安裝haproxy

sudo apt-get install haproxy

3、編輯haproxy文件

sudo vi /etc/haproxy/haproxy.cfg

然後輸入以下配置信息:

global
    log         127.0.0.1 local2
    chroot      /usr/bin
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        nobody
    daemon
defaults
    mode                    tcp
    log                     global
    option                  tcplog
    option                  dontlognull
    option http-server-close
    #option forwardfor      except 127.0.0.0/8
    option                  redispatch
    retries                 2
    timeout http-request    10s
    timeout queue           1m
    timeout connect         3s                                   
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
listen admin_status
    bind 0.0.0.0:1111                  #管理頁面的登錄端口
    mode http                
    stats refresh 30s    
    stats uri  /
    stats auth fzjh:fzjh               #管理頁面的賬號密碼
    #stats hide-version  
    stats admin if TRUE
resolvers mydns
    nameserver dns1 119.29.29.29:53
    nameserver dns2 114.114.114.114:53
    resolve_retries       3
    timeout retry         2s
    hold valid           10s
listen shadowscoks_balance_load
    bind 0.0.0.0:63052                
    mode tcp
    balance roundrobin
	server serA_name 100.2.14.1:63052 weight 200 rise 2 fall 3 check inter 2000 resolvers mydns        #主力服務器
    server serB_name 103.2.14.1:63052 weight 50 rise 2 fall 3 check inter 2000 resolvers mydns backup  #備用服務器
    server serC_name 150.2.14.1:63052 weight 8 rise 2 fall 3 check inter 2000 resolvers mydns backup   #備用服務器
    server serD_name 120.2.14.1:63052 weight 8 rise 2 fall 3 check inter 2000 resolvers mydns backup   #備用服務器
    server serE_name 100.4.14.1:63052 weight 3 rise 2 fall 3 check inter 2000 resolvers mydns backup   #備用服務器
    server serF_name 107.2.14.1:63052 weight 1 rise 2 fall 3 check inter 2000 resolvers mydns backup   #備用服務器
    server serH_name 108.2.34.1:63052 weight 1 rise 2 fall 3 check inter 2000 resolvers mydns backup   #備用服務器

使用vim語法時需要注意:

esc鍵可以在【只讀】和【輸入】 兩種狀態之間切換。ndd:n爲數字,刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列 

輸入完畢後想退出vim可以輸入:wq!,然後按enter鍵

這裏詳細說一下這個配置裏面的各項作用:

3.1 listen admin_status段的參數分析

bind 0.0.0.0:1111是指通過端口1111可以訪問管理頁面,訪問形式是在瀏覽器輸入ip:1111,這裏的ip是指haproxy宿機的ip

stats auth後面是管理頁面的賬號密碼,在stats auth fzjh:fzjh中,賬號是fzjh,密碼也是fzjh

特別注意:如果租用阿里雲服務器,必須要在服務器控制檯裏對防火牆添加如下規則才能訪問63052端口。

 在瀏覽器地址欄輸入haproxy宿主機ip:1111就能看到haproxy的管理頁面了:

3.2 listen shadowscoks_balance_load段的參數分析

serA_name:server後面首先跟名字,名字隨便起唄,自己能夠區分就行。緊接着跟這臺機器的公網IP+端口。

check:是檢測的意思,這段配置很重要。

inter:單位毫秒,我配置的2000,即2000毫秒檢測一次目標服務器。

rise2:設定健康狀態檢查中,某離線的服務器從離線狀態轉換至正常狀態需要成功檢查的次數,這裏我設置的2次。

fall3:確認服務器從正常狀態轉換爲不可用狀態需要檢查的次數,這裏是3次。

weight:權重,值越大代表這臺機器工作的機會越多,這裏我們可以把一臺線路較好的機器的權重設置高一些。

backup:備用服務器,當所有主力服務器掛掉後就會馬上啓用備用服務器

bind 0.0.0.0:63052,指需要使用服務器的63052端口

特別注意:如果租用阿里雲服務器,必須要在服務器控制檯裏對防火牆添加如下規則才能訪問63052端口。

4、重啓haproxy

sudo service haproxy restart

5、其它命令

sudo service haproxy status   #查看haproxy的狀態

sudo service haproxy stop     #停止運行haproxy


卸載方法:
apt-get -y remove haproxy
然後刪掉haproxy的配置文件目錄:
rm -rf /etc/haproxy

啓動:/etc/init.d/haproxy start
停止:/etc/init.d/haproxy stop
重啓:/etc/init.d/haproxy restart
重載:/etc/init.d/haproxy reload
狀態:/etc/init.d/haproxy status

 

 

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