nginx反代+varnish緩存+後端LAMP平臺集群實現
? nginx服務器:
? ? ?第一臺nginx本機IP:
? ? ? ? eno16777736:192.168.72.2
? ? ? ? eno33554976:172.16.25.1
? ? ?第二臺nginx本機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掌控。
? ? ?nginx反代配置:
? ? ?172.16.25.77為後端varnish的IP,使用proxy_pass的方式反代,實際上再加一臺varnish服務器
? ? ?只需要修改upstream中的內容,使用hash一致性算法對varnish進行高可用。
? ? ?
? ? ?
? ? ?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配置在這裏就不多說了;
? ? 運行結果:
? ? ?訪問靜態資源
? ? ?
? ? ?訪問動態資源
? ? ??
? ? ? ?訪問phpMyAdmin
? ? ? ?
? ? ? ??
nginx反代+varnish緩存+後端LAMP平臺集群實現