搬运至我原简书https://www.jianshu.com/p/d51...
首次搭建LVS时应用只有一张网卡的虚拟机,无论如何配置都不能跳转到real server 上,总结发现与LVS的连贯模式有关系,LVS次要有以下几种模式:
一、NAT模式;
NAT模型:地址转换类型,次要是做地址转换,相似于iptables的DNAT类型,它通过多指标地址转换,来实现负载平衡;
特点和要求:
- LVS(Director)下面须要双网卡:DIP(内网)和VIP(外网)
- 内网的Real Server主机的IP必须和DIP在同一个网络中,并且要求其网关都须要指向DIP的地址
- RIP都是公有IP地址,仅用于各个节点之间的通信
- Director位于client和Real Server之间,负载解决所有的进站、出站的通信
- 反对端口映射
- 通常利用在较大规模的利用场景中,但Director易成为整个架构的瓶颈。
相干机器信息:
LB1 eth0:192.168.244.132 (Vip) (公网)eth1:192.168.27.128 (Dip) (内网)rs1 eth0:192.168.27.130 (Rip) (内网)getway:192.168.27.128rs2 eth0:192.168.27.131 (Rip) (内网)getway:192.168.27.128
首先应用nginx将两台rs机器拜访页面配置好,使得拜访rs1呈现welcome to nginx!I'm rs 1!,拜访rs2呈现welcome to nginx!I'm rs 2。
当初在LB上操作;
确定本机ip_vs模块是否加载,也就是是否反对lvs,2.4.2后都反对了;而后装置ipvsadm 用户操作命令。
ipvsadm装置:
[root@LB1 ~]# yum install ipvsadm -yecho 1 > /proc/sys/net/ipv4/ip_forwardipvsadm -A -t 192.168.244.132:80 -s rripvsadm -a -t 192.168.244.132:80 -r 192.168.27.130-mipvsadm -a -t 192.168.244.132:80 -r 192.168.27.131-m
测试页面时能够拜访到 两台rs的 html页面交替呈现。
二、DR模式:
特点和要求
- 各个集群节点必须和Director在同一个物理网络中
- RIP地址不能为公有地址,能够实现便捷的远程管理和监控
- Director仅仅负责解决入站申请,响应报文则由Real Server间接发往客户端
- 集群节点Real Server 的网关肯定不能指向DIP,而是指向内部路由
- Director不反对端口映射
- Director可能反对比NAT多很多的Real Server
原理:
DR模型:间接路由模型,每个Real Server上都有两个IP:VIP和RIP,然而VIP是暗藏的,就是不能进步解析等性能,只是用来做申请回复的源IP的,Director上只须要一个网卡,而后利用别名来配置两个IP:VIP和DIP
Director在承受到内部主机的申请的时候转发给Real Server的时候并不更改指标地址,只是通过arp解析的MAC地址进行封装而后转给Real Server,Real Server在承受到信息当前拆除MAC帧封装,而后间接回复给CIP。
LB1: eth0: 192.168.182.133 vip(eth0:0): 192.168.182.200 RS1: eth0:192.168.182.130 lo:0(vip) :192.168.182.200 RS2: eth0:192.168.182.129 lo:0(vip) 192.168.182.200
通信原理:
每个Real Server上都有两个IP:VIP和RIP,然而VIP是暗藏的,就是不能进步解析等性能,只是用来做申请回复的源IP的,Director上只须要一个网卡,而后利用别名来配置两个IP:VIP和DIP
Director在承受到内部主机的申请的时候转发给Real Server的时候并不更改指标地址,只是通过arp解析的MAC地址进行封装而后转给Real Server,Real Server在承受到信息当前拆除MAC帧封装,而后间接回复给CIP。
而此时须要敞开RS上的基于VIP的arp解析,在linux内核2.4当前,内核中都内置了这种性能,通过一些设置能够敞开其arp的性能:
arp_ignore:定义接管到ARP申请时的响应级别
0:默认,只用本地配置的有响应地址都给予响应 1:仅仅在指标IP是本地地址,并且是配置在申请进来的接口上的时候才给予响应(仅在申请的指标地址配置申请达到的接口上的时候,才给予响应)
arp_announce:定义将本人的地址向外通告时的级别
0:默认,示意应用配置在任何接口的任何地址向外通告 1:试图仅向指标网络通告与其网络匹配的地址 2:仅向与本地接口上地址匹配的网络进行通告
Ps:要想让其性能失效,必须先设置相干设置,而后在配置IP地址等信息
1、开始在RS1操作:
[root@rs1 ~]# echo 2>/proc/sys/net/ipv4/conf/all/arp_announce[root@rs1 ~]# echo 2>/proc/sys/net/ipv4/conf/eth0/arp_announce[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore[root@rs1 ~]# service network restart[root@rs1 ~]#ifconfig lo:0 192.168.182.200 netmask 255.255.255.255 broadcast 182.168.182.200[root@rs1 ~]# route add -host 192.168.182.200 dev lo:0
下面的就是定义了arp响应的级别;还有就是vip的申请数据,从rs1的本地ip进行了回复;
2、在RS2上执行下面同样的操作
3、在LB上操作:
配置eth0网卡ip;
[root@LB1 ~]# ifconfig eth0:0 192.168.182.200/24 #在eth0:0配置vip
验证RS的web服务,拜访两天RS服务器均可正确拜访,别离呈现I'm 1! 和 I'm 2!
接下来在DR上设置转发:
[root@LB1 ~]# yum install ipvsadm -yipvsadm -A -t 192.168.182.200:80 -s rripvsadm -a -t 192.168.182.200:80 -r 192.168.27.130 -gipvsadm -a -t 192.168.182.200:80 -r 192.168.27.131 -g
拜访192.168.182.200测试后果,可交替呈现两台RS的html页面。
三、TUN模式;
其实数据转发原理和上图是一样的,不过这个我集体认为次要是位于不同地位(不同机房);LB是通过隧道进行了信息传输,尽管减少了负载,可是因为地理位置不同的劣势,还是能够参考的一种计划;长处:负载均衡器只负责将申请包分发给物理服务器,而物理服务器将应答包间接发给用户。所以,负载均衡器能解决很微小的申请量,这种形式,一台负载平衡能为超过100台的物理服务器服务,负载均衡器不再是零碎的瓶颈。应用VS-TUN形式,如果你的负载均衡器领有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。有余:然而,这种形式须要所有的服务器反对"IP Tunneling"(IP Encapsulation)协定;
LB1: eth0: 192.168.182.132 vip(tunl0): 192.168.182.200 RS1: eth0:192.168.27.130 tunl0(vip) :192.168.182.200 RS2: eth0:192.168.138.131 tunl0(vip) :192.168.182.200
LB1操作:
yum install ipvsadm -y ifconfig tunl0 192.168.182.200 broadcast 192.168.182.200 netmask 255.255.255.0 up route add -host $VIP dev tunl0 ipvsadm -A -t 192.168.182.200:80 -s rr ipvsadm -a -t 192.168.182.200:80 -r 192.168.27.130 -i ipvsadm -a -t 192.168.182.200:80 -r 192.168.138.131 -i