一. varnish 下載與安裝
1. 下載:
登陸官網
2. 安裝:
yum install -y varnish-6.4.0-1.el7.x86_64.rpm
二. 配置varnish
配置文件:
查看varnish配置文件
rpm -qc varnish-6.3.1-1.el7.x86_64
查看varnish啓動腳本
vim /usr/lib/systemd/system/varnish.service
查看系統打開最大文件數
sysctl -a | grep file-max
最大文件數無法滿足varnish,這種情況下我們可以通過增加主機內存或將varnish最大文件數改小。
查看系統內存限制
vim /etc/security/limits.conf
啓動服務,查看端口
systemctl start varnish
netstat -antuple | grep varnish
三. varnish 使用
1. 反向代理
修改端口:
這裏改爲80端口,是因爲要做http服務端代理,http默認訪問80端口,不影響客戶感知
在瀏覽器訪問
可以訪問到varnish,現階段因爲當前服務端還沒有數據
配置varnish,將請求交給node2的80端口
vim /etc/varnish/default.vcl
node2主機當前還沒有80端口
在node2上配置httpd服務,啓用80端口
再次訪問瀏覽器,可以獲取到node2上的內容
也就是說我們在訪問node1時,請求被調度到node2上,因此訪問到的是node2中的內容
2. 緩存
修改varnish配置,添加返回信息(http)並說明是讀取緩存還是新數據
vim /etc/varnish/default.vcl
重啓服務
systemctl restart varnish
訪問:
客服論壇400-660-0108
工作時間 8:30-22:00
©1999-2020 北京創新樂知網絡技術有限公司 網絡110報警服務
varnish【緩存服務器和負載均衡】
dsd2333 2020-04-30 11:28:12 62 收藏 原力計劃
Table of Contents
1. varnish下載與安裝
安裝包網上都可以搜索到,這裏我就不贅餘介紹了,這裏我已經將其放在Apache默認發佈目錄下,直接通過lftp連接,使用get下載
將.rpm文件下載好後,就可以直接安裝了,步驟很簡單,就不詳細介紹了,直接貼圖
2. 配置varnish
- 查看配置文件
rpm -qc varnish-6.3.1-1.el7.x86_64 # 查看varnish配置文件
- 查看varnish啓動腳本
vim /usr/lib/systemd/system/varnish.service
最大文件數131072,默認內存限制82MB
- 查看系統打開最大文件數
sysctl -a | grep file-max
最大文件數是97757,很明顯無法滿足varnish,這種情況下我們可以通過增加主機內存或將varnish最大文件數改小。
- 查看系統內存限制
系統內存限制爲64,明顯小於varnish的82
vim /etc/security/limits.conf
- 啓動服務,查看端口
-
systemctl start varnish
-
netstat -antuple | grep varnish
3. varnish使用
反向代理
- 修改端口
這裏改爲80端口,因爲要做http服務端代理,http默認訪問80端口,不影響客戶感知
- 在瀏覽器訪問node1
以發現,可以訪問到varnish,現階段因爲當前服務端還沒有數據
- 配置varnish,將請求交給node2的80端口
vim /etc/varnish/default.vcl
但是node2主機當前還沒有80端口
- 在node2上配置httpd服務,啓用80端口
再次訪問瀏覽器,會發現已經獲取到node2上的內容
也就是說我們在訪問node1時,請求被調度到node2上,因此訪問到的是node2中的內容
緩存
修改varnish配置,添加返回信息(http)並說明是 讀取緩存 還是 新數據
vim /etc/varnish/default.vcl
重啓服務
systemctl restart varnish
- 訪問node1
這是我們第一次訪問,因此沒有命令緩存,顯示的是MISS from varnish cache。
再次訪問:
從第二次訪問開始,內容都是從緩存中讀取的,不需要再次重新從源服務器獲取。
手動清理緩存 (默認120s自動清理緩存)
varnishadm ban req.url "~" /
varnishadm ban req.url "~" /index.html
# / 表示所有緩存
# / index.html 只表示這個頁面
清理完緩存後
3. 請求轉發
添加一個服務器node3,編輯請求轉發模塊,請求都是從node1發出的,經過調度均分到node2或者node3:
當訪問 xxx.dsd.org 時轉化爲 www.dsd.org,訪問的服務器是web1
當訪問 bbs.dsd.org 時訪問的服務器是web2
如果訪問的是其他域名,報錯
重啓varnish
在node3安裝並開啓httpd服務,並修改默認發佈頁面
編輯本地解析文件
vim /etc/hosts
測試
4. 負載均衡
通過負載均衡,使得服務器輪循的接受請求
尋找所需庫文件:
編輯varnish配置文件:
backend:定義好兩個後端
初始化:round_robin()表示輪循接受
定義請求轉發:當訪問 www.dsd.org 時,會輪循訪問兩個服務器
要求不緩存:因爲會產生緩存,沒有辦法看到實際的輪循效果,在這裏設置不緩存
訪問 www. dsd.org 時會做負載均衡分配給 node2 和 node3,而 bbs.dw.org 未做負載均衡
5. CDN推送
下載安裝bansys.zip
編輯配置文件並修改端口號
vim /var/www/html/bansys/config.php
vim /etc/httpd/conf/httpd.conf
訪問node1的8080端口
但是這個時候所有人都能訪問。但是在實際生活中,只能讓部分管理員有權限去推送,這就需要去做權限管理
vim /etc/varnish/default.vcl
編輯一個acl,用來插入允許訪問的ip
在recv中添加和php通信部分
curl -I www.dw.org