Ubuntu下使用HAProxy和Keepalived配置Web服务器群集
HAProxy是一个用于4层或7层的高性能负载均衡软件,在大型网站的大型Web服务器群集中,HAProxy可用来替代专业的硬件负载均衡设备,节省大量的开支。
通常情况下,为了避免整个体系中出现单点故障,在至关重要的架构中,都需要部署备份设备,同样,负载均衡设备也不能部署单台,一旦主设备出现问题之后,备份设备可对主设备进行接管。实现不间断的服务,这便是Keepalived的作用。
于是,HAProxy和Keepalived的组合便成了省钱高效的Web服务器负载均衡架构。最近,做了一个小实验,用HAProxy和Keepalived来实现高可用的服务器群集。
如拓扑图所示,本实验中涉及到4台服务器,其中,两台HAProxy服务器(director1和director2)工作在主备模式下,用以对 Client的web访问请求进行分发。IP地址分别为192.168.11.11/24,192.168.11.12/24,虚拟出一个 IP:192.168.11.10/24。
两台WWW服务器(www1和www2)对Client的WWW访问请求进行响应,IP地址分别配置为192.168.11.21/24,192.168.11.22/24。
所有Client的访问请求均被网关做DNAT转换,发送到192.168.11.10上。
配置步骤:
【第一步,安装软件】
分别在director1和director2上安装keepalived和haproxy软件:
分别在director1和director2上编辑/etc/haproxy/haproxy.cfg,配置文件如下:
更多关于HAProxy的语法解释,可以参考这个页面:http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
【第三步,配置Keepalived】
参考这篇文章:Ubuntu下Keepalived 配置
【第四步,启动haproxy】
使用如下命令启动HAProxy:
【第五步,验证】
在Client上打开浏览器,访问地址:http://172.16.2.13,看是否可以打开web服务器的页面,然后关掉一台director,看看访问是否依然正常。
在网关上访问http://192.168.11.10/haproxy-stats,看看是否可以看到负载均衡的统计结果。
【总结】
HAProxy可以完成的事情远不止这些,比如,可以在HAProxy中指定脚本的类型,把不同的访问请求分发到不同的Web服务群集上去,比如, 把所有的.htm访问请求转发到静态群集中,把所有的.php访问请求转发到动态群集中,或者使用正则表达式,实现更高级的功能。
参考这些链接,可得到更多内容:
http://network.51cto.com/art/201110/295955_1.htm
http://www.cnblogs.com/dkblog/archive/2011/07/06/2098949.html
http://saplingidea.iteye.com/blog/628716
http://wenku.baidu.com/view/dc2cde1cfc4ffe473368ab4e.html
通常情况下,为了避免整个体系中出现单点故障,在至关重要的架构中,都需要部署备份设备,同样,负载均衡设备也不能部署单台,一旦主设备出现问题之后,备份设备可对主设备进行接管。实现不间断的服务,这便是Keepalived的作用。
于是,HAProxy和Keepalived的组合便成了省钱高效的Web服务器负载均衡架构。最近,做了一个小实验,用HAProxy和Keepalived来实现高可用的服务器群集。
如拓扑图所示,本实验中涉及到4台服务器,其中,两台HAProxy服务器(director1和director2)工作在主备模式下,用以对 Client的web访问请求进行分发。IP地址分别为192.168.11.11/24,192.168.11.12/24,虚拟出一个 IP:192.168.11.10/24。
两台WWW服务器(www1和www2)对Client的WWW访问请求进行响应,IP地址分别配置为192.168.11.21/24,192.168.11.22/24。
所有Client的访问请求均被网关做DNAT转换,发送到192.168.11.10上。
配置步骤:
【第一步,安装软件】
分别在director1和director2上安装keepalived和haproxy软件:
$sudo apt-get install keepalived $sudo apt-get install haproxy
【第二步,配置HAProxy】
分别在director1和director2上编辑/etc/haproxy/haproxy.cfg,配置文件如下:
global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy daemon nbproc 2 debug defaults log 127.0.0.1 local3 mode http option httplog option httpclose option dontlognull option forwardfor option redispatch retries 2 maxconn 2000 stats uri /haproxy-stats contimeout 5000 clitimeout 50000 srvtimeout 50000 frontend 192.168.11.10 bind *:80 mode http option httplog log global default_backend server_pool backend server_pool balance source option httpchk HEAD /index.html HTTP/1.0 server www1 192.168.11.21:80 weight 5 check inter 2000 rise 2 fall 3 server www2 192.168.11.22:80 weight 3 check inter 2000 rise 2 fall 3在这个配置文件中,比较重要的部分是倒数6行这些配置,stats指定的是HAProxy的一个统计页面,在配置成功之后,可以使用URL直接访问 此页面,获得负载均衡的统计结果,而frontend后边跟的是整个群集对外的IP地址,这里当然是虚拟出来的VIP,default_backend, 用于标注出负载均衡设备后边的服务器群,httpchk指出了对Real Server进行健康检查的网页地址,我这里直接写的就是index.html,就是首页地址,实际上可以在WWW服务器上写一个脚本来进行探测,这样得 到的结果更准确些。使用而server则是整个群集中的所有Real Server,在这里可以指定权重,IP地址等。
更多关于HAProxy的语法解释,可以参考这个页面:http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
【第三步,配置Keepalived】
参考这篇文章:Ubuntu下Keepalived 配置
【第四步,启动haproxy】
使用如下命令启动HAProxy:
$sudo haproxy -f /etc/haproxy/haproxy.cfg启动完成之后,可以使用netstat -lnpt命令,看一下,HAProxy是否已经在监听80端口了。
【第五步,验证】
在Client上打开浏览器,访问地址:http://172.16.2.13,看是否可以打开web服务器的页面,然后关掉一台director,看看访问是否依然正常。
在网关上访问http://192.168.11.10/haproxy-stats,看看是否可以看到负载均衡的统计结果。
【总结】
HAProxy可以完成的事情远不止这些,比如,可以在HAProxy中指定脚本的类型,把不同的访问请求分发到不同的Web服务群集上去,比如, 把所有的.htm访问请求转发到静态群集中,把所有的.php访问请求转发到动态群集中,或者使用正则表达式,实现更高级的功能。
参考这些链接,可得到更多内容:
http://network.51cto.com/art/201110/295955_1.htm
http://www.cnblogs.com/dkblog/archive/2011/07/06/2098949.html
http://saplingidea.iteye.com/blog/628716
http://wenku.baidu.com/view/dc2cde1cfc4ffe473368ab4e.html
沒有留言:
張貼留言