1. 程式人生 > >使用 HAProxy + Nginx 搭建 Web 群集

使用 HAProxy + Nginx 搭建 Web 群集

targe chroot listen example tar water obi b- 安裝目錄

HAProxy 是目前比較流行的一種群集調度工具,同類群集調度工具中,同 LVS 對比,LVS 性能最好,但是搭建相對比較復雜,Nginx 的 upstream 模塊支持群集功能,但是對群集節點的健康檢查功能不強,性能沒有 HAProxy 好。

系統環境

主機 IP地址 主要軟件
HAProxy 服務器 192.168.100.200 haproxy-1.5.19.tar.gz
Nginx 服務器1 192.168.100.201 nginx-1.12.0.tar.gz
Nginx 服務器2 192.168.100.202 nginx-1.12.0.tar.gz

開始部署

部署 Nginx 服務器

  • 一、 編譯安裝 Nginx 服務器

    yum install -y pcre-devel zlib-devel gcc gcc-c++ make 
    useradd -M -s /sbin/nologin nginx
    tar zxvf nginx-1.12.0.tar.gz -C /opt
    cd /opt/nginx-1.12.0/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
    make && make install
  • 安裝後的默認信息如下。
    -默認安裝目錄: /usr/local/nginx
    -默認日誌: /usr/local/nginx/logs/

    -默認監聽端口:80
    -默認 Web 目錄: /usr/local/nginx/html

  • 接下來設置測試頁面並啟動 Nginx 服務
    echo "<h1>Server 192.168.100.201</h1>" > /usr/local/nginx/html/test.html
    /usr/local/nginx/sbin/nginx    ##啟動nginx
    systemctl stop firewalld.service
    setenforce 0
  • 為了方便,網站直接使用 IP 地址訪問。在客戶端訪問 http://192.168.100.201/test.html 進行測試。

  • 搭建 Nginx 服務器2的過程和 Nginx 服務器1的編譯安裝步驟相同,不同地方在於建立測試頁面。
    echo "<h1>Server 192.168.100.202</h1>" > /usr/local/nginx/html/test.html

部署 HAProxy 服務器

  • 編譯安裝 HAProxy

    yum install pcre-devel bzip2-devel gcc gcc-c++ make -y
    tar zxvf haproxy-1.5.19.tar.gz -C /opt
    cd haproxy-1.5.19/
    make TARGET=linnux26    ##64位系統
    make install
  • HAProxy 服務器配置

    mkdir /etc/haproxy
    cp examples/haproxy.cfg /etc/haproxy/    ##復制haproxy.cfg 文件復制到配置文件目錄
  • 編輯配置文件
    vim /etc/haproxy/haproxy.cfg
    chroot /usr/share/haproxy  ##刪除兩條語句及所有 listen 項目
    redispatch
    ##添加
    listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html
        balance roundrobin
        server inst1 192.168.100.201:80 check inter 2000 fall 3
        server inst2 192.168.100.202:80 check inter 2000 fall 3
  • 復制自啟動腳本,並啟動服務

    cp /opt/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
  • Windows 客戶端測試(可以看到訪問 HAProxy 服務器地址時,輪詢訪問兩臺 Nginx 服務器)
    技術分享圖片
    技術分享圖片

HAProxy 日誌定義分離

  • HAProxy 日誌默認輸出到系統 syslog 中,查看非常不方便。為了更好的管理日誌,可以將 HAProxy 的 info 訪問日誌和 notice 錯誤日誌記錄到不同的日誌文件中。

  • 修改配置文件

    vim /etc/haproxy/haproxy.cfg
    ##修改為下面的行
    global
        log /dev/log    local0 info
        log /dev/log    local0 notice
  • 修改 rsyslog 配置,並重啟 rsylog 服務

    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 服務器,並查看日誌
    cd /var/log/haproxy/
    cat haproxy-info.log

使用 HAProxy + Nginx 搭建 Web 群集