企业级调度器LVS TUN实践
 根据以下主机资源,做⼀个 lvs 的 TUN 模型的负载均衡实验,两台后端主机是 http 服务。 
 
 
 
 定制 lvs-route 主机 ip(略) 
  定制 lvs-server 主机 ip(略) 
  定制 lvs-route 主机隧道⽹卡 
  modprobe ipip   加载隧道模块 
  modinfo ipip   查看模块信息 
  lsmod | grep ipip   验证模块是否加载 
  
  定制隧道⽹卡ip 
  ip a add 192.168.8.100/32 dev tunl0 
  ip link set tunl0 up #  一定要开启 
  ip a s tunl0 
  
  定制lvs-RS1主机ip 
  加载模块 
  modprobe ipip  
  modinfo ipip  
  lsmod  |  grep ipip 
   lvs-rs1主机定制tunl0⽹卡ip地址 
  ip a add 192.168.8.100/32 dev tunl0 
  ip link set tunl0 up    #  一定要开启 
  ip a s tunl0 
  
  定制lvs-RS2主机ip 
  加载模块 
  modprobe ipip  
  modinfo ipip  
  lsmod  |  grep ipip 
   ip a add 192.168.8.100/32 dev tunl0 
  ip link set tunl0 up   #  一定要开启 
  ip a s tunl0 
  
  基础环境配置 
  客⼾端主机定制⽹关 
  lvs-client 主机定制默认的⽹关出⼝为 lvs 主机 
  ip route add default via 10.0.0.16 #  设定默认的路由,实现流量的发送 
  lvs-route 主机定制数据包转发(略) 
  lvs-server主机定制数据包转发及定制路由出⼝(略) 
  修改内核参数,禁⽤ VIP  的  ARP ⼴播和应答, TUN 模式中,如果  LVS 和后端RS 服务器在⼀个物理⽹络,可以不⽤执⾏如下步骤 
  echo  '1'  > / proc / sys / net / ipv4 / conf / tunl0 / arp_ignore  
  echo  '2'  > / proc / sys / net / ipv4 / conf / tunl0 / arp_announce  
  echo  '1'  > / proc / sys / net / ipv4 / conf / all / arp_ignore  
  echo  '2'  > / proc / sys / net / ipv4 / conf / all / arp_announce  
  echo  '0'  > / proc / sys / net / ipv4 / conf / tunl0 / rp_filter  
  echo  '0'  > / proc / sys / net / ipv4 / conf / all / rp_filter 
   rp_filter 参数用于控制系统是否开启对数据包源地址的校验  
  0  代表不开启地址校验  
  1  表示开启严谨的反向地址校验,对每一个数据包,校验其反向地址是否是最佳路径,如果不是则丢弃该包                            Centos | Redhat 系列的 OS 默认使用的是该值  
  2  表示开启松散的反向地址校验,只要能够反向 ping 通,则使用该数据包,如果 ping 不通,则丢弃该包。                      Ubuntu 系列的 OS 默认使用的是该值,效果和 0 差不多 
   RS1主机定制⽹络环境 
  lvs-rs1 主机定制默认的⽹关出⼝为 lvs 主机(略) 结果如下显示 
  
  lvs-rs1 主机定制 arp 策略 
  echo  '1'  > / proc / sys / net / ipv4 / conf / tunl0 / arp_ignore  
  echo  '2'  > / proc / sys / net / ipv4 / conf / tunl0 / arp_announce  
  echo  '1'  > / proc / sys / net / ipv4 / conf / all / arp_ignore  
  echo  '2'  > / proc / sys / net / ipv4 / conf / all / arp_announce  
  echo  '0'  > / proc / sys / net / ipv4 / conf / tunl0 / rp_filter  
  echo  '0'  > / proc / sys / net / ipv4 / conf / all / rp_filter  
  注意:  
   关于  arp 的抑制,需要具体的网卡和 all 搭配使用才生效,  
  all  相当于兜底的策略。 
   RS2主机定制⽹络环境(上同 略) 
  lvs-server主机定制集群 
  ipvsadm -C 
   ipvsadm  - A  - t  192.168.8.100 : 80  
  ipvsadm  - a  - t  192.168.8.100 : 80  - r  192.168.8.14 : 80  - i  
  ipvsadm  - a  - t  192.168.8.100 : 80  - r  192.168.8.15 : 80  - i  
  ipvsadm  - a  - t  192.168.8.100 : 80  - r  192.168.8.17 : 80  - i  
  注意: 我们这里用的是 tun 模式,所以添加 RS 主机的时候,需要加 - i 选项 
   
 测试 
  客⼾端访问 lvs 的对外 ip 地址 
  [root @rocky9-12  ~ ] # curl 192.168.8.100  
  < h1 > hello RS2 </ h1 >  
  [root @rocky9-12  ~ ] # curl 192.168.8.100  
  < h1 > hello RS1 </ h1 >  
  [root @rocky9-12  ~ ] # curl 192.168.8.100  
  < h1 > hello RS2 </ h1 > 
 