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

[经验分享] LVS_DR模式结合keepalived

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-1 15:45:16 | 显示全部楼层 |阅读模式
背景:lvs_dr模式dr无法主动识别rs上的web服务器是否停止工作,为解决这一问题,用到keepalived,集成高可
          用集群和负载均衡为一体(keepalived-->HA+LB)

环境:
         DIR:eth0   172.16.115.100     eth0:0  172.16.115.200  (VIP)(keepalived主)
         RS1:eth0   172.16.115.157         lo:0  172.16.115.200  (VIP)(nginx)
         RS2:eth0   172.16.115.202         lo:0  172.16.115.200  (VIP)(nginx、keepalived备)
wKioL1izoVOjaCPpAABYQoMm_CY189.png
DIR/RS2主机(keepalived主、备)
1. DIR/RS2上分别安装keepalived和ipvsadm
    命令 yum install -y keepalived ipvsadm

2. DIR/RS2上分别置空并重新编辑keepalived配置文件vim /etc/keepalived/keepalived.conf
   内容:   
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
vrrp_instance VI_1 {
     state MASTER         # 状态:DIR上用MASTER,RS2备用服务器上用BACKUP
     interface eth0
     virtual_router_id 51
     priority 100         # 优先级别:DIR上用100,RS2用90
     advert_int 1
     authentication {
        auth_type PASS
        auth_pass 1111
     }
    virtual_ipaddress {
        172.16.115.200
     }
    }
   virtual_server 172.16.115.200 80 {
     delay_loop 6              # 每隔6秒查询real server的状态
     lb_algo rr               # lvs算法
     lb_kind DR               # Driect Route
     persistence_timeout 0           # 同一ip的连接60秒内被分配到同一台real server
     protocol TCP              # 用tcp协议查询real server状态
     real_server 172.16.115.157 80 {
        weight 100            # 权重为100
        TCP_CHECK {
            connect_timeout 10       # 10秒无反应超时
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
        }
    }
    real_server 172.16.115.202 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
          }
      }
   }





RS1/RS2(Web服务器)
1. RS1和RS2编写脚本vim /usr/local/sbin/lvs_rs.sh
    内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
#! /bin/bash
    #指定vip是在回环地址地址上;子网掩码全设255,表明只发不回
    vip=172.16.115.200
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

    #添加路由
    route add -host $vip lo:0

    #调整内核参数
    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




解释:arp_ignore,接受来自其他主机arp请求的响应级别

              当主机有两块网卡1.1.1.1和2.2.2.2,客户机通过1.1.1.1访问2.2.2.2时:

              1)arp_ignore=0,客户机可以收到响应,源IP为2.2.2.2,但是MAC是1.1.1.1的

              2)arp_ignore=1,主机拒绝,客户机无法收到响应

              本实验中:dir的两块网卡,共用在eth0上;rs的两块网卡分别为eth0和lo,参数被拒绝;所以只有dir能收到vip的请求

     arp_announce,arp通告级别

              每台主机加入网络之后,就会向网络中通告自己的IP和mac对应信息,方便其他主机和自己通信:

              1)arp_announce=0,告知网络中本机所有接口的任何地址信息

              2)arp_announce=2,只向目标网络通告与其网络相匹配的地址信息

              本实验中:rs的vip只处理来自DR转发响应,所以设置为2


2. RS1和RS2分别启动脚本/usr/local/sbin/lvs_rs.sh,并启动niginx
    说明:执行成功之后,会在回环地址网卡上生产一个虚拟ip 172.16.115.200
    命令 sh  /usr/local/sbin/lvs_rs.sh
    命令 /etc/init.d/nginx start
    wKioL1izjwzhMVhwAABr8BAxmuw424.png


3. dir和rs2上启动keepalived服务;dir上查看ipvsadm规则;ip addr查看ip(ifconfig看不到)
    说明:dir和rs2(主备)都产生转发规则,主启动了虚拟ip:172.16.115.200,备没有启动(当主停掉时,备才启动)
    dir上:  /etc/init.d/keepalived start
    rs2上:  /etc/init.d/keepalived start

    注:echo 1 > /proc/sys/net/ipv4/ip_forward(如无法转发,则在keepalived主、备上开启)
    keepalived 主
wKiom1izjyXiXpioAAAix5q4F_A597.png

wKiom1izjyaQMlKqAABDP3M9fWU786.png
spacer.jpg

    keepalived 备
wKiom1izj1Gg7JslAAAjSEAUOE4856.png

wKioL1izj1GQnBIDAABDkSMBbgY024.png


测试:
1. 停止rs1的nginx服务,客户机访问虚拟IP
    命令 /etc/init.d/nginx stop
    命令 curl 172.16.115.200
    结果:成功跳过不能访问的rs1,rs1的转发规则也被清掉(重启nginx,又会加回来)
spacer.jpg wKiom1izj4DS0dUCAAAr3Ew2VL0171.png

wKioL1izj5azRUBEAAAd2XEaJaA962.png
spacer.jpg

2. 停掉dir上的主keepalived,查看主备状态
    说明:备用keepalived接管,重新启动主keepalived时,主重启接管
    命令 /etc/init.d/keepalived stop
     keepalived 主 spacer.jpg
wKiom1izj7LyT2CXAAAfW1nxfVc407.png

wKioL1izj7Kg52gLAAA9Pjh49Ws494.png
spacer.jpg

   keepalived 备
wKiom1izj9uiCj6KAAAjQ5tPwr4988.png

wKioL1izj9vy3PiWAABJisiAsVM111.png
spacer.jpg
    dir上的主keepalived停止状态下,再次停用rs1的Nginx时,客户端也成功跳过不能访问的rs1;重启rs1的Nginx,恢复正常
spacer.jpg wKiom1izkzCQ_aw0AAAcgFLDi7U844.png



运维网声明 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-348888-1-1.html 上篇帖子: LVS IP Tunnel模式详解 下篇帖子: LVS负载均衡-DR模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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