darkpoon 发表于 2019-1-5 14:23:41

Centos 下面 配置LVS的DR模式

  1. Lvs DR 模型原理图
https://s3.运维网.com/wyfs02/M00/92/40/wKiom1j9qB2hkpshAABnNa-pck0010.png
  (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
  (b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
  (c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
  (d) 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
  (e) RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
  (f) 响应报文最终送达至客户端
  2. LVS-DR模型的特性

[*]  特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
[*]  RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
[*]  RS跟Director Server必须在同一个物理网络中
[*]  所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
[*]  不支持地址转换,也不支持端口映射
[*]  RS可以是大多数常见的操作系统
[*]  RS的网关绝不允许指向DIP(因为我们不允许他经过director)
[*]  RS上的lo接口配置VIP的IP地址
[*]  缺陷:RS和DS必须在同一机房中
  3. 特点1的解决方案:

[*]  在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server
[*]  存在问题:用户未必有路由操作权限,因为有可能是运营商提供的,所以这个方法未必实用
[*]  arptables:在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。这是由iptables提供的
[*]  修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
  4.部署实例
  实验环境

[*]  Director节点:(eth1 192.168.10.31vip eth1:0 192.168.10.70)
[*]  Real server1: (eth1 192.168.10.32 vip lo:0 192.168.10.70)
[*]  Real server2: (eth1 192.168.10.34 vip lo:0 192.168.10.70)
  配置 Director 服务器
  查看当前服务器ip 地址
  ifconfig eth1
  eth1      Link encap:EthernetHWaddr 00:0C:29:A5:E5:14
  inet addr:192.168.10.31Bcast:192.168.10.255Mask:255.255.255.0
  inet6 addr: fe80::20c:29ff:fea5:e514/64 Scope:Link
  UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
  RX packets:121 errors:0 dropped:0 overruns:0 frame:0
  TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:12438 (12.1 KiB)TX bytes:12833 (12.5 KiB)
  配置 vip 地址
  cp ifcfg-eth1 ifcfg-eth1:0
  cat ifcfg-eth1
  DEVICE=eth1
  HWADDR=00:0C:29:A5:E5:14
  TYPE=Ethernet
  #UUID=64dc9596-9cf7-4e94-b1d1-690109a87926
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=static
  IPADDR=192.168.10.31
  GATEWAY=192.168.10.1
  NETMASK=255.255.255.0
  catifcfg-eth1:0
  DEVICE=eth1:0
  NAME="eth1:0"
  HWADDR=00:0C:29:A5:E5:14
  TYPE=Ethernet
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=static
  IPADDR=192.168.10.70
  GATEWAY=192.168.10.1
  NETMASK=255.255.255.0
  重启网卡,查看配置是否生效
  service network restart
https://s1.运维网.com/wyfs02/M01/92/43/wKiom1j9uDODzFb3AABFqny2fCw349.jpg
  打开路由转发
  echo 1 > /proc/sys/net/ipv4/ip_forward
  安装ipvsadm
  yum install ipvsadm -y
  配置规则 ipvs 的规则 (这里设置为轮训模式)
  ipvsadm -A -t192.168.10.70:80 -s rr
  ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.32-g
  ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.34-g
  
  配置 Real server1
  
  cp ifcfg-lo ifcfg-lo:1
  
  cat ifcfg-lo:1
  DEVICE=lo:1
  IPADDR=192.168.10.70
  NETMASK=255.255.255.255
  NETWORK=127.0.0.0
  # If you're having problems with gated making 127.0.0.0/8 a martian,
  # you can change this to something else (255.255.255.255, for example)
  BROADCAST=127.255.255.255
  ONBOOT=yes
  NAME=loopback
  
  关闭arp 转发
  echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore临时生效
  echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce 临时生效
  arp_ignore 为:1 # - 只回答目标 IP 地址是访问本网络接口(eth0)的 ARP 查询请求。
  在设置参数的时候将 arp_ignore 设置为 1,意味着当别人的 arp 请求过来的时候,如果接收的网卡设备
  上面没有这个 ip,就不做出响应,默认是 0,只要这台机器上面任何一个网卡设备上面有这个 ip,就响应
  arp 请求,并发送 mac 地址。
  arp_announce (宣告) 为 2
  2 - 对查询目标使用最适当的本地地址。例如,如果在 eth0 接口上接受到了一个 VIP 的 arp 请求包。内
  核判断这个 VIP 地址是不是 eth0 接口上的 IP 一样。如果一样,则回复这个包。如果不一样,就丢弃不回
  应。
  永久生效
  vim /etc/sysctl.conf #最后添加
  net.ipv4.conf.eth0.arp_ignore = 1
  net.ipv4.conf.eth0.arp_announce = 2
  
  sysctl-p
  
  安装http 配置测试页面
  
  yum install httpd -y
  
  echo "192.168.10.32realserver 1" > /var/www/html/index.html
  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  
  配置 Real server2
  
  cp ifcfg-lo ifcfg-lo:1
  
  cat ifcfg-lo:1
  DEVICE=lo:1
  IPADDR=192.168.10.70
  NETMASK=255.255.255.255
  NETWORK=127.0.0.0
  # If you're having problems with gated making 127.0.0.0/8 a martian,
  # you can change this to something else (255.255.255.255, for example)
  BROADCAST=127.255.255.255
  ONBOOT=yes
  NAME=loopback
  
  关闭arp 转发
  echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore临时生效
  echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce 临时生效
  永久生效
  vim /etc/sysctl.conf #最后添加
  net.ipv4.conf.eth0.arp_ignore = 1
  net.ipv4.conf.eth0.arp_announce = 2
  
  sysctl-p
  
  安装http 配置测试页面
  
  yum install httpd -y
  
  echo "192.168.10.34 realserver 2 " > /var/www/html/index.html
  
  测试 real-server1
  
  http://192.168.10.32
  
  https://s4.运维网.com/wyfs02/M00/92/46/wKiom1j9ybWR6fBSAAAcxtP8wAc412.jpg
  
  测试 real-server2
  
  http://192.168.10.34
  
  https://s5.运维网.com/wyfs02/M00/92/46/wKiom1j9yeLA4G5qAAAaNDABeiw335.jpg
  
  
  使用vip 测试
https://s3.运维网.com/wyfs02/M01/92/45/wKioL1j9ykDz6Ry6AAAdDms8h5E600.jpg
https://s3.运维网.com/wyfs02/M02/92/46/wKiom1j9ylbB6xHDAAAbuqzNt8s402.jpg

页: [1]
查看完整版本: Centos 下面 配置LVS的DR模式