安哥网络 发表于 2016-2-2 13:42:29

HAProxy + KeepAlived 实现WEB群集 on CentOS6

HAProxy + KeepAlived 实现WEB群集 on CentOS6
环境
CentOS6 (Linux Kernel 2.6.32-71.el6.i686)   
   
haproxy 1.4.19   
   
keepalived 1.1.17需要的IP配置
Master IP:10.0.0.8   

Backup IP:10.0.0.5   

RealServer IP:10.0.0.9、10.0.0.10(兼)安装MASTER机器上的keepalived
    #mkdir /soft
      
    #cd /soft
      
    # wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
      
    # tar -zxvf keepalived-1.1.17.tar.gz
      
    # cd keepalived-1.1.17
      
    # ./configure
      
    # make;make install
      
    顺利的话就这些步骤了,如果出现错误提示,那么根据具体的错误具体处理,一般可能出现的错误:
      
    1)、OpenSSL,提示可能如下
      
    !!! OpenSSL is not properly installed on your system. !!!
      
    !!! Can not include OpenSSL headers files.
      
    解决方案:运行yum -y installopenssl-devel
      
    2)、提示没有gcc编译器
      
    解决方案:运行yum installncurses-devel gcc gcc-c++ make rpm-build
      
    # cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
      
    # cp /usr/local/sbin/keepalived /usr/sbin/
      
    # cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
      
    # mkdir -p /etc/keepalived/
      
    # cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
      
    # chmod +x /etc/init.d/keepalived编辑Master机器上的/etc/keepalived/keepalived.conf:
    打开编辑器,比如VI或是gedit /etc/keepalived/keepalived.conf的内容如下,自己修改程序要的内容。
      
    #Master服务器上的配置 /etc/keepalived/keepalived.conf
    global_defs {
       notification_email {
         leekexi@gmail.com #可以多个地址
       }
       notification_email_from leekexi@gmail.com   
       smtp_server smtp.gmail.com   
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
      
    vrrp_instance VI_1 {
      state MASTER #标示状态为MASTER 备份机为BACKUP
      interface eth0
      virtual_router_id 51
      priority 100   #MASTER权重要高于BACKUP 比如BACKUP为99
      advert_int 1
      
      authentication {
            auth_type PASS #主从服务器验证方式
            auth_pass 1111
      }
      virtual_ipaddress {
            10.0.0.8 #可以多个虚拟IP,换行即可
      }
    }
      
      
    #虚拟服务器 80端口的配置
    virtual_server 10.0.0.8 80 {
      delay_loop 6
      lb_algo rr
      protocol TCP
      
      real_server 10.0.0.9 80 {
            weight5
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
      }
      
      real_server 10.0.0.10 80 {
            weight5
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
      }
      
    }编辑Master机器上安装HAProxy:
下载地址:http://haproxy.1wt.eu/download/1.4/src/   
选择合适的版本,一般选择比较新的版本会理想一些。   
我们假设下载到/soft目录下   
#tar zcvf haproxy-1.4.19.tar.gz   
# cd haproxy-1.4.19   
# make TARGET=linux26 PREFIX=/usr/local/haproxy   
# make install PREFIX=/usr/local/haproxy   

在安装目录/usr/local/haproxy 建立conf文件夹 之后在该文件夹建立 haproxy.cfg 配置文件 用vi或是gedit打开haproxy.cfg配置文件
配置文件的内容自行定义

global
      log 127.0.0.1   local0
      maxconn 4096
      chroot /usr/local/haproxy
      uid 501
      gid 501
      daemon
      nbproc 1
      pidfile /usr/local/haproxy/logs/haproxy.pid
      debug

defaults
      log   127.0.0.1       local3
      mode    http
      option httplog
      option httpclose
      option dontlognull
      option forwardfor
      option redispatch
      retries 2
      maxconn 2000
      balance roundrobin
      stats   uri   /haproxy-stats
      contimeout      5000
      clitimeout      50000
      srvtimeout      50000

listen web_proxy 10.0.0.8:80
      server web1_10.0.0.610.0.0.9:80 cookie app1inst1 check inter 2000 rise 2 fall 5
      server web2_10.0.0.510.0.0.10:80 cookie app1inst2 check inter 2000 rise 2 fall 5
         
cookie 1表示serverid为1,
check inter 1500 是检测心跳频率
rise 2是2次正确认为服务器可用
fall 3是3次失败认为服务器不可用
weight代表权重

加上日志支持
编辑/etc/syslog.conf在最下边增加
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log

编辑 /etc/sysconfig/syslog修改:   
SYSLOGD_OPTIONS="-r -m 0"   

重启日志服务
#service syslog restart BACKUP的安装和Master的安装基本一致,只是一些参数略有变化。   
      
    变化的参数如下:   
      
    1、keepalived.conf文件中   
      
    原:state MASTER #标示状态为MASTER 备份机为BACKUP   
      
    state BACKUP#标示状态改为BACKUP   
      
         
      
    原:priority 100   #MASTER权重要高于BACKUP 比如BACKUP为99   
      
    priority 99   #MASTER权重要高于BACKUP,MASTER为100,那么BACKUP略小于,比如99为了方便系统在开机时加载,还可以创建启动脚本:
# vim /etc/rc.d/init.d/haproxy内容如下:

#! /bin/sh
set -e
   
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/conf/$PROGNAME.conf
PIDFILE=$PROGDIR/run/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
   
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
   
start()
{
      echo -n "Starting $DESC: $PROGNAME"
      $DAEMON -f $CONFIG
      echo "."
}
   
stop()
{
      echo -n "Stopping $DESC: $PROGNAME"
      haproxy_pid=cat $PIDFILE
      kill $haproxy_pid
      echo "."
}
   
restart()
{
      echo -n "Restarting $DESC: $PROGNAME"
      $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
      echo "."
}
   
case "$1" in
start)
      start
      ;;
stop)
      stop
      ;;
restart)
      restart
      ;;
*)
      echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
      exit 1
      ;;
esac   

exit 0

   

保存后赐予可执行权限
# chmod +x /etc/rc.d/init.d/haproxy

就可以使用 service haproxy start|stop|restart 来控制服务的启动停止跟重启。
并通过以下命令加载到开机服务启动列表
# chkconfig --add haproxy</pre>
<p></p>
<p>

<span style="font-size:18px"><span style="background-color:rgb(192,192,192)"><span style="font-size:18px"><span style="background-color:rgb(192,192,192)"><span style="font-size:18px"><span style="background-color:rgb(192,192,192)"><span style="font-size:18px; color:#FFCC33; background-color:rgb(0,153,0)">8、</span><span style="background-color:rgb(0,153,0)"><span style="color:#FFFF00">维护HAProxy和Keepalived</span>:</span></span></span></span></span></span></span></p>
<p></p>
<pre name="code" class="html">1)、keepAlived维护   
   
启动:/etc/init.d/keepalived start   
   
停止:/etc/init.d/keepalived stop   
   
重启:/etc/init.d/keepalived restart   

2)、haproxy维护
<pre name="code" class="html">启动:service haproxy start   
   
停止:service haproxy stop   
   
重启:service haproxy restart   HAProxy + KeepAlived 实现WEB群集 on CentOS6

页: [1]
查看完整版本: HAProxy + KeepAlived 实现WEB群集 on CentOS6