RHEL / CentOS 用 HAProxy 實現網站平衡負載

HAProxy 是一套開源的高效能網站平衡負載工具, HAProxy 可以將如 web server, database server 等負載工作分配到一台以上的主機, 可以增強整體的效能及穩定性。以下會介紹在 RHEL 及 CentOS 安裝及配置 HAProxy 的方法。

以下會以 CentOS 6.7 作為安裝平台, 系統的 IP 是 192.168.1.100, Hostname 是 web.testing.com.

另外假設已經安裝好 3 台用作分流的 Client Web Servers, 假設 IP 及 Hostname 資料如下:

IP: 192.168.1.101 (hostname: web01.testing.com)
IP: 192.168.1.102 (hostname: web02.testing.com)
IP: 192.168.1.103 (hostname: web03.testing.com)

安裝 HAProxy

在 CentOS 安裝 HAProxy 最簡單的方法是透過 YUM 直接安裝:

# yum install haproxy openssl-devel

安裝 HAProxy 後, 需要修改一些設定, HAProxy 的設定檔位置是 /etc/haproxy/haproxy.cfg, 以下是配置 HTTP 及 HTTPS 平衡負載的例子, 裡面的 IP 地址需要根據 Client Web Servers 的 IP 更改:

設定了分流的 Client Web Serers 的 IP 後, 啟動 HAProxy 及設定開機自動執行:

# service haproxy restart
# chkconfig haproxy on

接著要用 iptables 開啟 80 及 443 埠號:

# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 443 -m state –state NEW,ESTABLISHED -j ACCEPT

如果是 RHEL 及 CentOS 7 要用 firewall-cmd 開啟

# firewall­cmd ­­permanent ­­zone=public ­­add­port=80/tcp
# firewall­cmd ­­permanent ­­zone=public ­­add­port=443/tcp
# firewall­cmd ­­reload

要測試 HAProxy 平衡負載是否正確執行, 可以分別在 3 台分流主機上的 DocumentRoot 位置放置一個測試的 HTML 檔, 以下是測試 HTML 檔的內容:

然後用瀏覽器嘗試連接到安裝 HAProxy 的主機, 以上例子是 http://192.168.1.100, 如果可以看到以上的 “HAProxy Testing Page” 測試頁面, 那便表示運作正常了。

要存取 HAProxy 的統計資料, 可以透過以下網址查閱, 登入用戶名稱為 “haproxy”, 密碼為 “redhat”:

http://192.168.1.100/stats




Leave a Reply