haproxy服務器:
第一臺haproxy本機IP:
eno16777736:192.168.72.2
eno33554976:172.16.25.1
第二臺haproxy本機IP:
eno16777736:192.168.72.3
eno33554976:172.16.25.2
keepalived高可用虛擬IP:
eno16777736:192.168.72.20
eno33554976:172.16.25.100
keepalived配置:
keepalived的配置項在這裏就不再講述了,前面都有講過。主要就是對nginx的狀態進行一個判斷
若nginx down掉了,則將權重值-10,MASTER降爲BACKUP(搶佔模式)。當MASTER中的nginx
啓動後,又會自動成爲MASTER,虛擬IP就由MASTER掌控。
haproxy反代配置:
172.16.25.77爲後端varnish的IP
設置fontend接受所有80端口信息;
直接轉發到關於後端的varnish的backend var1,由varnish進行動靜分離;
設置haproxy stats,stats enable開啓stats,並設置訪問的uri,設置用戶名,密碼,避免其他用戶訪問;
backend var1算法設置爲一致性hash,基於uri的。並轉發到varnish主機,若varnish有多臺,直接增加server即可。
varnish服務器:
IP:172.16.25.77
yum install -y varnish
配置文件/etc/varnish/varnish.param:運行時參數的配置,如varnish線程池得多少,每個線程池的線程數目有多少等。
配置文件/etc/varnish/default.vcl進行編輯:varnish運行的策略庫,根據該策略庫判斷數據是否緩存等。
前端nginx反代到後端時採用的是80端口,所以需要將varnish監聽在80端口這樣才能正確獲取到前端請求。
修改/etc/varnish/varnish.param
將VARNISH_LISTEN_PORT修改爲80端口,原來爲6081,該端口爲服務端口,6082爲管理端口
/etc/varnish/default.vcl配置:
設置反代到後端的兩個主機,可以進行健康狀態監測,如
probe = {
url = /health.html
timeout = 3s
interval = 2s
window = 5
threahold = 3 (5次檢測有三次成功則表示後端RS正常)
}
vcl_purge爲緩存裁剪,對不需要的緩存進行刪除,常用於緩存更新。
vcl_recv爲所有請求數據都必須經過的一個狀態引擎的表示,在這裏對數據進行靜態分離,
當請求的方法爲dele,則表示對該資源進行裁剪,當請求的資源存在.php則表示該資源爲
動態資源,發往動態資源服務器web2,否則發往靜態資源服務器web1.在這裏可以對資
源服務器進行擴展,若動靜態資源服務器有多臺,則可以設置vcl_init
如
vcl_init {
new websrv = directors.backend_roundrobin();
websrv.add_backend(webstat1);
websrv.add_backend(webstat2);
}
將兩臺靜態服務器 都添加至websrv中,類似於nginx中的upstream
調用時使用set req.backend_hint = websrv.backend();即可。
注意:在使用組調度方式時,需要在配置文件頂部添加
啓動varnish服務
systemctl start varnish.service
使用varnishadm加載default.vcl文件
後端RS的LAMP配置在這裏就不多說了;
運行結果:
訪問/myhaproxy
訪問靜態資源
訪問動態資源
訪問phpMyAdmin