使用Haproxy及Nginx搭建Web羣集

什麼是HAProxy?

HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。
本次實驗使用三臺服務器搭建Web羣集,Haproxy作爲調度服務器,兩臺Nginx服務器作爲節點服務器。

實驗環境

主機 系統 IP地址 主要軟件
Haproxy服務器 CentOS-7-x86_64 192.168.100.100 haproxy
Nginx服務器1 CentOS-7-x86_64 192.168.100.110 nginx
Nginx服務器2 CentOS-7-x86_64 192.168.100.120 nginx
客戶端 windows 7 192.168.100.30 IE瀏覽器

使用Haproxy及Nginx搭建Web羣集

編譯安裝nginx服務器

  • 安裝編譯所需的環境
    yum -y install pcre-devel zlib-devel gcc gcc-c++ make 
  • 解壓安裝包,創建管理用戶,編譯安裝
    tar zxf nginx-1.12.0.tar.gz 
    useradd -M -s /sbin/nologin nginx
    cd nginx-1.12.0/
    ./configure \
    --prefix=/usr/local/nginx \   //指定安裝路徑
    --user=nginx \                //指定管理用戶
    --group=nginx                 //指定管理組
    make && make install
  • 創建測試頁面
    在nginx的默認站點裏測試首頁,只需要對默認首頁文件做些更改即可(與nginx2服務器首頁內容有區別即可),或者也可以自己創建測試首頁文件。
  • 啓動nginx服務
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  //創建軟連接,方便管理
    nginx -t                                            //檢查配置文件是否正確
    nginx                                               //啓動服務
    netstat -ntap | grep 80                             //查看服務是否正確開啓

    使用Haproxy及Nginx搭建Web羣集

  • 關閉防火牆
    systemctl disable firewalld.service 
    systemctl stop firewalld.service
    setenforce 0
  • 使用火狐瀏覽器自測
    使用Haproxy及Nginx搭建Web羣集
    nginx2服務器的搭建步驟與nginx1的方法相同,唯一的區別就是首頁的內容,要與nginx1不相同,方便驗證實驗
    使用Haproxy及Nginx搭建Web羣集

    編譯安裝Haproxy服務器

    安裝haproxy軟件

  • 安裝編譯環境
    yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
  • 編譯安裝
    tar zxf haproxy-1.5.19.tar.gz
    cd haproxy-1.5.19/
    make TARGET=linux26     //安裝64位系統
    make install

    配置haproxy服務器

  • 在/etc下創建haproxy/文件夾,將配置文件複製到該目錄下
    mkdir /etc/haproxy
    cp haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/haproxy.cfg 
  • 修改配置文件
    刪除以下兩行內容
    chroot /usr/share/haproxy  //第8行
    redispatch                 //第21行

    將listen部分修改爲以下內容

    listen  webcluster 0.0.0.0:80
        option httpchk GET /index.html 
        //首頁文件名稱根據自身情況寫入,例如之前創建的我首頁文件名稱爲text.html,則此處寫入test.html
        balance roundrobin
        server inst1 192.168.100.110:80 check inter 2000 fall 3
        server inst2 192.168.100.120:80 check inter 2000 fall 3
        //節點服務器地址(nginx1,nginx2地址)

    將啓動腳本複製到/etc/init.d/下,同時將服務添加到chkconfig管理,創建軟連接便於管理

    cp haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
    chmod +x haproxy
    chkconfig --add /etc/init.d/haproxy
    ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
  • 啓動服務
    service haproxy start
  • 關閉防火牆
    systemctl disable firewalld.service 
    systemctl stop firewalld.service
    setenforce 0

    測試web羣集

    在windows 7 客戶端使用ie瀏覽器訪問http://192.168.100.100/,多次涮新,nginx1和nginx2網頁輪換顯示。
    使用Haproxy及Nginx搭建Web羣集
    使用Haproxy及Nginx搭建Web羣集

    haproxy的日誌優化

    Haproxy的日誌默認輸出到系統的syslog中。查看起來不是很方便,爲了更好的管理haproxy的日誌,我們需要將日誌單獨定義出來,方法如下:

  • 修改Haproxy配置文件中關於日誌配置的選項(/etc/haproxy/haproxy.cfg),將Haproxy的info及notice日誌分別記錄到不同的日誌文件中,修改爲如下內容:
    log /dev/log    local0 info
    log /dev/log    local0 notice  //替換第4、第5行內容
  • 修改rsyslog配置
    爲了方便管理,將haproxy相關的配置獨立定義到haproxy.conf,並放到/etc/rsyslog.d/下,rsyslog啓動時會自動加載此目錄下的所有配置文件。
    touch /etc/rsyslog.d/haproxy.conf
    vim /etc/rsyslog.d/haproxy.conf
    if ($programname == 'haproxy' and $syslogseverity-text == 'info')
    then -/var/log/haproxy/haproxy-info.log
    &~
    if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
    then -/var/log/haproxy/haproxy-notice.log
    &~
  • 重啓haproxy服務及rsyslog服務
    service haproxy restart
    systemctl restart rsyslog.service
  • 測試日誌信息
    再次使用客戶機訪問網站,即可在查看到日誌已經成功分離出來。
    使用Haproxy及Nginx搭建Web羣集
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章