场景很简单:一个前端负载均衡器(lb),两个应用服务器(s1,s2),一个备用应用服务器(s3)。

希望实现:正常情况下是s1和s2提供服务,但这两个服务器都down掉的时候由备用服务器s3提供服务。

作为负载均衡器的选择,我测试了nginx、haproxy和apache,nginx和haproxy都非常容易就实现了上面的需求,apache也有文档说可以,但没有测试成功。

nginx的配置文件如下(配置文件里是一个工作的app服务器,一个backup):

upstream mycluster {
server 192.168.1.240:8888;
server 192.168.1.222:8888 backup;
}


haproxy的配置文件如下(配置文件里是一个工作的app服务器,一个backup):

listen  appli4-backup 0.0.0.0:10004
option  httpchk
#option  httpchk /index.html
option  persist
balance roundrobin
server  inst1 192.168.1.240:8888 check inter 2000 fall 3
server  inst2 192.168.1.222:8888 check inter 2000 fall 3 backup


当然,其实最后我可能haproxy和nginx都不选,而选LVS,如果LVS + keepalived

可以在 keepalived.conf的virtual_server IP port {}里添加

sorry_server IP port


如果把备用服务器上启用所有访问都跳转到一个维护页面,那么这时候所有源站故障时可自动弹出维护页面