转入我原来的简书https://www.jianshu.com/p/d51...刚开始搭建LVS时,我用的是只有一张网卡的虚拟机。怎么配置都跳不上真实服务器,发现跟LVS的连接方式有关。LVS主要有以下几种模式:1.NAT模式;NAT模型:地址转换类型,主要是地址转换,类似于iptables的DNAT类型,通过多目标地址转换实现负载均衡;特点及要求:LVS(Director)需要双网卡:DIP(内网)和VIP(外网)内网RealServer主机的IP必须和DIPIn在同一个网络,需要网关指向到DIP的地址。RIP是私有IP地址,仅用于节点间通信。Director位于客户端和RealServer之间,负载处理所有入站和出站通信支持端口。Mapping通常应用于大规模的应用场景,而Director往往会成为整个架构的瓶颈。相关机器信息:LB1eth0:192.168.244.132(Vip)(公网)eth1:192.168.27.128(Dip)(内网)rs1eth0:192.168.27.130(Rip)(内网)getway:192.168.27.128rs2eth0:192.168。27.131(Rip)(内网)getway:192.168.27.128首先用nginx配置两台rs机器访问页面,这样访问rs1的时候就出现welcometonginx!我是rs1!,访问rs2时,welcometonginx出现!我是rs2,现在在LB上操作;判断是否加载本地ip_vs模块,即是否支持lvs,2.4.2后支持;然后安装ipvsadm用户运行命令。ipvsadm安装:[root@LB1~]#yuminstallipvsadm-yecho1>/proc/sys/net/ipv4/ip_forwardipvsadm-A-t192.168.244.132:80-srripvsadm-a-t192.168.244.132:80-r192.168.27.130-mipvsadm-a-t192.168.244.132:80-r192.168.27.131-m测试页面时,两个rs的html页面可以交替访问。2.DR模式:特点和要求每个集群节点必须和Director在同一个物理网络中。RIP地址不能为私有地址,方便远程管理和监控。Director只负责处理入站请求,响应报文由RealServer直接发送给客户端集群节点的网关,RealServer不能指向DIP,而是指向外部路由。Director不支持端口映射。Director比NAT可以支持更多的RealServer原理:DR模型:直接路由模型,在每个RealServer上都有两个IP:VIP和RIP,但是VIP是隐藏的,也就是说不能提高解析等功能。它仅用作请求回复的源IP。Director上只需要一张网卡,然后使用别名配置两个IP:VIP和DIP通过arp解析然后转发给RealServer,RealServer收到信息封装后去掉MAC帧,然后直接回复CIP。LB1:ETH0:192.168.182.133VIP(eth0:0):192.168.182.200RS1:ETH0:ETH0:192.168.182.130LO:0(VIP):192.168.182.200通信原理:每个RealServer有两个IP:VIP和RIP,但是VIP是隐藏的,无法提高解析等功能。它仅用作请求回复的源IP。Director上只需要一张网卡,然后使用别名配置两个IP:VIP和DIPDirector在接收到外部主机的请求并转发给RealServer时不改变目标地址,而是封装arp解析的MAC地址然后将其转发到真实服务器。收到信息后,去掉MAC帧封装,然后直接回复CIP。这时需要关闭RS上的VIP-basedarp解析。Linuxkernel2.4以后,内核内置了这个功能,可以通过一些设置关闭arp功能:arp_ignore:定义了收到ARP请求时的响应级别0:默认只有本地配置的响应地址才会响应responseonlytheinterfaceon)arp_announce:定义向外界公布自己的地址时的级别0:默认,表示使用任意接口上配置的任意地址对外公布1:尽量只向外部公布自己的地址targetnetworkthatmatchesitsnetworkAddress2:只向本地接口上匹配地址的网络通告Ps:要使其功能生效,必须先进行相关设置,然后配置IP地址等信息1。开始对RS1进行操作:[root@rs1~]#echo2>/proc/sys/net/ipv4/conf/all/arp_announce[root@rs1~]#echo2>/proc/sys/net/ipv4/conf/eth0/arp_announce[root@rs1~]#echo1>/proc/sys/net/ipv4/conf/all/arp_ignore[root@rs1~]#echo1>/proc/sys/net/ipv4/conf/eth0/arp_ignore[root@rs1~]#servicenetworkrestart[root@rs1~]#ifconfiglo:0192.168.182.200netmask255.255.255.255broadcast182.168.182.200[root@rs1~]#routeadd-host192.168.182.200devlo:0以上是定义arp响应的级别;还有vip的请求数据,从rs1的本地ip回复;2、在RS2上进行同样的操作3、在LB上进行操作:配置eth0网卡ip;[root@LB1~]#ifconfigeth0:0192.168.182.200/24#配置vip验证eth0:0上的RSweb服务,访问两天后可以正确访问RS服务器,我1!我是2岁!分别出现。接下来在DR上设置转发:[root@LB1~]#yuminstallipvsadm-yipvsadm-A-t192.168.182.200:80-srripvsadm-a-t192.168.182.200:80-r192.168.27.130-gipvsadm-a-t192.168.182.200:80r192.168.27.131-g访问192.168.182.200测试结果,两个RS的html页面可以交替出现3.TUN模式;其实数据转发的原理和上图是一样的,但是个人认为主要是分布在不同的位置(不同的机房);LB通过隧道传输信息,虽然增加了负载,但是由于地理位置不同的优势,仍然是可以参考的方案;优点:负载均衡器只负责将请求包分发给物理服务器,物理服务器直接将响应包发送给用户。因此,负载均衡器可以处理大量的请求。这样一个负载均衡器就可以服务100多台物理服务器,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器有100M的全双工网卡,整个VirtualServer可以达到1G的吞吐量。缺点:但是,这种方式需要所有服务器都支持“IP隧道”(IPEncapsulation)协议;LB1:ETH0:192.168.182.132VIP(TUNL0):192.168.182.200RS1:ETH0:ETH0:192.168.27.27.130TUNL0(VIP):192.168.168.182.200RS2:ETH0:ETH0:ETH0:ETH0:192.168.138.138.138.131TUTL0(VIP)tutl0(VIP)。ipvsadm-yifconfigtunl0192.168.182.200broadcast192.168.182.200netmask255.255.255.0uprouteadd-host$VIPdevtunl0ipvsadm-A-t192.168.182.200:80-srripvsadm9:28.20-t182.10-t192.168.182.200-t192.168.27.130-iipvsadm-a-t192.168.182.200:80-r192.168.138.131-i
