HAPorxy
集群配置
一
HAProxy
介绍
反向代理服务器
,
支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障
, HAProxy
会自动将该服务器摘除,故障恢复后再自动将该服务器加入。有
Web
图形化的界面,可以查看集群的状态。
新的
1.3
版本后,引入了
frontend,backend,frontend
根据任意
HTTP
请求头内容做规则匹配,然后把请求定向到相关的
backend.
二
网络架构
一般采用的网络结构
(
反向代理
)
三
配置实例
角色
|
操作系统
|
IP
地址及对应域名
|
服务端口
|
HAproxy
|
Redhat Linux AS4
|
eth0 10.0.0 .60/24 dms.sds.com
eth0 10.0.0 .70/24 help.sds.com
eth1 10.0.1 .60/24
|
80
|
APP Server
|
Windows
|
10.0.1
.10—15/24
|
80
|
需要:
1.
访问
dms.sds.com
时,自动分发到集群节点服务器
10.0.1
.10-15/24
这
6
台服务器上。
2.
访问
help.sds.com
时,自动分发到服务器
10.0.1 .15/24
上
(
该服务器上有帮助网站
)
。
四
配置步骤
1.
从
http://haproxy.1wt.eu
下载
HAproxy
最新稳定版
2.
将下载的文件
haproxy- 1.3.15 .1.tar.gz
存放到
Linux
服务器
/usr/share
目录。
3.
解压
tar –zxvf haproxy- 1.3.15 .1.tar.gz
4.
重命名解压后的文件夹
mv haproxy- 1.3.15 .1 haproxy
5.
cd haproxy
6.
make TARGET=linux26 #
本例
Redhat
的内核是
2.6
,请先查看
HAproxy
的
README
7.
make install
8.
安装好后就可以配置了。
9.
vi haproxy.cfg
global
maxconn 5120
chroot /usr/share/haproxy
# haproxy
安装目录
uid 99
gid 99
daemon
quiet
#
通过
nbproc
多设置几个
haproxy
并发进程,这样每个进程的
task_queue
相对就会短很多,性能自然就能提高不少
nbproc 2
#pidfile /var/run/haproxy-private.pid
defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen SDS.DMS.COM 10.0.0 .60:80
#
监听
IP
及端口,域名是在
Web
界面显示的标识
mode http
stats uri /haproxy
#
监控
haproxy
状态虚拟目录
stats realm Haproxy\statistics
stats auth gao:gao
#
设置状态监控的用户名为
gao
密码为
gao
balance roundrobi
n #
负载均衡算法
cookie SERVERID insert indirect
option httpclose
option forwardfor
option httpchk HEAD /welcome.htm HTTP/1.0
#
健康检测
每一台的
IIS
根目录存放
# weblocme.htm
文件
#
下面是节点服务器
server APP01 10.0.1 .10:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server APP02 10.0.1 .11:80 cookie app1inst2 check inter 2000 rise 2 fall 5
server APP03 10.0.1 .12:80 cookie app1inst3 check inter 2000 rise 2 fall 5
server APP04 10.0.1 .13:80 cookie app1inst4 check inter 2000 rise 2 fall 5
server APP05 10.0.1 .14:80 cookie app1inst5 check inter 2000 rise 2 fall 5
server APP06 10.0.1 .15:80 cookie app1inst6 check inter 2000 rise 2 fall 5
listen Help.SDS.Com 10.0.0 .70:80
#
监听
IP
及端口,域名是在
Web
界面显示的标识
mode http
stats uri /haproxy
#
监控
haproxy
状态虚拟目录
stats realm Haproxy\statistics
stats auth gao:gao #
设置状态监控的用户名为
gao
密码为
gao
balance roundrobin
#
负载均衡算法
cookie SERVERID insert indirect
option httpclose
option forwardfor
option httpchk HEAD /welcome.htm HTTP/1.0
#
健康检测
IIS
根目录存放有
# weblocme.htm
文件
#
下面是节点服务器
server APP01 10.0.1 .15:80 cookie app1inst1 check inter 2000 rise 2 fall 5
9.
配置文件写好后就可以启动了。
Ifcfg eth0 add 10.0.0 .70/24
为
eth0
添加第二个
IP
地址
./haproxy –f haproxy.cfg
即可启动程序
.
用
IE
测试
http://sds.dms.com/welcome.htm
,不断刷新是不会显示其它
APP
服务器的
welcome.htm
页面,需要我们关掉
IE
,再次访问
http://sds.dms.com/welcome.htm
即显示另一台,如此反复即可看到每台
APP
上的
welcome.htm
用
IE
测试
http://help.sds.com
也能显示
10.0.0
.15
上的帮助网站。
用
IE
输入
: http://sds.dms.com/haproxy
或
http://help.sds.com/haproxy
输入用户名:
gao
密码:
gao
即可看到
haproxy
的集群状态,如下图
五
配置
haproxy
随
Linux
系统自启动配置
1
.建立一个
haproxy
的
shell
文件,用于控制
haproxy
的启动与关闭
Cd /etc/rc.d/init.d
Vi haproxy
#!/bin/sh
# description: Auto Start and Stop Haproxy Software
# chkconfig: 2345 99 10
start ()
{
cd /usr/share/haproxy
./haproxy -f haproxy.cfg
}
stop ()
{
pid=`ps -ef | grep -v grep | grep haproxy | awk '{print $2}'`
for ps in $pid
do
kill -9 $ps
done
}
case $ 1 in
start) start ;;
stop) stop ;;
*) echo "Use ./haproxy {start|stop}" ;;
esac
exit 0
2. chmod 755 haproxy
3.
添加自启动功能,在
/etc/rc.d/rc.local
文件中添加如下内容
Vi /etc/rc.d/rc.local
ifcfg eth0 add 10.0.0 .70/24
#
为
eth0
添加第
2
个
IP
cd /etc/rc.d/init.d
./haproxy start
#
启动
haproxy
程序
4.
操作
haproxy
的相关命令
cd /etc/rc.d/init.d
./haproxy start
#
启动
haproxy
./haproxy stop
#
停止
haproxy
./haproxy restart
#
重启动
haproxy