使用Haproxy搭建Web羣集

一.概述

HAProxy 是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟件,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。
Haproxy是一個開源的高性能的反向代理或者說是負載均衡服務軟件之一,它支持雙機熱備、虛擬主機、基於TCP和HTTP應用代理等功能。其配置簡單,維護方便,而且擁有很好的對服務器節點的健康檢查功能(相當於keepalived健康檢查),當其代理的後端服務器出現故障時,Haproxy會自動的將該故障服務器摘除,當服務器的故障恢復後,Haproxy還會自動將該RS服務器加入進來提供服務。
Haproxy特別適用於那些高負載、訪問量很大。但又需要會話保持或七層應用代理的業務。Haproxy運行在普通的服務器硬件上,幾乎不需要進行更多的優化就可以支 持數以萬計的併發連接。並且它的運行模式使得它可以很簡單、安全的整合到各種網站的架構中,同時,haproxy的代理模式,可以使得應用服務器不會暴露到網絡中。

  • haproxy和nginx的區別
  • Nginx特點
    1.支持Http協議,工作在網絡7層
    2.支持通過端口健康檢測
    3.支持強大的正則匹配規則
    4.支持WebSocket協議
    5.支持Http Cache

  • Haproxy特點
    1.支持TCP與Http協議,工作在網絡4層和7層
    2.支持Session共享、Cookies引導
    3.支持通過URL健康檢測
    4.支持8種負載均衡策略
    5.支持心跳檢測

  • HAProxy工作原理

HAProxy實現了一種事件驅動、單一進程模型,此模型支持非常大的併發連接數。多進程或多線程模型受內存限制、系統調度器限制以及無處不在的鎖限制,很少能處理數千併發鏈接。事件驅動模型因爲在有更好的資源和時間管理的用戶端(user-space)實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是爲什麼他們必須進行優化以及使每個CPU時間片(Cycle)做更多的工作。

  • 負載均衡常用的調度算法

RR(Round Robin):算法是最簡單最常見的一種算法,即輪詢調度。

LC(Least Connections):算法即最小連接算法,根據後端的節點連接數大小動態分配前段請求。

SH(Source Hashing):SH基於來源訪問調度算法,此算法用於一些有Session會話記錄在服務器端的場景,可以基於來源IP,Cookie等做羣集調度

二.案例

使用Haproxy搭建Web羣集

使用Haproxy搭建Web羣集

    1. 編譯安裝Nginx1服務器
[root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# useradd -M -s / sbin/nologin nginx
[root@localhost ~]# tar xf nginx-1 .12.0. tar.gz
[root@localhost ~]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usx/1oca1/nginx --user=nginx --group=nginx
[root@localhost nginx-1.12.0]# make && make install

默認安裝目錄: /usr/local/nginx
默認日誌: /usr/local/nginx/logs/
默認監聽: 80。
默認Web目錄: /usr/local/nginx/html

在客戶端訪問http://192.168.1.61/test. html測試,

使用Haproxy搭建Web羣集

(2)搭建Nginx2.
編譯安裝的步驟與Nginx1相同,不同之處在於建立測試頁面。

[ root@localhost html]# echo "Server 192.168.1.62" > test. html

在ke客戶端訪問http://192.168.162/test . html測試

使用Haproxy搭建Web羣集

  • 2.編譯安裝Haproxy
[root@localhost ~]# yum -y install pcre-devel bzip2-deve1
[root@localhost ~]# tar xf haproxy-1.5.19. tar.gz
[root@localhost haproxy-1.5.19]# make TARGET=linux26         //64位系統
[root@localhost haproxy-1.5.19]# make install
  • 3.Haproxy服務器配置
    (1 )建立Haproxy的配置文件,
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy   / /創建配置文件目錄
[root@localhost haproxy-1.5.19]# cp examples/haproxy . cfg /etc/haproxy/

//將haproxy.cfg文件複製到配置文件目錄

(2) Haproxy配置項介紹。

Haproxy配置文件通常分爲三個部分,即global. defaults 和listen。global 爲全局配置,defaults 爲默認配置,listen 爲應用組件配置。

global配置項通常有下面配置參數

global
log 127.0.0.1 local0                  //配置日誌記錄, local0爲日誌設備,默認存放到系統日誌
log 127.0.0.1 locall notice        //notice 爲日誌級別,通常有24個級別
maxconn 4096                         //最大連接數
uid 99                                       //用戶uid
gid 99                                       //用戶gid

defaults配置項配置默認參數.

defaults
log                      global         //定義日誌爲global配置中的日誌定義
mode                  http            //模式爲http 
option                  httplog      //採用http日誌格式記錄日誌
retries 3                                //當服務器負載很高時,自動結束當前隊列處理比較久的連接
maxconn 2000                      //最大連接數
cont imeout         5000          //客戶端超時時間
cont imeout         50000        //服務器超時時間

listen配置項一般配置應用模塊參數。

listen appli4-backup 0.0.0.0:10004     //定義一個appli4-backup的應用
option httpchk / index . html                //檢查服務器的index.html文件
option persist                                      / /強制將請求發送到已經down掉的服務器
balance roundrobin                             //負載均衡調度算法使用輪詢算法
server inst1 192.168.114.56:80 check inter 2000 fall 3   //定義在線節點
server    inst2 192.168.114.56:81 check inter 2000 fall 3 backup                   //定義備份節點

(3) 根據目前的羣集設計,將haproxy, cfg配置文件的內容修改如下。

global
log 127 .0.0.1        loca10
1og 127.0.0.1        local1 notice
#log loghost           local0 info
maxconn 4096
uid 99
gid 99
da emon
#debug
#quiet

defaults

log global
mode                        http 
option httplog            
option dontlognull
retries 3
maxconn            2000
contimeout         5000
clitimeout            50000
srvtimeout          50000

listen webcluster 0.0.0.0:80 .
option httpchk GET / index . html
balance
roundrobin .
serve r
instl 192.168.1.61 :80 check inter 2000 fall 3
serve r
inst2 192.168.1.62:80 check inter 2000 fall 3
  • 4.創建自啓動腳本
[root@localhost haproxy]# cp ~/haproxy-1.5. 19/examp1es/haproxy . init /etc/init
d/haproxy
[root@localhost haproxy]# ln -s /usx/1ocal/ sbin/haproxy /usr/ sbin/haproxy
[root@localhost haproxy]# chmod +x /etc/init. d/haproxy
[root@localhost haproxy]# chkconfig --add /etc/init. d/haproxy
[root@localhost haproxy]# /etc/init. d/haproxy start
Starting haproxy (via systemctl) :
[確定]
[root@localhost haproxy]# systemctl stop firewalld
  • 5. 測試Web羣集

通過上面的步驟,已經搭建完成Haproxy的Web羣集,接下來需要驗證羣集是否工作正常。一
個羣集一般需要具備兩個特性,第- -個是高性能,第二個是高可用。

1)測試高性能
在客戶端使用瀏覽器打開http://192.168.1 60/test .html,瀏覽器顯示信息如圖所示。

使用Haproxy搭建Web羣集

再次打開一個新的瀏覽器頁面訪問http://192.168.1. 60/test.html.瀏覽器顯示信息如圖所示

使用Haproxy搭建Web羣集

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