Haproxy+keepalived高可用集群实战

随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS、Haproxy、Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

Haproxy入门简介

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。负载均衡LVS是基于四层,新型的大型互联网公司也在采用Haproxy,了解了Haproxy大并发、七层应用等,Haproxy高性能负载均衡优点:

  1. HAProxy是支持虚拟主机的,可以工作在4、7层;
  2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
  3. 支持url检测后端的服务器;
  4. 它跟LVS一样,只是一款负载均衡软件,单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
  5. 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)所示:

Haproxy+keepalived高可用集群实战插图

Haproxy+keepalived高可用集群实战插图(1)

Haproxy+keepalived高可用集群实战插图(2)

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

(完)