標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) FI (57) File Transfer (1) Firefox (2) FM (2) fourjs (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (3) JavaScript (22) jQuery (6) JSON (1) K3b (1) LED (3) Linux (112) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) Oracle (125) Outlook (3) PDF (6) Perl (59) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (1) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (22) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (33) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) youtube (1) yum (2)

2013年6月13日 星期四

Ubuntu下使用HAProxy和Keepalived配置Web服务器群集



Ubuntu下使用HAProxy和Keepalived配置Web服务器群集

HAProxy是一个用于4层或7层的高性能负载均衡软件,在大型网站的大型Web服务器群集中,HAProxy可用来替代专业的硬件负载均衡设备,节省大量的开支。
通常情况下,为了避免整个体系中出现单点故障,在至关重要的架构中,都需要部署备份设备,同样,负载均衡设备也不能部署单台,一旦主设备出现问题之后,备份设备可对主设备进行接管。实现不间断的服务,这便是Keepalived的作用。
于是,HAProxy和Keepalived的组合便成了省钱高效的Web服务器负载均衡架构。最近,做了一个小实验,用HAProxy和Keepalived来实现高可用的服务器群集。

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

沒有留言:

張貼留言