baiyunjn 发表于 2019-1-4 06:10:51

LVS类型之DR

  DR:客户端请求,director接收客户端响应,通过交换机进行调度分发其中某个服务器,然后该服务器直接响应用户请求
  不需要再通过director响应客户端(director只处理进站请求)
  ARP协议解析得到mac地址:广播
  1、各集群节点必须和director在同一物理网络中(进行的是MAC地址通信)
  2、RIP可以使用公网地址,实现便捷的远程管理和监控
  3、director仅负责处理入站请求,响应报文则由RIP直接发往客户端
  4、real sever不能将网关指向DIP,director直接只有一个网卡,都在同一网段
  5、RIP必须隐藏VIP(VIP就是RIP上ip别名),director上也有VIP别名(也是隐藏VIP)
  6、不支持端口映射
  

  

  director
  |
  DR模型:                  |
  客户端----》路由-------》交换机----》RS1
  |
  |
  RS2
  当客户端发起ip请求时,到达INPUT链进入PREROUTING链时,
  监听在INPUT链上的director发现请求的是集群服务上的web服务的80端口时,根据规则修改报文的传输
  (不会动报文的ip首部,tcp首部),director在原有的报文外面封装了一个MAC地址(源地址为director的MAC地址)
  根据算法进行挑选RS,进行RS中ip地址所对应的MAC地址为目标地址
  在每一个real server都配上一个VIP地址,RS响应完报文之后,直接通过交换机
  路由将响应的报文传输给客户端
  

  路由判断VIP:根据mac地址
  arptables:定义规则哪些VIP给予响应,哪些不响应
  

  内核参数:
  arp_ignore:定义接收到ARP请求时的响应级别
  0:默认级别(只要本地配置的有相应地址,就给予响应)
  1:仅仅在请求的目标地址配置在请求到达的接口上的时候,才给予响应
  
  arp_announce:定义将自己地址向外通告的通告级别
  0:将本机任何接口上的任何地址向外通告(默认)
  1:试图仅向目标网络通过与其网络匹配的地址
  2:仅向与本地接口上地址匹配的网络进行通告
  

  

  ip分配:
  director:
  DIP(eth0):只需要一块网卡
  ip:192.168.31.100 gateway 192.168.31.1 netmask 255.255.255.0
  VIP:
  eth0:0
  ifconfig eth0:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up
  route add -host 192.168.31.111 dev eth0:0
  route add -host VIP dev eth0:0(相当于就是当访问的是VIP的时候,从设备eth0:0进出)
  

  RS1:
  ip:192.168.31.112 gateway 192.168.31.1 netmask 255.255.255.0
  配置完RIP之后再配置arp_announce,arp_ignore
  /proc/sys/net/ipv4/conf/all/arp_announce全局配置为2
  /proc/sys/net/ipv4/conf/all/arp_ignore全局配置为1
  /proc/sys/net/ipv4/conf/eth0/arp_announce局部也需要配置为2
  /proc/sys/net/ipv4/conf/eth0/arp_ignore局部也需要配置为1
  然后最后配置VIP:
  ifconfig lo:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up
  route add -host 192.168.31.111 dev lo:0
  

  

  RS2:
  ip:192.168.31.113 gateway 192.168.31.1 netmask 255.255.255.0
  配置完RIP之后再配置arp_announce,arp_ignore
  /proc/sys/net/ipv4/conf/all/arp_announce全局配置为2
  /proc/sys/net/ipv4/conf/all/arp_ignore全局配置为1
  /proc/sys/net/ipv4/conf/eth0/arp_announce局部也需要配置为2
  /proc/sys/net/ipv4/conf/eth0/arp_ignore局部也需要配置为1
  然后最后配置VIP:
  ifconfig lo:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up
  route add -host 192.168.31.111 dev lo:0
  

  接下来创建集群服务:
  ipvsadm -A -t 192.168.31.111:80 -s wlc
  ipvsadm -a -t 192.168.31.111:80 -r 192.168.31.112 -g -w 2
  ipvsadm -a -t 192.168.31.111:80 -r 192.168.31.113 -g -w 1
  于是访问浏览器:
  http://192.168.31.111(访问的是VIP的IP地址)
  

  director的DIP也可以作为RS的ip进行负载均衡,操作如下:
  ipvsadm -a -t 192.168.31.111:80 -r 127.0.0.1 -g:添加本地ip到ipvsadm即可
  

  curl:
  --connect-timeout n:定义连接的超时时间
  curl --connect-timeout 1 http://192.168.31.111
  -I:获取页面的响应首部
  -s:输出静音模式
  

  记录:
  当创建完成DR模型之后,本人开始使用的是RR算法进行轮询,但是在浏览器中输入ip之后,开始显示的RS1的web访问,中间间隔了几分钟都刷新不懂DR,几分钟之后再次刷新之后就不变成了RS2,不知道是怎么一回事,先mark一下:
  




页: [1]
查看完整版本: LVS类型之DR