构建高可用负载均衡—CentOS6.4+Haproxy+Keepalive
1、实验拓扑如下,这里用NGINX做的基于端口的虚拟主机,方便之后的测试2、安装前准备
Haproxy 国内下载你懂得
Keepalived 下载地址www.keepalive.org
同步时间
1
#ntpdate pool.ntp.org
3、haproxy安装(主备节点安装一样)
1
2
3
4
5
6
7
#tar -zxvf haproxy-1.5.9.tar.gz
#cd haproxy-1.5.9
# uname -a
Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
#make TARGET=linux26 PREFIX=/usr/local/haproxy install
#cd /usr/local/haproxy
# mkdir conf logs
4、创建配置文件信息如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#vim conf/haproxy.cfg
global
log 127.0.0.1 local0//日志输出配置,所有日志都记录在本机,通过local0输出
maxconn5120//最大连接数
chroot /usr/local/haproxy//改变当前工作目录
uid 100//所属用户的uid
gid 100//所属用户的gid
daemon//以后台形式运行haproxy
nbproc 2//创建2个进程进去deamon模式
pidfile/usr/local/haproxy/logs/haproxy.pid//pid文件
defaults
log 127.0.0.1local3
mode http//http七层,tcp4层,health只返回OK
optionhttplog//采用httpd日志格式
optiondontlognull
optionredispatch
retries 3//三次失败认为服务不可用
maxconn 3000//默认的最大连接数
contimeout 5000//连接超时时间
clitimeout 50000//客户端超时时间
srvtimeout 50000//服务器超时时间
stats enable
stats uri /admin//统计页面的url
stats auth admin:admin//统计页面的用户名密码
stats realm Haproxystatistic//统计页面提示信息
stats hide-version//隐藏统计页面版本信息
listen web_proxy *:80
server web1 192.168.1.128:80 check inter 5000 fall 1 rise 2
server web1 192.168.1.128:8080 check inter 5000 fall 1 rise 2
//check inter 5000 是检测心跳频率,rise 2 是2次正确认为服务可用,fall 1 是1次失败认为服务不可用,weight代表权重
5、keepalive安装配置(主备安装一样,注意配置文件的修改)
1
2
3
4
5
6
7
8
9
10
11
# yum -y install openssl-devel
#tar -zxvf keepalived-1.2.13.tar.gz
#cd keepalived-1.2.13
#./configure --prefix=/usr/local/keepalived
#make && make install
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
#chmod +x /etc/init.d/keepalived
#mkdir /etc/keepalived
#ln -sf /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
6、修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost.com
}
notification_email_from root@localhost.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/root/chk_haproxy.sh"//检测脚本
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER //实例的初始状态,备节点为BACKUP
interface eth0
virtual_router_id 51
priority 100//高优先级精选master,至少高backup50
advert_int 1
authentication {
auth_type PASS//认证方式,支持PASS和AH
auth_pass 1111//认证的密码
}
virtual_ipaddress {
192.168.1.200//vip
}
track_script {
chk_haproxy//检测命令
}
}
7、keepalived检测脚本
1
2
3
4
5
6
# cat chk_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A = 0 ] ;then
/etc/init.d/keepalived stop
fi
8、启动keepalived
1
2
3
4
5
6
7
# service keepalived start
报错信息
Starting keepalived: /bin/bash: keepalived: command not found
解决方法
# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
9、验证过程
首先先看下nginx配置
分别启动Master和SLAVE ,看到主备节点日志如下:
Master上可以看到vip信息
之后测试haproxy负载均衡是否正确
看下自动监控页面,发现轮询正常!
之后测试Master的haproxy挂掉了,是否切换
1
#killall haproxy
之后看下keepalived的日志信息,发现主的已经根据脚本停掉了,并且VIP开始漂移
Slave的可以看到已经升为Master并且获得VIP地址
最后在测试访问,均正常!
页:
[1]