设为首页 收藏本站
查看: 1617|回复: 0

[经验分享] HAProxy+Keepalived实现负载均衡高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-19 09:15:33 | 显示全部楼层 |阅读模式
HAProxy+Keepalived实现负载均衡高可用

一、环境
5台虚拟机,分别是:
1台测试机(192.168.2.83);
2台haproxy/keepalived(192.168.2.230/192.168.2.231);
2台Web Servers(192.168.2.232/192.168.2.233);
注:VIP设置为 192.168.2.228;

二、安装配置Web Server
由于Web Server的安装与配置非常简单,根据自己喜好,安装一个即可;比如:apache、nginx、tomcat等等。在此就不再详述;

三、安装配置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),内容大致如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#! /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就安装及配置好了。

四、安装配置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
1
2
3
4
5
6
7
8
9
10
#!/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了;

五、测试及校验
  • 启动keepalived(两台):/etc/init.d/keepalived start

  • 在主服务器上随意把haproxy或者keepalived服务关闭,观察服务的可用性;
  • 如果飘到备服务器上了,同样,在备服务器上随意把haproxy或者keepalived服务关闭,再观察;
  • 最后需要注意的是,如果服务器上有启用安全软件,比如ipatalbes,一定要让服务器间相互访问,不仅仅是ping通;如:iptables -I INPUT -s 192.168.2.0/24 -j ACCEPT



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-78720-1-1.html 上篇帖子: Haproxy配置说明 下篇帖子: haproxy配置文件解释
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表