Load-Balancing

Varnish 和 Heartbeat 作為負載均衡器

  • May 16, 2011

這是我要完成的設置

這是設置

所以,我想要完成的是:使用者轉到 10.0.0.1 它將它傳遞給管理請求的任何負載均衡器。然後我希望清漆實際處理請求。

這是我的 ha.cf 文件:

debug                           3
debugfile                       /var/log/ha-debug
logfile                         /var/log/ha-log
bcast                           eth0
keepalive                       2
warntime                        5
deadtime                        15
initdead                        30
udpport                         694
udp                             eth0
auto_failback                   yes
node                            loadb1
node                            loadb2

*這與 loadb2 相同。此外,我還啟用了用於測試目的的調試。當它的生產準備好時,它將被刪除。

這裡是資源

loadb1 IPaddr::10.0.11.200/32 varnishd

*同樣,在 loadb2 上也是如此(我也嘗試過讓心跳不管理 IP 以外的任何東西;所以在 haresources 的末尾沒有“varnishd”)

我的清漆配置如下:

backend server1 {
.host = "10.5.0.111";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1 s;
.window = 5;
.threshold = 3;
}
}
backend server2 {
.host = "10.5.0.112";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1 s;
.window = 5;
.threshold = 3;
}
}

director example_director random {
{
.backend = server1;
.weight = 2;
}
{
.backend = server2;
.weight = 1;
}
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?bps101.net$") {
set req.backend = example_director;
}
}

我的心跳工作正常。ip 10.0.0.1 完全可以 ping 通。但是當我在瀏覽器中進入 10.0.0.1 時,我會重置連接。(80 埠沒有監聽)。我知道清漆配置有效。我知道心跳配置有效。我就是不能讓他們一起工作。有沒有人有任何建議或想法?我將非常感謝任何人可以提供的任何建議、方向等。謝謝。

您可以在 resources.d 下製作自己的腳本,以便 heartbeat 可以管理 varnish 守護程序。

一個簡單的解決方案是

#!/bin/bash


case $1 in

   start)

       /etc/init.d/varnish start
   ;;

   stop)

       /etc/init.d/varnish stop
   ;;

   status)

   ;;

esac

您可以在http://foobar.lamp-solutions.de/howtos/lamp-administration/tuning/tuning-einzelansicht/archive/2011/may/article/hoechverfuegbarer-http-loadbalancer-mit-下找到一份德語小手冊 varnish-und-heartbeat-unter-ubuntu-1004.html

好的,基礎知識:

  • 你能在其中一台清漆機器上看到 10.0.0.1 的 IP 地址嗎?( ip ad show)
  • 清漆是否正確偵聽埠 80,所有 IP 地址?( netstat -tanp)

如果這兩個是正確的,就會發生一些更奇怪的事情:) 我使用了與我在這個答案中描述的類似的解決方案,你可以使用相同的東西並且只使用 1 個 ip 來達到你想要的相同效果。

引用自:https://serverfault.com/questions/251428