使用 HAProxy + Nginx 搭建 Web 群集
阿新 • • 發佈:2018-07-25
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/
-默認 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 群集