基于Haproxy+Keepalived构建高可用负载均衡集群
Posted zhiyuan-yu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Haproxy+Keepalived构建高可用负载均衡集群相关的知识,希望对你有一定的参考价值。
1、在Nginx1/2上编译安装nginx服务
1.1 首先安装nginx1
[root@Nginx-1 ~]
# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
[root@Nginx-1 ~]
# useradd -M -s /sbin/nologin nginx
[root@Nginx-1 ~]
# tar xf nginx-1.6.2.tar.gz -C /usr/src
[root@Nginx-1 ~]
# cd /usr/src/nginx-1.6.2
[root@Nginx-1 nginx-1.6.2]
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
[root@Nginx-1 nginx-1.6.2]
# cd /usr/local/nginx/html/
[root@Nginx-1 html]
# echo "server 192.168.200.103" > index.html
[root@Nginx-1 html]
# /usr/local/nginx/sbin/nginx
[root@Nginx-1 html]
# netstat -anpt |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4503
/nginx
1.2 安装Nginx2, 同Nginx1搭建方式是一样的。
与Nginx1唯一不同的是:
[root@Nginx-2 html]
# echo "server 192.168.200.104" > index.html
2、安装Haproxy-1与Haproxy-2 两台机器配置一致:
[root@Haproxy-1 ~]
# yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
[root@Haproxy-1 ~]
# tar xf haproxy-1.4.24.tar.gz -C /usr/src/
[root@Haproxy-1 ~]
# cd /usr/src/haproxy-1.4.24/
[root@Haproxy-1 haproxy-1.4.24]
# make TARGET=linux26 && make install
2.1 Haproxy服务器配置
建立haproxy的配置目录及文件
[root@Haproxy-1 haproxy-1.4.24]
# mkdir /etc/haproxy
[root@Haproxy-1 haproxy-1.4.24]
# cp examples/haproxy.cfg /etc/haproxy/
2.2 haproxy配置项的介绍
haproxy的配置文件通常分为三部分: global(全局配置部分) defaults(默认配置部分) listen(应用组件部分)
[root@Haproxy-1 ~]
# vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
#redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web-cluster 0.0.0.0:80
option httpchk GET
/index
.html
balance roundrobin
server inst1 192.168.200.103:80 check inter 2000 fall 3
server inst2 192.168.200.104:80 check inter 2000 fall 3
2.3 创建自启动脚本
[root@Haproxy-1 ~]
# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
[root@Haproxy-1 ~]
# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@Haproxy-1 ~]
# chmod +x /etc/init.d/haproxy
[root@Haproxy-1 ~]
# /etc/init.d/haproxy start
2.4 客户端访问测试:
用浏览器打开 http://192.168.200.101 打开一个新的浏览器再次访问 http://192.168.200.101
用浏览器打开 http://192.168.200.102 打开一个新的浏览器再次访问 http://192.168.200.102
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
3、编译安装keepalived服务
[root@Haproxy-1 ~]
# yum -y install kernel-devel openssl-devel popt-devel
[root@Haproxy-1 ~]
# tar xf keepalived-1.2.13.tar.gz
[root@Haproxy-1 ~]
# cd keepalived-1.2.13
[root@Haproxy-1 keepalived-1.2.13]
# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686 && make && make install
3.1 配置keepalibed 开机启动脚本
[root@Haproxy-1 ~]
# chkconfig --add keepalived
[root@Haproxy-1 ~]
# chkconfig keepalived on
[root@Haproxy-1 ~]
# chkconfig --list keepalived
3.2.1 配置keepalibed 主配置文件
[root@Haproxy-1 ~]
# vim /etc/keepalived/keepalived.conf
! Configuration File
for
keepalived
vrrp_script chk_http_port {
script
"/etc/keepalived/check_haproxy.sh"
interval 2
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.200.254
}
}
3.2.2 第二台Haproxy配置keepalibed 主配置文件
[root@Haproxy-2 ~]
# cat /etc/keepalived/keepalived.conf
! Configuration File
for
keepalived
vrrp_script chk_http_port {
script
"/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.200.254
}
}
4、两台机器上都配置haproxy检测脚本
[root@Haproxy-1 ~]
# cat /etc/keepalived/check_haproxy.sh
#!/bin/bash
num=`
ps
-C haproxy --no-header |
wc
-l`
if
[ $num -
eq
0 ]
then
systemctl restart haproxy
sleep
3
if
[ `
ps
-C haproxy --no-header |
wc
-l` -
eq
0 ]
then
systemctl stop keepalived
fi
fi
[root@Haproxy-1 ~]
# chmod +x /etc/keepalived/check_haproxy.sh
[root@Haproxy-1 ~]
# systemctl start keepalived
5.1、测试VIP地址
[root@Haproxy-1 ~]
# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link
/ether
00:0c:29:cc:18:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.101
/24
brd 192.168.200.255 scope global eth0
inet 192.168.200.254
/32
scope global eth0
inet6 fe80::20c:29ff:fecc:18a2
/64
scope link
valid_lft forever preferred_lft forever
[root@Haproxy-1 ~]
# /etc/init.d/keepalived stop
[root@Haproxy-2 ~]
# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link
/ether
00:0c:29:fd:8a:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.102
/24
brd 192.168.200.255 scope global eth0
inet 192.168.200.254
/32
scope global eth0
inet6 fe80::20c:29ff:fefd:8a4e
/64
scope link
valid_lft forever preferred_lft forever
5.2、测试Haproxy健康检查
[root@Haproxy-1 ~]
# service haproxy stop
Shutting down haproxy: [确定]
[root@Haproxy-1 ~]
# service haproxy status
haproxy (pid 59717) 正在运行...
5.3 网页测试:
用浏览器打开 http://192.168.200.254
再次打开一个新的浏览器再次访问 http://192.168.200.254
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
以上是关于基于Haproxy+Keepalived构建高可用负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章
keepalived + haproxy + mysql 构建高可用数据库
Nginx高可用集群构建(Keepalived+Haproxy+Nginx)