nginx反代varnish緩存服務器實現後端amp動靜分離架構

1.前端nginx做調度器及反代服務器,將用戶的請求調度至後端的兩臺varnish,緩存調度算法使用一致性hash算法保證緩存命中率;

2.兩臺varnish反向代理用戶請求至三個(組)後端主機,分別爲存儲靜態資源(htm,html,css,js),應用程序服務器(可以部署wordpress或Discuz!),圖片統一保存至圖片服務器;

3.用戶登錄後,可以通過wordpress發佈新的博文,並且可以上傳圖片;

4.如果後端主機全部宕機,varnish可以使用過期緩存響應客戶端;

             

實驗規劃:

director1:    172.16.1.4 nginx+keepalived 主

director2:    172.16.1.2 nginx+keepalived 備

varnish1:     172.16.1.5

varnish2:     172.16.1.6

static server:  172.16.1.10

php server:   172.16.1.3

 

拓撲圖

blob.png

一、配置兩臺nginx調度器主機

 

director1的keepalived配置

11111.PNG  

director2的keepalived配置

22222.PNG

兩臺nginx的配置

 

在nginx.conf配置文件中的http段內添加upstream內容,將後端兩臺varnish服務器加入到該upstream中,同時做一致性hash算法保證緩存命中率。

後端健康狀態檢查設置:max_fails=1設定Nginx與服務器通信的嘗試失敗的次數。在fail_timeout參數定義的時間段內,如果失敗的次數達到此值,Nginx就認爲服務器不可用。在下一個fail_timeout時間段,服務器不會再被嘗試。

33333.PNG 

 

二、兩臺varnish主機的配置

 

更改varnish的監聽端口爲80

[root@varnish1 ~]# vim /etc/varnish/varnish.params

VARNISH_LISTEN_PORT=80

 

varnish配置文件內容

[root@varnish1 ~]# vim /etc/varnish/default.vcl

4444.PNG

5555.PNG


編譯使配置生效

 

[root@varnish1 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

200       

-----------------------------

Varnish Cache CLI 1.0

-----------------------------

Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit

varnish-4.0.5 revision 07eff4c29

 

Type 'help' for command list.

Type 'quit' to close CLI session.

 

vcl.list

200       

available       0 boot

active          0 myconf3

 

varnish> vcl.load conf1 default.vcl

200       

VCL compiled.

 

vcl.use conf1

200       

VCL 'conf1' now active

 

vcl.list

200       

available       0 boot

available       0 myconf3

active          0 conf1

 

三、後端wordpress主機配置

 

wordpress的主要如下步驟,詳細步驟不做贅述

 

下載安裝配置wordpress

cp wp-config-sample.php wp-config.php

 

數據庫配置

MariaDB [(none)]> create database wordpress;

MariaDB [(none)]> grant all on wordpress.* to 'wpuser'@'172.16.%.%' identified by '123456';

MariaDB [(none)]> flush privileges;

 

 

在動態主機的/var/www/html/下創建health.php用於動態健康狀態檢查

<h1>DynamicServer is Health.</h1>

 

在靜態主機的/var/www/html/下創建health.html用於靜態健康狀態檢查

<h1>StaticServer is Health.</h1>

 

四、測試

對後端主機健康狀態檢查

 

[root@varnish1 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

200       

-----------------------------

Varnish Cache CLI 1.0

-----------------------------

Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit

varnish-4.0.5 revision 07eff4c29

 

Type 'help' for command list.

Type 'quit' to close CLI session.

 

backend.list

200       

Backend name              Refs   Admin      Probe

default(127.0.0.1,,8080)       2      probe      Healthy (no probe)

dynamic(172.16.1.10,,80)       1      probe      Healthy 3/3

static(172.16.1.3,,80)        1      probe      Healthy 3/3

 

 

客戶端登陸keepalived生成的虛擬ip地址172.16.1.100

 

第一次查看靜態頁面,未緩存X-Cache爲miss

blob.png

 

刷新一下,緩存服務器就緩存了X-Cache爲HIT

blob.png

 

查看動態頁面

blob.png

登陸wordpress可以看到剛纔正常上傳圖片的博客

blob.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章