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

[经验分享] LVS的DR模型

[复制链接]

尚未签到

发表于 2019-1-3 10:08:04 | 显示全部楼层 |阅读模式
  LVS的DR模型
  

  本次实例拓扑:

  

  

  在DR模型的实现中,director和服务器必须在同一个物理网段或子网中,且不能在中间有其他的转发设备,并且因为要实现直接回应请求,所以通常real server的ip也是合法的ip,director将转发所有的请求到群集的节点去,有两个需要解决的关键问题,第一,处于平行地位的客户端和服务器vip都是相同的(客户端请求后回应的数据包必须源ip是一致的),那么在客户端请求到来时,该最终把数据包发给谁 第二,就算数据到达directe,而directe又是如何分配给后台的real server的
  

  对于问题一的解决我们可以在后方的real server上设置ARP屏蔽(ARPiptables),当然还有另外两种的解决方案,启用内核模块中处理tcp/ip数据包中的ARP-ignore ARP-announce 其中ARP-announce状态1是默认的,表示使用任意的本地地址,配置在任意接口上的 状态2表示试图避免本地地址
  

  arp_announce相当于定义对于本地网络接口(指多个地址的情况下)ARP请求的回应优先级,0表示只要有就回应(不管是不是针对该接口地址),1表示尽量避免回应非本网段的,2表示最合适的本地地址用于回应
  

  

  

  在direct设备上,我们将eth2的192.168.2.1作为物理地址,eth2:0逻辑接口的192.168.2.2作为VIP地址
  

  direct设备上的eth0网卡配置

  lo:0接口的配置,在此要注意它的掩码长度,必须为32长

  

  direct设备上的具体配置:
  [root@localhost ~]# mount /dev/cdrom /media/cdrom
  mount: block device /dev/sr0 is write-protected, mounting read-only
  [root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install ipvsadm
  [root@localhost ~]# ipvsadm -l
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  [root@localhost ~]# ipvsadm -A -t 192.168.2.1:80 -s rr
  [root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.7:80 -g
  [root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.8:80 -g
  [root@localhost ~]# ipvsadm -l
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  192.168.2.1:http rr
  -> 192.168.2.7:http             Route   1      0          0
  -> 192.168.2.8:http             Route   1      0          0
  [root@localhost ~]# service ipvsadm save
  ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
  

  

  使用DR时后方的real server是不能做端口重定向的
  [root@localhost ~]# vim /etc/sysctl.conf

  

  [root@localhost ~]# sysctl -p
  net.ipv4.ip_forward = 1
  net.ipv4.conf.default.rp_filter = 1
  net.ipv4.conf.default.accept_source_route = 0
  kernel.sysrq = 0
  kernel.core_uses_pid = 1
  net.ipv4.tcp_syncookies = 1
  error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
  error: "net.bridge.bridge-nf-call-iptables" is an unknown key
  error: "net.bridge.bridge-nf-call-arptables" is an unknown key
  kernel.msgmnb = 65536
  kernel.msgmax = 65536
  kernel.shmmax = 4294967295
  kernel.shmall = 268435456
  net.ipv4.conf.all.arp_announce = 2
  net.ipv4.conf.all.arp_ignore = 1
  



  web1的网卡配置
  


  web服务器的lo:0虚拟接口,用于接收direct传来的信息

  direct上的网卡eth0网卡配置
  


  同样的要配置lo:0接口

  web2的网卡配置信息,也需要同样的lo:0配置
  


  在虚拟机的实验环境下注意可以将他们都设为仅主机模式,但必须要保证他们之间的通信,如图

  direct上的ipvsadm配置步骤
  


  



  

  打开浏览器进行测试,注意关闭web及direct的selinux和防火墙设置

  


  配置后参数
  [root@localhost ~]# sysctl -p
  net.ipv4.ip_forward = 1
  net.ipv4.conf.default.rp_filter = 1
  net.ipv4.conf.default.accept_source_route = 0
  kernel.sysrq = 0
  kernel.core_uses_pid = 1
  net.ipv4.tcp_syncookies = 1
  error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
  error: "net.bridge.bridge-nf-call-iptables" is an unknown key
  error: "net.bridge.bridge-nf-call-arptables" is an unknown key
  kernel.msgmnb = 65536
  kernel.msgmax = 65536
  kernel.shmmax = 4294967295
  kernel.shmall = 268435456
  net.ipv4.conf.all.arp_announce = 2
  net.ipv4.conf.all.arp_ignore = 1
  

  

  在使用DR时后方的real server的VIP配置,不能在eth0网卡上,因为一旦屏蔽,不仅VIP被屏蔽,rip也会被屏蔽掉,所以我们可以把VIP的地址配置在lo接口的别名接口(lo:0)上
  

  arp_announce : INTEGER
  默认为0
  对网络接口上本地IP地址发出的ARP回应作出相应级别的限制:
  确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口

  0 - (默认) 在任意网络接口上的任何本地地址

  1 -尽量避免不在该网络接口子网段的本地地址. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.

  2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址.

  如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送

  all/ 和{interface}/ 下两者同时比较,取较大一个值生效.

  提高约束级别有益于从指定的目标接受应答,而降低级别可以给予更多的arp查询者以反馈信息(关于arp代理这一段我普遍翻译地不好,去啃一下tcp/ip bible的卷一,然后再翻译吧)

  arp_ignore : INTEGER

  默认为0

  定义对目标地址为本地IP的ARP询问不同的应答模式

  0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对10.1.1.1 的arp查询也会回应--而原本这个请求该是出现在eth1上,也该有eth1回应的)
  

  1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求(比如
  eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对

  192.168.0.1的查询会回答,而对10.1.1.1 的arp查询不会回应)

  

  2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,eth1收到来自10.1.1.2这样地址发起的对192.168.0.1的
  

  查询不会回答,而对192.168.0.2发起的对192.168.0.1的arp查询会回应)
  

  3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应(do not reply for local
  addresses configured with scope host,only resolutions for global and link addresses are

  replied 翻译地似乎不好,这个我的去问问人)

  

  4-7 - 保留未使用
  

  8 -不回应所有(本地地址)的arp查询
  

  all/ 和{interface}/ 下两者同时比较,取较大一个值生效.
  





运维网声明 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-658882-1-1.html 上篇帖子: 搭建LVS+NAT 下篇帖子: LVS学习笔记之DR模式详细部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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