11ho 发表于 2013-7-5 09:17:13

haproxy+keepalived负载均衡

一、haproxy+keepalived
1.环境:
haproxy-1.3.20
keepalived-1.1.17
2.安装haproxy
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
tar -zxvf haproxy-1.3.20.tar.gz
cd haproxy-1.3.20.tar.gz
make TARGET=linux26 PREFIX=/usr/local/haprpxy
make install PREFIX=/usr/local/haproxy
cd /usr/local/haproxy
mkdir conf
cd conf
vim haproxy.cfg
内如如下:
global
       log 127.0.0.1 local3 info
       maxconn 4096 #单个进程的最大并发连接数
       user nobody
       group nobody
       daemon#进程在后台运行
       nbproc 1#创建一个进程
       pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
       maxconn 2000 #最大连接数
       contimeout 5000 #连接超时
       clitimeout 30000 #客户端超时
       srvtimeout 30000 #服务器超时
       mode http   #http 7层模式
       log   global
       log 127.0.0.1 local3 info
       stats uri /admin?stats #统计页面url
       option forwardfor #后端服务器获取用户IP
listenweb0.0.0.0:80
       mode http
       stats enable
       balance roundrobin #负载均衡的方式
       cookie SERVERID insert indirect nocache #客户端的cookie信息
       option httpclose #每次请求完毕后主动关闭http通道
       option forwardfor
       option httpchk HEAD /index.html HTTP/1.0#健康检查
       server server1 1.1.1.10:80 cookie 1 check inter 2000 rise 2 fall 5
       server server2 1.1.1.20:80 cookie 2 check inter 2000 rise 2 fall 5
#cookie 1 标识serverid为 1
#check inter 2000 检测心跳频率
#rise 2 2次正确认为服务器可用
#fall 5 5次失败认为服务器不可用
有时候我们进入页面http://192.168.4.192/就会报如下错误:
503 Service UnavailableNo server is available to handle this request.

option httpchk HEAD /check.txt HTTP/1.0

此问题出在这句话上面,它的意思是Haproxy会判断你的后端web的根上存在check.txt没有,以此作为haproxy-status的监控状态依据,将它#掉即可;如果是生产环境,你可将check.txt改为index.jsp或index.php即可;

另外,建议配置一个HAProxy的启动、关闭、重启脚本,放在/etc/init.d下,我们在平时的工作中应该养成一个习惯,服务器的启动或重启应该是最简单的,万一到了生产环境下出错时,我们可以以最快的方式启动,如果不用脚本的话,我们就要尝试以如下方式启动:
内如如下:
#!/bin/bash
BASE_DIR="/usr/local/haproxy"
ARGV="$@"

start()
{
echo "START HAPoxy SERVERS"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/conf/haproxy.cfg
}

stop()
{
echo "STOP HAPoxy Listen"
kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)
echo "STOP HAPoxy process"
kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)
}
case $ARGV in

start)
start
ERROR=$?
;;

stop)
stop
ERROR=$?
;;

restart)
stop
start
ERROR=$?
;;

*)
echo "hactl.sh "
esac
exit $ERROR
两台主从配置文档完全一样。
3.安装keepalived
tar fvxz keepalived-1.1.17.tar.gz
yum install kernel-devel openssl-devel -y (不装一会安装会有问题)
ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux 路径用TAB补全,因为内核版本不同
cd keepalived-1.1.17
./configure --prefix=/usr/local/keepalived
make
make install
tar -zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make;make install
安装后,把人家提供好的文件进行对应的复制!
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -pv /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
同样的安装步骤在ld2上执行一次!
/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
       router_id HA1
       }
vrrp_script chk_http_port {
               script "/etc/keepalived/check_haproxy.sh"
               interval 2
               weight 2
       }
vrrp_instance VI_1 {
       state MASTER
       interface eth0
       virtual_router_id 51            
       priority 150                     
       advert_int 1
       authentication {
               auth_type PASS
               auth_pass 1111
               }
track_script {
       chk_http_port
       }
virtual_ipaddress {
1.1.1.1/24            
   }
}
/etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
               /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
               sleep 3
               if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
                      /etc/init.d/keepalived stop
               fi
fi

mm111222 发表于 2013-7-5 18:08:22

我的id是假冒的,大家不要相信我是骗子。

blueice 发表于 2013-7-5 20:21:16

人生重要的不是所站的位置,而是所朝的方向!

q456123 发表于 2013-7-5 22:29:44

站的更高,尿的更远。

liuming794 发表于 2013-7-6 00:19:18

真是 收益 匪浅

轩辕阁 发表于 2013-7-6 11:32:24

所有的男人生来平等,结婚的除外。

renshanshan 发表于 2013-7-6 20:59:11

读书读到抽筋处,文思方能如尿崩!
页: [1]
查看完整版本: haproxy+keepalived负载均衡