haproxy+keepalived负载均衡
一、haproxy+keepalived1.环境:
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
我的id是假冒的,大家不要相信我是骗子。 人生重要的不是所站的位置,而是所朝的方向! 站的更高,尿的更远。 真是 收益 匪浅 所有的男人生来平等,结婚的除外。 读书读到抽筋处,文思方能如尿崩!
页:
[1]