varnish 是一个高效的 HTTP accelerator, 目前的稳定版本是 1.1.1 不过有个大 bug,预计下下周就会出 1.1.2
目前正在开发的 2.0 版本有一些非常有意思的改进,最重要的就是对 load balancing 的支持。 从目前的 trunk 里面可以看到,其功能已经基本实现,目前支持 round robin 和 weighted random 两种算法对后端进行负载均衡,同时对后端服务器也有简单的健康检查机制。
负载均衡的一组后端在 vcl 中也是一个 backend, 不过有较特殊的定义语法。
backend_round_robin rr {
set backend.set = {
{ "foo1.bar.com", "http" }
{ "foo2.bar.com", "http" }
{ "foo3.bar.com", "http" }
};
}
这就定义了一个名字为 rr 的 backend, 它对应的是一组使用 round robin 算法负载均衡的后端
backend_random rrr {
set backend.set = {
{ "foo1.bar.com", "http", 0.3 }
{ "foo2.bar.com", "http", 0.6 }
{ "foo3.bar.com", "http", 0.1 }
};
}
这则是定义了一个名字为 rrr 的backend, 它对应的是一组使用 weighted random 算法负载均衡的后端,花括号中的小数是每个后端的权重,可选,默认是每个后端分配相同的权重。
具体参见: #1931
找时间测了一下,功能已经基本可以用,不过测试的过程中 varnish 经常当掉,XD