psv无敌9号下载地址:利用Haproxy实现WEB高可用性 - 西瓜皮 - 51CTO技术博客

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 20:22:24
利用Haproxy实现WEB高可用性
2010-05-16 15:13:21
标签:HaproxyWEB   [推送到技术圈]
版权声明:原创作品,谢绝转载!否则将追究 法律责任。
阿泰老师曾在群里说过,七层负载的 话,HAproxy要优于Nginx
Haproxy比Nginx强的地方是对后端realserver的健康检查功能,是通过在WWW主目录下设定一个特定文件(如welcome.htm)并定时检查来实现的。还有一个是支持session会话保持功能,即同一个IP只转发到一台服务器上。这个功能LVS有,现在Nginx里有一个第三方扩展模块Nginx_upstream_ivn_route,是基于cookies的session sticky功能(基于cookies的会话保持模块),不过效果如何我暂时还没有测试。
一,         安装Haproxy
tar  –zxvf   haproxy-1.2.17.tar.gz
cd  haproxy-1.2.17
make  TARGET=linux26     #看README,找到自己的系统符合的标志
这样,在该目录下生成了haproxy命令文件
二,配置文件
自己创建配置文件haproxy.cfg如下:
global
maxconn 5120
ulimit-n 65536
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.0:80  # 监听IP及端口,域名是在Web界面显示的标识
listen 123  0.0.0.0:80  #这个123是区别不同的负载名称,因为一个listen定义一个负载池
mode http
stats uri /haproxy   # 监控haproxy状态虚拟目录
stats realm Haproxy\statistics
stats auth gao:gao   # 设置状 态监控的用户名为gao密码为gao
balance roundrobin   # 负载均 衡算法,轮询,1.3.14以上版本支持多种算法
cookie SERVERID insert indirect
option httpclose
option forwardfor
option httpchk HEAD /welcome.htm HTTP/1.0   # 健康检测 每一台的WEB根目录存放
#  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 192.168.109.5:81 cookie app1inst3 check inter 2000 rise 2 fall 5
server APP04 192.168.109.3:80 cookie app1inst4 check inter 2000 rise 2 fall 5
三,        启动
/usr/local/src1/HAproxy/haproxy-1.2.17/haproxy -f  /usr/local/src1/HAproxy/haproxy.cfg
正常启动的话,是什么都不输出的,没 有OK之类反馈
我现在的环境是两台虚拟机 192.168.109.4和192.168.109.3
在192.168.109.4上另设置了一个IP:192.168.109.5,让Apache专门监听这个IP的81端口
在算法是轮询的前提下,测试
[root@xxw HAproxy]# for i in $(seq 10); do curl http://192.168.109.4  ;done
192.168.109.3 It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.5  It is work!
192.168.109.3 It is work!
192.168.109.5  It is work!
192.168.109.3 It is work!
192.168.109.5  It is work!
算法改为source,测试
#!/bin/bash
for ((i=0;i<10;i++))
do curl http://192.168.109.4
done
[root@xxw HAproxy]# sh ~/test/test
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
192.168.109.5  It is work!
1.3.14版本支持以下负载算法:
* 简单的轮询,balance roundrobin;
* 根据请求的源IP,balance source;
* 根据请求的uri,balance uri;
* 根据请求RUL中的参 数,balance url_param
在http://192.168.109.4/hproxy上可以看到详细的状态 (帐户就是haproxy.cfg上的gao:gao)

LVS太笨重了,如果Nginx健康检查好的话,还是转向Nginx吧,尽管配置比HAproxy稍稍复杂
HAproxy 支持双机热备,注意搜集一下这方面的资料,下 一步是测试Nginx的会话保持功能。
本 文出自 “西瓜皮” 博客,谢绝转载!
本文出 自 51CTO.COM技术博客
上一篇初装squid