1、環境
系統版本:CentOS 7
兩臺服務器,一臺裝haproxy+nginx,另外一臺裝nginx:
192.168.1.200(haproxy+nginx)
192.168.1.201(nginx)php
2、安裝HAProxy和Nginx
在192.168.1.200上操做:
一、安裝配置HAProxy:
HAProxy免費版下載地址:https://www.51anidea.com/forum.php?mod=viewthread&tid=1355&extra=page%3D1
二、安裝依賴包:
#yum install -y openssl openssl-devel systemd-devel.x86_64
三、將下載下來的haproxy-2.0.5.tar.gz上傳到服務器,而後解壓:
#tar -zxvf haproxy-2.0.5.tar.gz -C /usr/local/
#cd /usr/local/haproxy-2.0.5/
#mkdir /usr/local/haproxy
#make TARGET=linux-glibc USE_OPENSSL=1 USE_SYSTEMD=1 USE_PCRE=1 USE_ZLIB=1
四、把haproxy安裝到 /usr/local/haproxy 目錄下:
#make install PREFIX=/usr/local/haproxy
五、把haproxy註冊到系統服務:
#vi /usr/lib/systemd/system/haproxy.service
輸入以下內容:
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.targethtml
[Service]
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID前端
[Install]
WantedBy=multi-user.target
保存文件,退出。linux
六、配置haproxy.cfg(haproxy的配置文件):
#mkdir /etc/haproxy
#mkdir /var/lib/haproxy
#chmod 444 /var/lib/haproxy
#vi /etc/haproxy/haproxy.cfgnginx
輸入以下內容:
global #全局配置段。算法
maxconn 4096 #每一個haproxy進程所能接受 #的最大併發鏈接數。
chroot /var/lib/haproxy #設置haproxy的工做目錄,
#確保此目錄爲空且任何用
#戶都不能有寫權限。 提高
#haproxy的安全級別。
uid 99 #運行haproxy進程的用戶id。
gid 99 #運行haproxy進程的組id。
daemon #讓haproxy以守護進程的方式工做 #於後臺。
pidfile /usr/local/haproxy/haproxy.pid #進程的pid文件後端
defaults #默認配置,被frontend,backend,
#listen段繼承使用。瀏覽器
option forwardfor #使後端服務器獲取客戶端的真實IP安全
mode http #haproxy的工做模式服務器
timeout connect 5000 #鏈接超時時間,單位是毫秒。
timeout client 50000 #客戶端超時時間,單位是毫秒。
timeout server 50000 #服務端超時時間,單位是毫秒。
listen stats #定義haproxy監控。
bind 0.0.0.0:9999 #綁定的地址(服務器上的全部地址
#)和端口。
stats enable
log global
stats uri /haproxy-status #訪問haproxy監控的uri(地址)。
stats auth admin:admin #訪問haproxy監控的用戶名和密碼
#(自行設置複雜密碼),用戶名和密
#碼用冒號隔開。
frontend nginx-front #定義前端名稱,前端是提供給用戶
#訪問的。
bind *:2221 #定義監聽的端口。
default_backend nginx-back #對應的後端。
backend nginx-back #後端的名稱。注意,
#與上一行 對應的後端 名稱要一致。
balance roundrobin #定義負載均衡算法爲輪詢。 server nginx-1 192.168.1.200:80 check inter 2000 rise 2 fall 3 #後端服務器1;健康間隔爲2000毫秒,連續2次健 #康檢查成功,則認爲是有效的,
#連續3次健康檢查失敗,則認 #爲服務器宕機。
server nginx-2 192.168.1.201:80 check inter 2000 rise 2 fall 3
#後端服務器2; #間隔 爲2000毫秒,連續2次健康檢查 #康檢查成功,則認爲是有效的,
#連續3次健康檢查失敗,則認
#爲服務器宕機。
保存文件,退出。
3、安裝nginx:
一、安裝nginx的方法參考如下連接:
https://www.51anidea.com/forum.php?mod=viewthread&tid=266&extra=page%3D1
二、編輯nginx的主頁文件:
#vi /usr/share/nginx/html/index.html
清空該文件的內容,輸入如下內容:
200
保存文件,退出。
三、在192.168.1.201上操做:
安裝nginx:
安裝nginx的方法參考如下連接:
https://www.51anidea.com/forum.php?mod=viewthread&tid=266&extra=page%3D1
編輯nginx的主頁文件:
#vi /usr/share/nginx/html/index.html
清空該文件的內容,輸入如下內容:
201
保存文件,退出。
四、在192.168.1.200上操做
關閉防火牆:
#systemctl stop firewalld.service
啓動haproxy:
#systemctl start haproxy
驗證:
#netstat -ntlp
輸出以下結果:
確保 2221(haproxy)、9999(haproxy)、80(nginx) 這幾個端口都處於監聽狀態。
五、訪問haproxy監控頁面:
打開瀏覽器,在地址欄輸入:http://192.168.1.200:9999/haproxy-status
在彈出的驗證對話框中輸入用戶名和密碼admin admin
就打開了haproxy的監控頁面:
4、haproxy+nginx 負載均衡的實驗
一、下面來試驗下haproxy的負載均衡功能。
打開瀏覽器,在地址欄輸入前端地址:http://192.168.1.200:2221/
從上圖能夠看出,訪問到了後端服務器192.168.1.200的nginx。
而後刷新瀏覽器頁面:
從上圖能夠看出,訪問到了後端服務器192.168.1.201的nginx。
不斷刷新瀏覽器頁面,發現頁面會不斷在192.168.1.199和192.168.106的nginx頁面來回切換。(由於設置了haproxy的負載均衡算法爲輪詢)。
三、接下來測試停掉 192.168.1.200的nginx。
打開瀏覽器,在地址欄輸入前端地址:http://192.168.1.200:2221/
能夠發現,訪問到了後端服務器192.168.1.201的nginx。不斷刷新頁面,發現始終訪問的192.168.1.201的nginx。(由於健康檢查發現192.168.1.200:80已宕機,haproxy會自動使用192.168.1.201:80來接受來自前端的訪問請求。)
四、如今把 192.168.1.200的nginx啓動起來。
打開瀏覽器,在地址欄輸入前端地址:http://192.168.1.200:2221/
發現頁面會不斷在192.168.1.200和192.168.1.201的nginx頁面來回切換。(由於健康檢查發現192.168.1.200:80已恢復正常,haproxy會自動使用192.168.1.200:80和192.168.1.201:80來接受來自前端的訪問請求。)