HAProxy+Keepalived實現負載均衡高可用

HAProxy+Keepalived實現負載均衡高可用html


1、環境linux

5臺虛擬機,分別是:nginx

1臺測試機(192.168.2.83);redis

2臺haproxy/keepalived(192.168.2.230/192.168.2.231);apache

2臺Web Servers(192.168.2.232/192.168.2.233);vim

注:VIP設置爲 192.168.2.228;tomcat


2、安裝配置Web Server安全

因爲Web Server的安裝與配置很是簡單,根據本身喜愛,安裝一個便可;好比:apache、nginx、tomcat等等。在此就再也不詳述;bash


3、安裝配置HAProxy服務器

yum -y install gcc kernel-devel openssl-devel lrzsz vim wget
wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.12.tar.gz
tar xzvf haproxy-1.5.12.tar.gz
cd haproxy-1.5.12
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir -p /usr/local/haproxy/{conf,run,log}
cp ./examples/haproxy.cfg /usr/local/haproxy/conf/
cd /usr/local/haproxy/conf/

>haproxy.cfg

cat <<eof >> /usr/local/haproxy/conf/haproxy.cfg
global
        log 127.0.0.1   local3
        maxconn 4096
        chroot /usr/local/haproxy
        uid 501
        gid 501
        nbproc 2
        pidfile /usr/local/haproxy/run/haproxy.pid
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 2
        option  redispatch
        option  forwardfor
        option  httpclose
        maxconn 2000
        balance roundrobin
        timeout connect 5s
        timeout client 50000ms
        timeout server 50000ms

frontend http
        bind *:80
        mode http
        option  httplog
        default_backend http_pool

backend http_pool
        option  httpchk HEAD /index.html HTTP/1.0

        balance source

        server html_1 192.168.2.232:80 cookie 1 weight 2 check inter 2000 rise 2 fall 3

        server html_2 192.168.2.233:80 cookie 2 weight 2 check inter 2000 rise 2 fall 3

listen stats
        bind *:8888
        mode http
        bind-process 1
        stats uri /haproxy-stats
        stats realm Haproxy \ statistic
        stats auth admin:admin
eof


設置HAProxy 服務器啓動腳本(/etc/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.cfg
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`  
        `pkill -9 haproxy`
        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/init.d/haproxy

注:以上的操做,兩臺都須要操做;到此,咱們的HA就安裝及配置好了。


4、安裝配置Keepalived

wget  http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
tar xzvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.23.4.el6.x86_64/

#內核參數,根據不一樣的操做系統,會不同,注意更改×××器上的內核路徑便可;

make
make install
ln -s /usr/local/sbin/keepalived /sbin/
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak

編輯keepalive.conf主配置文件,內容大體以下:

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_script chk_haproxy {
        script "/etc/keepalived/check_haproxy.sh"
        interval 2
        weight 2
        }

vrrp_instance VI_1 {
    state MASTER/BACKUP        #前主後備
    interface eth0
    virtual_router_id 66
    priority 100/80        #前主後備
    advert_int 3
    authentication {
        auth_type PASS
        auth_pass 333333
    }
    virtual_ipaddress {
        192.168.2.228
    }
        track_script {
                chk_haproxy
        }
}


由於主配置文件裏有用到一個檢測haproxy狀態的腳本,因此另外須要建立腳本,內容以下:

# cat check_haproxy.sh

#!/bin/bash
haproxy=`ps -C haproxy --no-header|wc -l`
if [ $haproxy -eq 0 ]; then
/etc/init.d/haproxy start > /dev/null
sleep 5
hastatus=`ps -C haproxy --no-header|wc -l`
if [ $hastatus -eq 0 ]; then
/etc/init.d/keepalived stop > /dev/null
fi
fi

chmod +x /etc/keepalived/check_haproxy.sh

注:一樣,以上的全部操做,須要兩臺服務器上同樣操做,注意更改主備及優先級便可;到此,keepalive的相關安裝與配置即OK了;


5、測試及校驗

  1. 啓動keepalived(兩臺):/etc/init.d/keepalived start

  2. 在主服務器上隨意把haproxy或者keepalived服務關閉,觀察服務的可用性;

  3. 若是飄到備服務器上了,一樣,在備服務器上隨意把haproxy或者keepalived服務關閉,再觀察;

  4. 最後須要注意的是,若是服務器上有啓用安全軟件,好比ipatalbes,必定要讓服務器間相互訪問,不單單是ping通;如:iptables -I INPUT -s 192.168.2.0/24 -j ACCEPT

相關文章
相關標籤/搜索