Debian

Varnish - 一個站點的多個後端

  • March 27, 2019

Varnish 可以為一個站點配置多個後端嗎?例如,我有具有多個後端的高可用性站點。

例如,我有www.goodies.com一個在 php 5.6 上執行的站點。所以我有 3 個www-nodes作為後端www-node5.6a www-node5.6b www-node5.6c

我在 Varnish 中配置了這樣的後端:

backend www-node5.6a {
   .host = "10.0.0.11";
   .port = "80";
   .connect_timeout = 6000s;
   .first_byte_timeout = 6000s;
   .between_bytes_timeout = 6000s;
}

backend www-node5.6b {
   .host = "10.0.0.12";
   .port = "80";
   .connect_timeout = 6000s;
   .first_byte_timeout = 6000s;
   .between_bytes_timeout = 6000s;
}

backend www-node5.6c {
   .host = "10.0.0.13";
   .port = "80";
   .connect_timeout = 6000s;
   .first_byte_timeout = 6000s;
   .between_bytes_timeout = 6000s;
}

我的問題是,如何配置 Varnish 以便使用者將被隨機使用到此特定站點的任何後端?

如果您想要隨機分發您在配置文件中需要這樣的內容,您正在尋找什麼:

director cl1 random {
  { .backend = [Backend0]; .weight = 1; }
  { .backend = [Backend1]; .weight = 1; }
}

更多關於 Varnish 後端如何工作的資訊可以在這裡找到我從這個部落格中找到了上面的片段。您也可以根據 url 執行此操作,如此處所示您還可以在此處閱讀有關配置 Varnish 以實現高可用性的更多資訊。

您應該考慮進行健康檢查,並在循環模式下設置和定義一個實際的導演。隨機就是隨機。從理論上講,訪問您網站的每個使用者都可以隨機發送到同一個後端,這與根據後端執行狀況和狀態平均分配內容一樣“隨機”。尋找另一個來源,他們有這些方面的東西:

import directors;    

backend [Backend0] {
    .host = "192.168.0.10";
    .probe = {
         .url = "/";
         .timeout = 1s;
         .interval = 5s;
         .window = 5;
         .threshold = 3;
      }
}
backend [Backend1] {
    .host = "192.168.0.10";
      .probe = {
          .url = "/";
          .timeout = 1s;
          .interval = 5s;
          .window = 5;
          .threshold = 3;
      }
}
sub vcl_init {
    new vdir = directors.round_robin();
    vdir.add_backend([Backend0]);
    vdir.add_backend([Backend1]);
 }

根據需要對您的環境中有意義的內容進行更改。請閱讀所有連結和文件,並在嘗試任何操作之前備份您的舊配置。

引用自:https://unix.stackexchange.com/questions/509009