9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

varnish 4.0 版本

varnish實現動靜分離
  1. # vim /etc/varnish/varnish.params 
  2. VARNISH_LISTEN_PORT=80 --> 修改為80端口
  1. # vim /etc/varnish/default.vcl 
  2. backend html {
  3.     .host = "10.1.249.125";
  4.     .port = "80";
  5. }
  6. backend app {
  7.     .host = "10.1.252.53";
  8.     .port = "80";
  9. }
  10. sub vcl_recv {
  11.     if (req.url ~ "(?i)\.php$") { --> (?i) 不區分字符大小寫
  12.         set req.backend_hint = app;
  13.     } else {
  14.         set req.backend_hint = html;
  15.         }
  16. }
  1. # varnish_reload_vcl default.vcl --> 修改了vcl文件,需要重新編譯
測試訪問
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 

此時可以看到,已經成功實現動靜分離
但是我們也發現了存在一些問題:原來php Logo 的圖標不見了
出現的問題的原因
查看網頁源代碼
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 

修改vcl文件,使其網頁內容能夠完整顯示
  1. sub vcl_recv {
  2.     if (req.url ~ "(?i)\.php") {       --> 將原來.php$ $ 去掉即可
  3.         set req.backend_hint = app;
  4.     } else {
  5.         set req.backend_hint = html;
  6.         }
  7. }
重新編譯vcl文件
  1. # varnish_reload_vcl default.vcl
此處重啟只是為了試驗效果,在實際應用中,varnish一旦重啟,緩存將會全部失效
  1. # systemctl restart varnish
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 




varnish實現負載均衡
vcl文件的修改
  1. import directors; --> 放在vcl 4.0; 后面
  2. backend default {
  3.     .host = "10.1.249.125";
  4.     .port = "80";
  5. }
  6. backend server2 {
  7.     .host = "10.1.252.53";
  8.     .port = "80";
  9. }
  10. sub vcl_init {
  11.     new webapp = directors.round_robin();
  12.     webapp.add_backend(default);
  13.     webapp.add_backend(server2);
  14. }
  15. sub vcl_recv {
  16.     
  17.    set req.backend_hint = webapp.backend();   //順序很重要,順序很重要,順序很重要,放在if 語句的前面
  18.     if (req.url ~ "^/test") {  -->定義在該路徑下的內容不緩存,否則無法看出負載均衡的效果
  19.         return(pass);          -->第一次選中某臺服務器后,后續可能會重緩存中直接返回結果
  20.     }
  21. }
//需要重新編譯vcl文件,此處不再演示
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 



后端服務器健康狀態監測
  1. probe check {       --> 需要寫在兩個后端服務器之前,順序很重要,順序很重要,順序很重要
  2.     .url = "/test/index.html";
  3.     .window = 5;
  4.     .threshold = 4;
  5.     .interval = 2s;
  6.     .timeout = 1s;
  7. }
  8. backend default {
  9.     .host = "10.1.249.125";
  10.     .port = "80";
  11.     .probe = check;
  12. }
  13. backend server2 {
  14.     .host = "10.1.252.53";
  15.     .port = "80";
  16.     .probe = check;
  17. }
//后面和負載均衡調用方式一樣
//注意 probe check 要寫在兩個后端服務器之前
//順序很重要
1、當后端兩個服務器均正常時,可以正常進行調度
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 
2、我們此時停掉server2的 http服務器,可以看到此時檢測到server2 轉態為sick
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

3、測試訪問 
9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

 
無論如何刷新,此時varnish不會再調度到server2上 

原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/59043

(0)
sixijiesixijie
上一篇 2016-11-12
下一篇 2016-11-13

相關推薦

  • 第八周作業

    第八周作業 1、寫一個腳本,使用ping命令推測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主機使用紅色顯示;   #!/bin/bash for i in {1..254};do if ping -c 1 -w 1 192.168.1.$i &> /dev/nu…

    Linux干貨 2017-11-13
  • mysql知識系列–東西比較全

     A。結構化查詢語言(structured query language) B。SQL語句分類  -在MySql數據庫中,SQL語句主要可以劃分以下幾類:  ——DDL(data definition language):數據定義語言,定義對數據庫對象(庫、表、列、索引)的操作  -create,drop,alter,…

    Linux干貨 2017-02-14
  • 用戶和組管理的命令

    用戶管理概念: 用戶類別:         管理員,普通用戶,(系統用戶和登錄用戶) 組類別:         管理組員,普通用戶組         基本組和附加組         私有組,公共組 數…

    Linux干貨 2016-12-21
  • N23-第一周 記流水賬

      機器已經設置好了  屏幕左邊是linux控制臺,屏幕中間放置記事本來記筆記,屏幕右邊是教學視頻,如圖 費我老大勁 筆記本的無線網卡驅動不好弄啊   注重操作實踐,全程跟著操作,一定要照著做,動手啊動手…………..前十五天內容以查漏補缺為主,所以筆記是興之所至,遵循以下原則:&n…

    Linux干貨 2016-09-18
  • 文件查找與解壓縮

    文件查找: which 查找可以執行文件,只搜索$PATH里的目錄 $ which ls /bin/ls which只搜索$PATH里的目錄,如果搜索當前目錄的文件是沒有任何結果的 $ ls -l 總用量 0 -rw-rw-r– 1 huanghao huanghao 0 3月 1 12:24 a.txt $ which a.txt wherei…

    Linux干貨 2017-08-04
  • mongodb及NoSQL入門學習總結

    分布式系統理論 一、 CAP: 分布式系統只能夠,滿足其中兩個? 1.?Consistency :?all nodes see the same data at the same time 一個節點修改后,需馬上復制到第二個節點。如果網絡故障,第二個節點將不能同步第一個節點更新的數據。這就是不能滿足一致性。 2.?Availibility:a guarant…

    2017-09-14
欧美性久久久久