场景很简单:一个前端负载均衡器(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
如果把备用服务器上启用所有访问都跳转到一个维护页面,那么这时候所有源站故障时可自动弹出维护页面