實現基於Keepalived+Haproxy+Varnish+LNMP企業級架構

一:環境介紹

1、操作系統

web網站基於centos7搭建的lnmp的電子商務網站,負載均衡器基於centos6的keepalived+haproxy的架構,緩存服務器是基於centos7的varnish搭建的緩存服務。

2、服務安裝

lnmp:

mariadb-server-5.5.52-1.el7.x86_64

nginx-1.10.2-1.el7.x86_64

php-fpm-5.4.16-42.el7.x86_64

php-mysql-5.4.16-42.el7.x86_64

keepalived+haproxy:

keepalived-1.2.13-5.el6_6.x86_64

haproxy-1.5.18-1.el6.x86_64

Varnish:

varnish-4.0.4-3.el7.x86_64

3.實驗環境

關閉selinux,關閉iptables,時間同步

二:原理及拓撲圖

1、瀏覽器緩存

第一種:首先會判斷瀏覽器是否會有緩存,如果有緩存會判斷是否過期,如果沒有過期就會返回一個200的狀態碼,讀取瀏覽器緩存。

第二種:如果有緩存,並且已經過期,比如說刷新,就會查看Etag值是否發生改變,有last-modified是否發生了改變,如果沒有改變就返回304的狀態讀取瀏覽器的緩存,如果都發生了改變,就返回200的狀態,相當於去服務器拿取資源,跟強制刷新是一個概念。

第三種:強制刷新,直接返回200狀態,去後端拿資源。

2、瀏覽器緩存拓撲圖如下


3、varnish簡介

Varnish是一款高性能的開源HTTP加速器,版本之間的跨度較大,varnish支持VCL的開發語言,較爲複雜,採用了"Page Cache"技術,所有緩存數據都直接從內存讀取(映射),所以更加高速,掉電緩存就沒有了。

4、Keepalived+Haproxy+Varnish+LNMP架構圖

原理:用戶從外面訪問內網的時候會首先經過調度器,然後再經過緩存服務器才能拿到想要訪問的元數據,這個簡單的架構的意就是通過keepalived+haproxy做一個高可用的負載均衡器,然後再通過varnish緩存服務器集羣,查看是否有緩存的資源,如果有緩存就直接拿到資源返回,不再訪問後端server,如果沒有緩存,就去後端拿資源,拿到資源後,會查看頭部信息是否允許緩存,如果允許就緩存下來,然後就返回給用戶。

三:配置文件

1、varnish配置

主配置文件:default.vcl

2、性能配置文件:/etc/varnish/varnish.params

1、RELOAD_VCL=1

設置爲1表示當使用systemctl reload varnish時,會自動重新裝載vcl的配置文件,也就是能夠讓新的配置生效

2、VARNISH_VCL_CONF=/etc/varnish/default.vcl

加載的緩存策略的配置文件路徑

3、VARNISH_LISTEN_ADDRESS=

varnish服務監聽的地址,默認是監聽在本機所有可用的地址上

4、VARNISH_LISTEN_PORT=6081

varnish監聽的端口,因爲varnish要作爲web服務器的反代進行工作時,才能將http的內容緩存,一般要將其改爲80端口,但是實際生產環境中,varnish一般是處於前端調度器的後面,所以可以在前端調度器上將調度的端口改爲此處的端口也可以。

5、VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1

varnish管理接口監聽的地址,監聽在127.0.0.1表示只允許從本機登錄進行管理

6、VARNISH_ADMIN_LISTEN_PORT=6082

varnish管理接口監聽的端口

7、VARNISH_SECRET_FILE=/etc/varnish/secret

varnish管理時的祕鑰文件

8、VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G"

varnish緩存時,使用哪種存儲方式對緩存內容進行存儲,本處是指使用file文件方式,存在

/var/lib/varnish/varnish_storage.bin文件中,總共使用1G大小的空間如果要使用內存緩存,則可以定義爲:"malloc,400M"在很多生產環境還是使用file,但是將文件放在固態硬盤,如果希望性能更好點,放在PCI-E的固態硬盤fution-IO

9、VARNISH_TTL=120

如果後端服務器沒有指明緩存內容的TTL時間,則varnish自身爲緩存定義的TTL時間

10、VARNISH_USER=varnish

VARNISH_GROUP=varnish管理時的祕鑰文件

2、keepalived+haproxy的配置

這個配置很簡單,就不多說明了,可以參考上篇博客。

3lnmp的配置文件

lnmp的架構也很簡單查看之前的博客

四:測試

vip測試:

a5dc41167a92bbcf9d9930b351d478c5.png



緩存服務器訪問:

68599bce5cd4345d71fe97c55ab82d53.png


 


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