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 20:39
下一篇 2016-11-13 13:33

相關推薦

  • Linux系統的終端類型

    一、什么是Linux終端     終端–用戶用戶與主機交互,必然要用到的設備。     早期的大型機,想使用的用戶很多,但是主機只有一個,也不可能人手一臺,但是可以做到在主機上接一個分屏器,分屏器的每一個端子上可以接上一套鼠標鍵盤顯示器,就可以直接在主機上進行一些操作了,這就相當于每個人在獨立的操作一臺計算…

    Linux干貨 2016-10-18
  • 包管理一:配置本地ISO的yum源

    故事背景:網上找了一個軟件,但是這個軟件需要依賴光盤上面的基礎包,但是這個服務器又不能上網,怎么辦? 方法:這里推薦配置本地ISO的yum源,然后yum localinstall xxx.rpm 1、yum的配置文件說明 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫…

    Linux干貨 2016-01-05
  • 計算機的組成以及OS的發展歷程

        根據馮諾依曼提出的體系架構,計算機基本上可以分為五大部件。這五大部件分別為運算器,控制器,內存,輸入設備與輸出設備,其中運算器與控制器是CPU的重要組成部分。下面分別介紹這5大部件:     CPU:運算器、控制器、寄存器、緩存      &…

    Linux干貨 2016-10-30
  • N25-第四周

    復制/etc/ske1目錄為/home/tuser1,要求/home/tuser及其內部文件的屬組和其他用戶均沒有任何訪問權限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1[root@localhost ~]# ll -d /home/tuser1/drwxr-xr-x. 2 root root 59 …

    Linux干貨 2016-12-25
  • N22-妙手-第九周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;: #!/bin/bash # declare -i numberOfLoginUser=0 declare -i numberOfUnloginUs…

    Linux干貨 2016-10-19
  • DNS 及 bind的簡單配置

    bind的簡單配置 摘要:DNS  bind簡單配置        FQDN        http://www.www58058.com.  WWW是主機名  .178linux.COM.是私有域名&nbsp…

    Linux干貨 2015-10-18
欧美性久久久久