實驗環境:
4臺Linux服務器,兩臺做Web服務器,1檯安裝HAProxy,1臺做客戶端,實現如下功能:
- 客戶端訪問HAProxy,HAProxy分發請求到後端Real Server
- 開啓HAProxy監控頁面,及時查看調度器狀態
- 設置HAProxy爲開機啓動
一 web1 和web2服務器的配置:
1.配置apache-保證頁面能訪問
2.配置web1和web2的rip分別爲:192.168.2.100 192.168.2.200
二 部署HAProxy服務器
HAProxy服務器需要配置 DIP爲:192.168.4.5,VIP爲:192.168.2.5
1)配置網絡,安裝軟件
- [root@haproxy ~]# echo 'net.ipv4.ip_forward = 1' >> sysctl.conf //開啓路由轉發
- [root@haproxy ~]# sysctl -p
- [root@haproxy ~]# yum -y install haproxy
2)修改配置文件
- root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
- global
- log 127.0.0.1 local2 ###[err warning info debug]
- chroot /usr/local/haproxy
- pidfile /var/run/haproxy.pid ###haproxy的pid存放路徑
- maxconn 4000 ###最大連接數,默認4000
- user haproxy
- group haproxy
- daemon ###創建1個進程進入deamon模式運行
- defaults
- mode http //http網站代理,默認的模式mode { tcp|http|health (健康檢查)} log global #採用全局定義的日
- option dontlognull ###不記錄健康檢查的日誌信息
- option httpclose ###每次請求完畢後主動關閉http通道
- option httplog ###日誌類別http日誌格式
- option forwardfor ###後端服務器可以從Http Header中獲得客戶端ip
- option redispatch ###serverid服務器掛掉後強制定向到其他健康服務器
- timeout connect 10000 #如果backend沒有指定,默認爲10s
- timeout client 300000 ###客戶端連接超時
- timeout server 300000 ###服務器連接超時
- maxconn 60000 ###最大連接數
- retries 3 ###3次連接失敗就認爲服務不可用,也可以通過後面設置
- listen stats 0.0.0.0:1080 #監聽端口
- stats refresh 30s #統計頁面自動刷新時間
- stats uri /stats #統計頁面url
- stats realm Haproxy Manager #統計頁面密碼框上提示文本
- listen webs 192.168.4.5:80
- balance roundrobin //vim /usr/share/doc/haproxy-1.5.18/configuration.txt ,可以查看算法
- server web1 192.168.2.200:80 check inter 2000 rise 2 fall 5 //2000ms檢查一次,如果連接5次以後還是失敗的則認爲該 服務器壞了,當服務器恢復時,將來連接2次後確定服務器是好的
- server web2 192.168.2.200:80 check inter 2000 rise 2 fall 5
三。啓動服務器並設置開機啓動
1.[root@haproxy ~]# systemctl start haproxy 2.[root@haproxy ~]# systemctl enable haproxy
客戶端驗證:
客戶端配置與HAProxy相同網絡的IP地址,並使用火狐瀏覽器訪問http://192.168.4.5,測試調度器是否正常工作,(配置文件中的藍色字體關聯)
curl http://192.168.4.5 會輪詢出現web1 web2 的配置文件
客戶端訪問http://192.168.4.5:1080/stats測試狀態監控頁面是否正常。訪問狀態監控頁的內容(配置文件中紅色字體相關聯)