Load-Balancing
Varnish 和 Heartbeat 作為負載均衡器
這是我要完成的設置
所以,我想要完成的是:使用者轉到 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 來達到你想要的相同效果。