随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS、Haproxy、Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
Haproxy入门简介
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。负载均衡LVS是基于四层,新型的大型互联网公司也在采用Haproxy,了解了Haproxy大并发、七层应用等,Haproxy高性能负载均衡优点:
- HAProxy是支持虚拟主机的,可以工作在4、7层;
- 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
- 支持url检测后端的服务器;
- 它跟LVS一样,只是一款负载均衡软件,单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
- HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,HAProxy的支持多种算法。
Haproxy+Keepalived企业高性能WEB能够支持千万级并发网站,实现Haproxy高性能WEB网站架构配置步骤如下:
Haproxy安装配置
Haproxy安装配置步骤相对比较简单,跟其他源码软件安装方法大致相同,如下为Haproxy配置方法及步骤:
1.Haproxy编译及安装
cd /usr/src
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.21.tar.gz
tar xzf haproxy-1.4.21.tar.gz
cd haproxy-1.4.21
make TARGET=linux26 PREFIX=/usr/local/haproxy/
make install PREFIX=/usr/local/haproxy
2.配置Haproxy服务
cd /usr/local/haproxy ;mkdir -p etc/
touch /usr/local/haproxy/etc/haproxy.cfg
3.Haproxy.cfg配置文件内容如下
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 99
gid 99
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend http-in
bind *:80
acl is_www.jf1.com hdr_end(host) -i jf1.com
acl is_www.jf2.com hdr_end(host) -i jf2.com
use_backend www.jf1.com if is_www.jf1.com
use_backend www.jf2.com if is_www.jf2.com
default_backend www.jf1.com
backend www.jf1.com
balance roundrobin
cookie SERVERID insert nocache indirect
option httpchk HEAD /index.html HTTP/1.0
option httpclose
option forwardfor
server jf1 192.168.33.11:80 cookie jf1 check inter 1500 rise 3 fall 3 weight 1
backend www.jf2.com
balance roundrobin
cookie SERVERID insert nocache indirect
option httpchk HEAD /index.html HTTP/1.0
option httpclose
option forwardfor
server jf2 192.168.33.11:81 cookie jf2 check inter 1500 rise 3 fall 3 weight 1
4.启动Haproxy服务
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
启动Haproxy报错如下:
[WARNING] 217/202150 (2857) : Proxy 'chinaapp.sinaapp.com': in multi-process mode, stats will be limited to process assigned to the current request.
修改源码配置src/cfgparse.c找到如下行,调整nbproc > 1数值即可:
if (nbproc > 1) {
if (curproxy->uri_auth) {
- Warning("Proxy '%s': in multi-process mode, stats will be limited to process assigned to the current request.\n",
+ Warning("Proxy '%s': in multi-process mode, stats will be limited to the process assigned to the current request.\n",
Haproxy配置文件详解
Hproxy配置文件内容详解如下:
安装Keepalived服务
cd /usr/src ;
wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
tar xzf keepalived-1.2.1.tar.gz
cd keepalived-1.2.1 &&
./configure --with-kernel-dir=/usr/src/kernels/2.6.32-71.el6.x86_64/
make &&make install
DIR=/usr/local/ ;cp DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cpDIR/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived && cp $DIR/sbin/keepalived /usr/sbin/
配置Haproxy+keepalived
Haproxy+keealived Master端keepalived.conf配置文件如下:
! Configuration File for keepalived
global_defs {
notification_email {
xxx@139.com
}
notification_email_from wgkgood@139.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/data/sh/check_haproxy.sh"
interval 2
weight 2
}
# VIP1
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 151
priority 100
advert_int 5
nopreempt
authentication {
auth_typePASS
auth_pass 2222
}
virtual_ipaddress {
192.168.0.133
}
track_script {
chk_haproxy
}
}
创建haproxy脚本
设置可执行权限chmod +x check_haproxy.sh,脚本内容如下:
#!/bin/bash
#auto check haprox process
killall -0 haproxy
if
[[ $? -ne 0 ]];then
/etc/init.d/keepalived stop
fi
Haproxy+keealived Backup端keepalived.conf配置文件如下:
! Configuration File for keepalived
global_defs {
notification_email {
xxx@139.com
}
notification_email_from wgkgood@139.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/data/sh/check_haproxy.sh"
interval 2
weight 2
}
# VIP1
vrrp_instance VI_1 {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 151
priority 90
advert_int 5
nopreempt
authentication {
auth_typePASS
auth_pass 2222
}
virtual_ipaddress {
192.168.0.133
}
track_script {
chk_haproxy
}
}
测试Haproxy+Keepalived服务
手动kill掉131的haproxy进程后,130的keepalived后台日志显示如下,并且访问133 VIP正常访问,提供服务,则证明Haproxy+keepalived高可用架构配置完毕,如图23-4(a)、23-4(b)、23-24(c)、23-24(d)所示:



本文链接:http://www.yunweipai.com/36321.html