Varnish 和 Heartbeat 作为负载均衡器

Varnish 和 Heartbeat 作为负载均衡器

这是我正在尝试完成的设置

这是设置

因此,我想要实现的目标是:用户访问 10.0.0.1,然后将其传递给管理请求的负载均衡器。然后我希望 varnish 能够真正处理该请求。

这是我的 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 相同。此外,我还启用了调试功能以进行测试。当产品准备就绪时,它将被删除。

这是 haresources

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 上没有任何监听)。我知道 varnish 配置有效。我知道心跳配置有效。我只是无法让它们一起工作。有人有什么建议或想法吗?我将不胜感激任何人能提供的任何建议、指导等。谢谢。

答案1

您可以在 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

答案2

好的,基础知识:

  • 你能在其中一台 Varnish 机器上看到 10.0.0.1 的 IP 地址吗?(ip ad show
  • Varnish 是否正确监听了 80 端口和所有 IP 地址?(netstat -tanp

如果这两个是正确的,那么就会发生一些更奇怪的事情:) 我使用了与您类似的解决方案,我曾在这个答案,您可以使用同样的东西,并且只使用 1 个 ip 来实现您想要的相同效果。

答案3

是的。问题似乎是我的 heartbeat haresources 配置中不能有“varnishd”。无论出于什么原因,heartbeat 都讨厌这个。所以 heartbeat 不能完全管理 varnish。但我有一个 cronjob 正在运行一个脚本来查看 varnish 是否正在运行。如果没有,请重新启动它。

相关内容