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
本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/2051134