haproxy是一个很常用的反向代理和负载均衡软件,可以把后端的节点分成普通节点和backup节点,支持后端健康检测和自动切换,效果类似与nginx但是我觉得比nginx更加实用一些。有了haproxy,后端的应用可以不以root启用在80端口,可以选择普通用户在随意一个端口启动,然后用haproxy监听在80端口即可。haproxy还可以作为HTTPS前置,只需在haproxy上配置SSL证书,后端的web节点无需再配置https了。另外haproxy还可以根据url进行路由,将静态资源和动态页面分离开,实现更高层次的负载均衡。
但是如果把路由分发和负载均衡的工作都交给haproxy,那么就会形成一个单点故障点,如果haproxy的主机死机,掉电,宕机,网卡接触不良就会导致整个网络全部无法访问的问题,而keepalived就是专门来处理这个问题的。
我是不推荐让keepalived来接管数据库和大型中间件的,反而用keepalived来接管haproxy和nginx这种轻量级的程序是很合适的。而数据库和web服务可以做成集群的模式来实现热备。以数据库为例,如果主库发生宕机,那么切换到备机的时候往往会碰到很多的事务问题和存储问题,数据库起停本身就会消耗很多时间,如果只是由于网络不稳定造成的keepalived切换,那么主备很有可能彻底乱套,产生互相争夺master的情况,然后可能数据会错乱数据库也无法启动。对于WebSphere和weblogic这种中间件,他们的起停也会消耗很多时间,使用keepalived进行自动启动很可能会碰到挂载磁盘失败导致的问题。所以keepalived接管haproxy这种轻量级的前置应用比较合适。
首先我们找出两台机器,分别安装haproxy,配置文件相同,IP地址不同,然后通过编译的方法安装keepalived,安装方法在Keepalived实现NAT+LVS+后端健康检测已经有说明
服务器 | 真实地址 | 虚拟地址 | 网关地址 |
Keepalived主服务器 | 10.100.100.89 | 10.100.100.200 | 10.100.100.1 |
Keepalived备服务器 |