使用Haproxy搭建Web羣集


Haproxy是目前比較流行的一種集羣調度工具,與同類集羣調度工具LVSNginx相比,LVS性能最好,可是搭建相對複雜,Nginxupstream模塊支持集羣功能,可是對集羣節點健康檢查功能不強,性能沒有Haproxy好。nginx

LVSHaproxyNginx最經常使用的調度算法有三種,分別是RR(Round Robin)輪詢、LC(Least Connection)最小鏈接數、SH(Source Hashing)基於來源訪問。web


案例環境redis

wKiom1hqAZbT_heAAACGeaO_yT4040.png

單臺Haproxy服務器就能夠實現多臺Web服務器之間的熱備和負載均衡,這裏使用Keepalived保證了Haproxy自己的高可用。算法


1、Haproxy服務器的安裝與配置服務器

1.編譯安裝Haproxy網絡

wKioL1hqAdjiQonmAAACj4xTRh0946.png

安裝兩個支持包負載均衡


wKiom1hqAdnRdAqnAAAHoyJD5Rw008.png

haproxy編譯到內核中ide


wKioL1hqAdmCvpIDAAACajfyeA0553.png

安裝工具


2.Haproxy服務器配置性能

wKioL1hqAdngtYYXAAAClMB61Fo853.png

建立配置文件目錄


wKiom1hqAdmzaMDGAAADLew5bk0684.png

複製源碼包中的配置文件做爲模版進行修改


wKiom1hqAdrR9ljdAAACyym84kI381.png

wKioL1hqAdri5C0jAAAMAxStPCU006.png

wKioL1hqAdqTFIZlAAAIyD0P-3c519.png

wKiom1hqAduSkf73AAAIJhG30Xg421.png

Haproxy配置文件一般分爲三個部分:global(全局配置)、defaults(默認配置)、listen(應用組件配置)。

以示例參數說明以下:

global

log127.0.0.1  local0                    //配置日誌記錄,local0爲日誌設備,默認存放到系統日誌

log127.0.0.1  local1notice              //notice爲日誌級別,一般有24個級別

maxconn  4096                           //最大鏈接數

uid99                                   //所屬運行的用戶UID

gid99                                   //所屬運行的用戶GID

pidfile  /var/run/haproxy.pid           //pid文件存放路徑

daemon                                  //之後臺形式運行haproxy

defaults

logglobal                               //定義日誌爲global配置中的日誌定義

mode  http                             //模式爲http

option  httplog                        //採用http日誌格式概率日誌

option  dontlognull                    //不記錄健康檢查的日誌信息

option  redispatch                     //serverId對應的服務器掛掉後,強制定向到其餘健康的服務器

option  httpclose                      //每次請求完畢後主動關閉http通道

retries3                               //3次鏈接失敗就認爲服務不可用

maxconn  2000                          //最大鏈接數

contimeout  5000                       //鏈接超時時間

clitimeout   50000                     //客戶端超時間

srvtimeout  50000                      //服務器超時時間

listen  webcluster  0.0.0.0:80

            //FrontendBackend的組合體,監控組的名稱,按需自定義名稱,點聽80端口。

option  httpchk  POST /index.htm       //心跳檢測的文件

balance  roundrobin                    //負載調度使用輪詢算法

server  inst1  192.168.1.20:80  check  inter  2000  fall  3

                //服務器定義,check inter 2000表示檢測心跳頻率,fall 33次失敗認爲服務器不可用

server  inst1  192.168.1.21:80  check  inter  2000  fall  3


3.建立自啓動腳本

wKioL1hqAdvR0C4WAAADOJk83-4465.png

複製源碼包中的服務腳本做爲haproxy程序的控制腳本


wKiom1hqAx6gb6gfAAADRGFSeJ8521.png

wKioL1hqAx7xzI8jAAAFU2pE0UI290.png

優化並添加系統服務


wKiom1hqAx6AIIX3AAADq-c-seI871.png

啓動haproxy服務


wKiom1hqAx_ysKZnAAADC-23VZE032.png

開啓iptables防火牆80端口的例外


wKioL1hqAx_iLinfAACaRZ0PuRY789.png

nginx服務器的搭建,這裏再也不演示,爲了測試負載均衡,要在兩臺web服務器上建立不一樣的內容的網頁。

在客戶機上訪問haproxy 01,兩次看到的內容不一樣,說明負載均衡已經實現。

若是要測試高可用,只須要停用一臺nginx服務器,在客戶機上再次訪問haproxy 01,這時候只能看到一種內容的網頁,而且刷行網頁不會出現報錯,說明高可用也已經實現。

 

2、使用keepalived實現Haproxy自己的高可用

1.編譯安裝keepalived

wKiom1hqAx_T2M7oAAAC3gyb4Xg530.png

安裝keepalived以前須要安裝三個支持包


wKioL1hqAx-if44BAAALaPf2vfI663.png

編譯安裝keepalived,使用指定的內核位置對keepalived進行配置,並將安裝路徑指定爲根目錄,這樣就無需額外建立連接文件了。


wKiom1hqAyDxkHCgAAADv1PTeNY966.png

添加系統服務


2.主服務器的配置

wKioL1hqAyCgkALsAAACzFxRhFU127.png

wKiom1hqAyCyf8hfAAAMQ-ceFvM742.png

wKioL1hqA8Szl8bSAAAKX0_3wDo986.png

global_defs{}                     //指定全局參數

router_id                          //指定本服務器名稱

vrrp_instance 實例名稱 { ... }                   //指定VRRP熱備實例

state                              //指定熱備狀態

virtual_router_id                 //虛擬路由器的ID號,每一個熱備組保持一致

priority                          //優先級,數值越大優先級越高

advert_int                        //通告間隔秒數(心跳頻率)

authentication {}                                    //認證信息,每一個熱備組保持一致

auth_type                         //認證類型

auth_pass                         //密碼子串

virtual_ipaddress{}                               //指定漂移地址,能夠有多個


wKioL1hqA8TCinfbAAAE4y3uPHs731.png

重啓keepalived服務


wKiom1hqA8WxTeTwAAAPWasHK-g665.png

haproxy 01上部署完keepalived服務後,查看網卡的信息,發現eth0接口自動添加了VIP地址。


3.備用服務器的配置

haproxy 02上安裝keepalived的過程同樣,只是配置文件中主要有三處不一樣:路由器名稱、熱備狀態、優先級。

wKioL1hqA8bAjGaaAAAET0o7gWc308.png

能夠在haproxy 02上直接複製第一臺的配置文件


wKiom1hqA8bxV2GpAAANdViv1Xs360.png

wKioL1hqA8ax88fvAAAQF0lX0QY313.png

修改這三處便可


wKiom1hqA8fjD6ylAAAElqasDk4994.png

重啓keepalived服務


wKiom1hqA8fjK1gXAAAO1kxgj7E620.png

查看網絡接口信息,發現eth0接口沒有添加VIP地址。


wKioL1hqA8nwZ3z6AACdXkdLVVw298.png

在客戶機訪問VIP的地址,打開兩次後發現一樣能夠實現負載均衡的效果。

若是,要測試haproxy自己的高可用,只要停用haproxy 01,而後在客戶端再次訪問VIP地址便可。


3、Haproxy日誌

Haproxy的日誌默認是輸出到系統的syslog中(即/var/log/message),查看不方便。因此,能夠將其單獨定義出來。

 

1.修改Haproxy配置文件關於日誌配置的選項

wKioL1hqBM-Clo4fAAACTf70RDo494.png

wKiom1hqBNDhSBVSAAACxSModdM819.png

這裏主要是將Haproxyinfonotice日誌分別記錄到不一樣的日誌文件中。

重啓haproxy服務


2.修改rsyslog配置

wKioL1hqBNCw3RkMAAACh5ANPEM119.png

爲了便於管理,將haproxy相關的配置獨立定義到haproxy.conf,並放到/etc/rsyslog.d/下,rsyslog啓動時會自動加載此目錄下的全部配置文件。


wKiom1hqBNDSwp5pAAACjO5Au-M563.png

wKiom1hqBNHxYDlxAAAKE5e4cRw377.png

haproxy.conf中加入以上內容

& ~表示當日志寫入到日誌文件後,rsyslog中止處理這個信息。


wKioL1hqBNGxkEz1AAAFcFo9HdU760.png

重啓rsyslog服務


wKiom1hqBNGyLpgiAAAJpBf0eVo252.png

即時查看日誌信息,在客戶端訪問haproxy 01服務器後,便會彈出新的日誌信息。

相關文章
相關標籤/搜索