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

[经验分享] LVS+Keepalived实现四层负载及高可用

[复制链接]

尚未签到

发表于 2018-12-30 09:49:37 | 显示全部楼层 |阅读模式
  

  最近要上线一个新项目,需要软负载,本来决定用nginx做反向代理,但装完nginx以后,发现nginx无法显示css、js,目前还在研究中,但由于项目较急,所以依然采用了经典架构LVS+Keepalived来实现。
  环境:
  LVS-01 192.168.199.117 MASTER
  LVS-02 192.168.199.118 BACKUP
  WEB-01 192.168.199.113
  WEB-02 192.168.199.114
  VIP 192.168.199.119
  编译安装LVS
ln -s /usr/src/kernels/2.6.18-308.el5-x86_64/ /usr/src/linux
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar zxf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make
  发现报错,报错结果如下:
make[1]: *** [libipvs.o] Error1
make[1]: Leaving directory`/root/tools/ipvsadm-1.26/libipvs'
make: *** [libs] Error 2

经查询,有好多种说法,均没有解决我的问题:
1、  有的说是需要做内核软链接 ln-s /usr/src/kernels/2.6.18-308.el5-x86_64/ /usr/src/linux
2、  有的说是要yuminstall gcc-*
3、还有的说是yum installlibnl* popt*
以上方法可能适用于其实环境,但是在我的机器上面均无效。折腾了好久,请教高手,又是查看http://www.linuxvirtualserver.org/Documents.html官方说明文档,最终认为版本与内核不匹配,总结为以下2点:
1、  ipvsadm-1.26版本适合kernel 2.6.28-rc3及以后
2、  选择好相应的ipvsadm后,还要选择相对应的keepalived,否则会出现启动keepalived后,没有realserver列表。大致显示就是这样:
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:PortScheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

  好了,问题找到了,重新操作,下载低版本的ipvsadm,我的内核版本为2.6.18-308.el5-x86_64,用ipvsadm-1.24测试正常,keepalived的版本为keepalived-1.1.15,具体操作如下:
安装LVS
ln -s /usr/src/kernels/2.6.18-308.el5-x86_64/ /usr/src/linux
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
cd ..
ipvsadm –version

安装keepalived
wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
tar zxfkeepalived-1.1.15.tar.gz
cd keepalived-1.1.15
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
/etc/init.d/keepalived start
至此,安装完毕,下面配置文件。
  LVS-01上面keepalived的配置文件,主与备基本一致,不同的为红色部分
vim /etc/keepalived/keepalived.conf
! Configuration File forkeepalived
global_defs {
   router_id LVS-01        #routeid
}
vrrp_instance LVS {
    state MASTER          #备上为BACKUP
    interface eth0
    virtual_router_id 251
    priority 100                #备节点上比主的数值要小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.199.119
    }
}
virtual_server 192.168.199.11980 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 60           #会话保持
    protocol TCP

    real_server 192.168.199.113 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
}
    }
    real_server 192.168.168.199.114 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}
  启动keealived
/etc/init.d/keepalived restart
  检查是否有VIP
[root@localhost ipvsadm-1.26]#ip add
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:70:47:f4 brdff:ff:ff:ff:ff:ff
    inet 192.168.199.117/24 brd 192.168.199.255scope global eth0
    inet 192.168.199.119/32 scope global eth0
    inet6 fe80::20c:29ff:fe70:47f4/64 scopelink
       valid_lft forever preferred_lft forever
3: sit0:  mtu 1480qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
  检查是否有realserver列表
[root@localhost ipvsadm-1.26]#ipvsadm -Ln
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:PortScheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.199.119:80 wrr
  -> 192.168.199.113:80           Route   1     0          0
  -> 192.168.199.114:80           Route   1     0          0
  最后别忘了,有realserver上面配置VIP和ARP抑制,这个用脚本就好啦,具体如下:
  [root@localhost tools]# cat realserver.sh
#!/bin/sh
[ -f"/etc/init.d/functions" ] && . /etc/init.d/functions
VIP=(
192.168.199.119
)
start(){
#bind VIP
for ((i=0;i/dev/null2>&1
done
#ARP restrain
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
}

stop(){
for ((i=0;i/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
}

case "$1" in
start)
start
if [ $? -eq 0 ];then
   action "ipvs start sucess"  /bin/true
else
   action "ipvs start failed "/bin/false
fi
;;
stop)
stop
if [ $? -eq 0 ];then
   action "ipvs stop sucess"  /bin/true
else
   action "ipvs stop failed "/bin/false
fi
;;
*)
echo "USAGE:$0{start|stop}"
esac

执行完成后,查看VIP
[root@localhost tools]# ip add
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet 192.168.199.119/32 brd 192.168.199.119scope global lo:0
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:41:7c:7e brdff:ff:ff:ff:ff:ff
    inet 192.168.199.114/24 brd 192.168.199.255scope global eth0
    inet6 fe80::20c:29ff:fe41:7c7e/64 scopelink
       valid_lft forever preferred_lft forever
3: sit0:  mtu 1480qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
  剩下的就是故障模拟与测试了,在此就不多写了。
  





运维网声明 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-657470-1-1.html 上篇帖子: 定义keepalived的双主模型和lvs 下篇帖子: HAProxy双机高可用方案之HAProxy+Keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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