使用Haproxy搭建Web羣集

1.案例概述
Haproxy是目前比較流行的一種羣集調度工具,同類的調度工具有很多,如LVS和Nginx。相較而言,LVS性能最好,但搭建相對複雜;Nginx的upstream模塊支持羣集功能,但對羣集節點健康檢查功能不強,性能沒有Haproxy好。

2.案例前置知識
1)HTTP請求
通過URL訪問網站使用的協議是HTTP協議,此類請求一般稱爲HTTP請求。HTTP請求的方式分爲GET方式和POST方式。當使用瀏覽器訪問某一個URL,會根據請求URL返回狀態碼,通常正常狀態碼爲2x x,3x x(如200,301),如果出現異常會返回狀態碼爲4x x,5x x(如400,500)。

2)負載均衡常用調度算法

  • LVS,Haproxy,Nginx最常用的調度算法有三種,如下所述。
  • RR:算法是最簡單最常用的一種算法,即輪詢調度。
  • LC:算法即最小連接數算法,根據後端的節點連接數大小動態分配前段請求。
  • SH:即基於來源訪問調度算法,此算法用於一些有Session會話記錄在服務器的場景,可以基於來源的IP,Cookie等做羣集調度。

3.案例環境
使用Haproxy搭建Web羣集
1)編譯安裝nginx服務器

(1)搭建nginx1,使用nginx-1.12.0.tar.gz安裝包進行編譯安裝。
[root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost media]# tar xf nginx-1.12.0.tar.gz -C /usr/src/
[root@localhost media]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html
[root@localhost html]# echo 111 > test.html    //建立測試頁面
[root@localhost html]# /usr/local/nginx/sbin/nginx   //啓動nginx

2)編譯安裝Haproxy

使用haproxy-1.5.19.tar.gz安裝包進行編譯安裝。
[root@localhost ~]# yum -y install pcre-devel bzip2-devel
[root@localhost media]# tar xf haproxy-1.5.19.tar.gz -C /usr/src/
[root@localhost media]# cd /usr/src/haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26    //64位系統
[root@localhost haproxy-1.5.19]# make install

3)Haproxy服務配置
建立haproxy的配置文件

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/    //將haproxy.cfg文件複製到配置文件目錄

4)Haproxy主配置需改動如下

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg 

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy   //此處需要註釋“#”
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        #redispatch   //此處需要註釋““#”
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
listen  appli4-backup 0.0.0.0:80    //默認所有端口爲80
        option  httpchk GET /index.html    //HTTP的請求方式爲GET
        balance roundrobin
        server  inst1 192.168.1.20:80 check inter 2000 fall 3   //端口更改爲80
        server  inst2 192.168.1.30:80 check inter 2000 fall 3  //BACKUP 表示爲備用服務器

5)創建自啓動腳本

[root@localhost haproxy-1.5.19]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy 
[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start
Starting haproxy (via systemctl):                          [  確定  ]
     最後測試web羣集只需在兩臺nginx服務器上echo兩條測試文件就可以啦!

使用Haproxy搭建Web羣集
使用Haproxy搭建Web羣集

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