Linux 使用Haproxy搭建Web群集

2018-07-31 14:43 更新

防偽碼:不必向我解釋色彩,我的眼里自有一片湛藍

          第七章 使用Haproxy搭建Web集群

前言:Haproxy是目前比較流行的一種集群調度工具,同類集群調度工具很多,如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對復雜,Nginx的upstream模塊支持集群功能,但是對集群節(jié)點的檢查功能不強,性能沒有Haproxy好,其官網是http://haproxy.1wt.eu/。本章我們將使用Haproxy搭建一套Web集群,并增加一臺Haproxy做雙機熱備,達到高可用的效果。

一、前置知識點:

1、HTTP請求

請求方式(GET方式和POST方式)

返回狀態(tài)碼:

正常的狀態(tài)碼為2××、3××

異常的狀態(tài)碼為4××、5××

2、負載均衡常用調度算法:

RR(Round Robin):輪詢調度

LC(Least Connections):最小連接數

SH(Source Hashing):基于來源訪問調度

3、常見的web集群調度器

軟件:LVS、Haproxy、Nginx

硬件:F5、梭子魚、綠盟等

二、綜合實驗:使用Haproxy搭建web集群

1、實驗拓撲圖:

2、案例環(huán)境表:

3、 實驗步驟

1) 編譯安裝haproxy

首先安裝兩個支持包

2) haproxy服務器的配置

首先建立haproxy的配置文件

拷貝配置文件的樣本復制到/etc/haproxy目錄下

修改haproxy.cfg配置文件(分為三部分,global為全局,defaults為默認,listen為應用組件)

詳解配置參數:

# this config needs haproxy-1.1.28 or haproxy-1.2.1


global

        log /dev/log    local0 info                                        //日志記錄,local0為日志設備,默認存放到系統(tǒng)日志

        log /dev/log    local1 notice                                    //notice為日志級別,通常有24個級別

        #log loghost    local0 info

        maxconn 4096

        #chroot /usr/share/haproxy

        uid 99                                        //用戶uid

        gid 99                                        //用戶gid

        pidfile /var/run/haproxy.pid                                        //pid文件的路徑以及文件名

        daemon                                        //后臺運行

        #debug

        #quiet


defaults

        log     global                                        //定義日志為global配置中的日志定義

        mode    http                                        //模式為http協(xié)議

        option  httplog                                    //采用http日志格式記錄日志

        option  dontlognull                             

        retries 3                                              //檢查節(jié)點服務器的失敗次數,連續(xù)達到三次則認為節(jié)點不可用

        maxconn 2000                                    //最大連接次數

        contimeout      5000                            //連接超時時間

        clitimeout      50000                            //客戶端超時時間

        srvtimeout      50000                            //服務器超時時間


listen  webcluster 0.0.0.0:80

        option  httpchk GET /index.html                            //檢查服務器的index.html文件

        balance roundrobin                                        //負載均衡調度算法為輪詢

        server  inst1 192.168.1.30:80 check inter 2000 fall 3                 //定義節(jié)點地址和端口,健康檢查三次

        server  inst2 192.168.1.40:80 check inter 2000 fall 3

3)創(chuàng)建自啟動腳本

4) 安裝nginx(以第一臺nginx為例)

剩下的節(jié)點配置一樣,為了測試時看出效果,建議將測試頁的內容不要保持一致

第一臺如圖所示:

第二臺如圖所示:

5) 開啟haproxy服務(防火墻開啟tcp80端口)

6) 測試web群集

首先測試負載均衡,在客戶端上打開http://192.168.1.10

下面再測試一下高可用,我們把第一臺服務器的網卡斷掉,模擬服務器出現(xiàn)故障,如果網頁依然可以訪問,說明群集的高可用沒有問題。

7) 配置haproxy日志

Haproxy的日志默認是保存到系統(tǒng)的syslog中,查看起來不方便,所以我們在生產環(huán)境中可以將日志單獨存儲到不同的文件中,配置如下

首先修改配置文件,主要改下面的部分(這兩行的作用是將info和notice的日志分別記錄到不同的文件中

然后修改rsyslog配置,將haproxy相關的配置獨立定義到haproxy.conf,并放到/etc/rsyslog.d下,rsyslog啟動時會自動加載此目錄下所有的配置文件。

加入以下內容

然后重新啟動rsyslog服務

測試日志信息:

在客戶機訪問網站之后,可以使用tail -f /var/log/haproxy/haproxy-info.log即時查看日志

8)生產環(huán)境中需要對Haproxy進行參數優(yōu)化,以滿足實際生產的要求

參數參數說明優(yōu)化建議
maxconn最大連接數推薦使用10240
daemon守護進程模式Haproxy可以使用非進程守護模式啟動,生產環(huán)境建議使用守護進程模式啟動
nbproc負載均衡的并發(fā)進程數建議與服務器CPU核數相等或成為其2倍
retries重試次數發(fā)量大,設置為2或3次;服務器節(jié)點不多,可以設置為5或6次
option http-server-close主動關閉http請求選項建議在生產環(huán)境中使用此選項,避免由于timeout時間設置過長導致http連接堆積
timeout http-keep-alive長連接超時時間可以設置為10s
timeout http-requesthttp請求超時時間建議設置5-10s,增加http連接釋放速度
timeout client客戶端超時時間如果訪問量大,節(jié)點相應慢,可以將此時間設置短一些,意見設置為1min左右即可

9)為了實現(xiàn)haproxy的高可用,我們可以配置keepalived。

思路:在以上實驗原有的基礎上增加一臺Haproxy服務器,兩臺調度服務器做雙機熱備,

配置好了之后斷掉第一臺Haproxy網站依然可以訪問對了。

為兩臺Haproxy配置虛擬IP地址作為訪問地址:

訪問:

斷開一臺,發(fā)現(xiàn)仍然可以訪問

使用ip addr show dev eth0命令,發(fā)現(xiàn)從Haproxy調度器已成為主調度器

謝謝觀看,真心的希望能幫到您。


本文出自 “一盞燭光” 博客,謝絕轉載!

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號