LVS服务概述介绍
LVS服务和 nginx服务区别: (都是负载均衡)

LVS: 实现数据信息转发 属于网络四层负载均衡
发送请求过程 :客户端 ---->LVS----->后端节点
发送请求响应过程: 后端节点 ----->客户端

nginx:实现反向代理过程 数据网络七层负载均衡 也支持4层负载均衡
发送请求过程: 客户端------nginx----->后端节点
接受响应过程: 后端节点----nginx—客户端
nginx的反向代理时来去时数据包都经过nginx; LVS的数据分发是来时进过LVS,返回数据包时不经过LVS,也就是降低了LVS的负载压力。

数据网络七层负载均衡:可以实现负载均衡地址跳转功能
LVS不能实现地址跳转,如果是想要使用LVS进行地址跳转,则需要在后端集群进行配置HTTPS。

反向代理:不能越过中介,客户端不知道后端真正的主机群组; 数据转发:可以越过外包公司,客户端知道真正的后端集群节点,客户端也可以直接联系后端集群节点

nginx的反向代理和LVS的数据转发都是属于负载均衡的方式。

LVS名词概念解释:
VIP:虚拟IP地址 实现负载均衡高可用之后的虚拟IP地址
RIP:真实服务ip地址 负载均衡后端节点IP地址
DIP:调度器IP地址 负载均衡服务器上真是IP地址
CIP:客户端IP地址 访问负载均衡后端的真实客户端用户地址

LVS服务工作模式
03. LVS服务工作模式
通过通讯过程 4层LVS 7层nginx
DR 工作模式(原理)
· 介绍部分:
VS/DR模式是通过改写请求报文的目标mac地址,将请求发给真实服务器的,而真实服务器将响应后的处理结果直接返回给客户端用户,即不经过负载均衡器本身了。
同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。而且,这种DR模式没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求

· 总结说明:
 1. 通过在调度器LB上修改数据包的目的MAC地址实现转发
    PS:源IP地址仍然是CIP,目的IP地址仍然是VIP
 2. 请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)
 3. 至于DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS节点和调度器LB只能在一个局域网LAN中(小缺点)
 4. 需要注意RS节点的VIP绑定(lo:vip)和ARP抑制问题
 5. 强调下:RS节点的默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP
    (这是RS带有外网IP地址的情况)理论讲,只要RS可以出网即可,不是必须要配置外网IP
 6. 由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度LB无法改变请求的报文的目的端口(和NAT要区别)
 7. 当前调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持windows,真实服务器RS节点可以是windows系统
 8. 总的来说DR模式效率很高,但是配置也比较麻烦。因此,访问量不是特别大的公司可以用haproxy/nginx取代之
    (日2000W PV或并发请求1W以下都可以考虑用haproxy/nginx(LVS NAT模式))
 9. 直接对外的访问业务,例如 web服务做RS节点,RS最好用公网IP地址,如果不直接对外的业务,
    例如 mysql存储系统RS节点,最好只用内部IP地址    


总结说明: 
01. 只对数据包中目标mac地址进行转换  数据包三层信息不做转换
02. 请求数据包需要经过负载均衡  返回数据包可以直接发送给用户客户端(不用经过负载均衡服务器)
03. 后端节点实现接收负载均衡信息, 需要绑定vip地址和设置ARP抑制

如果看不懂上面的解释,那么就贴上一张我自己的手绘图吧(比较烂)

LVS节点转发不了_Mac


源IP地址 端口 源Mac 目标ip 端口 目标Mac

① CIP XXX CMAC VIP 80 MAC1

② CIP XXX MAC2 VIP 80 LVSMAC

③CIP XXX MACLVS VIP 80 MACRS1

过程讲述:
① 开始访问时,用户的源IP地址端口以及Mac信息
②路由器修改Mac1为MacLVS。转发给LVS服务器
③LVS将数据转发给RS时,将源Mac改为MacLVS
此时会有问题
1.LVS与后端集群节点的Mac信息,怎样互相告知的?
arp广播方式进行获取的
(这也说明,DR模式下的LVS必须和它所负载集群在同一个局域网内)
2.后端收到一个目标为vip的数据包,但是后端集群服务器上没有vip地址
配置上即可。
3.后端配置上以后,与LVS的vip地址发生冲突?
自己不发送arp包,别人发送的arp包我也不响应。
这里我的疑惑
自己不发送arp包,别人发送的我也不接受,这样只是解决了vip地址冲突的问题。但是数据包会不会直接发送到后端RS上,不经过LVS服务器呢?
自己的理解:我们老师做实验时:LVS服务器上的vip地址配置在外网网卡上,后端集群服务器上的vip地址配置在本地环回网卡上,所以避免了这个事情,确保数据包经过路由器时,一定会将vip数据包先发送给LVS服务器。
正解不会出现出现不经过LVS服务器的情况,即使后端RS服务上有外网vip地址有也不会出现这种情况。 因为虽然后端RS有vip地址。但是也有arp抑制,LVS上没有arp抑制,所以当数据包从路由器(路由器上没有Mac地址和ip地址进行绑定)时,发送广播包寻找对应的Mac地址,但是因为后端RS服务器上都抑制了,所以只有LVS服务器回应自己的Mac地址,这样就保证了从路由器出来的数据包一定会经历过LVS转发调度后再经过交换机发送到RS服务器上处理。 不会出现 不经过LVS直接到达RS上的情况。

④VIP 80 MACRS1 CIP XXX MAC2
⑤VIP 80 MAC1 CIP XXX MACC
过程讲述:
④后端服务器处理发送给路由器内网接口
⑤路由器从内网接口改为外网接口,发送给用户。

整体的过程:
源IP地址 端口 源Mac 目标ip 端口 目标Mac
① CIP XXX CMAC VIP 80 MAC1
② CIP XXX MAC2 VIP 80 LVSMAC
③CIP XXX MACLVS VIP 80 MACRS1
④VIP 80 MACRS1 CIP XXX MAC2
⑤VIP 80 MAC1 CIP XXX MACC
过程讲述:
① 开始访问时,用户的源IP地址端口以及Mac信息
②路由器修改Mac1为MacLVS。转发给LVS服务器
③LVS将数据转发给RS时,将源Mac改为MacLVS
④后端服务器处理发送给路由器内网接口
⑤路由器从内网接口改为外网接口,发送给用户。

请求报文都要经过LVS,响应报文都不经过LVS

LVS-DR模式的特性:
LVS-DR,直接路由,LVS默认模式就是DR模式,应用最广泛,通过请求报文重新封装一个Mac首部进行转发,源Mac是DIP(调度器的内网ip)所在接口的Mac,目标Mac是挑选出的后端服务器的Mac地址,源IP和目标ip均保持不变。

①LVS服务和后端集群都要配置vip
②确保前端路由器将目标ip为vip的请求数据包发送给LVS
③后端服务器的真实IP地址可以使用私网地址,也可以是公网地址;后端服务的IP地址与LVS的ip在同一个网段中。后端服务ip网关不能指定LVS的IP地址,确保响应数据包不经由LVS
④LVS服务于后端服务在同一网络中
⑤不支持端口映射
⑥后端可以使用大多数系统

NAT 工作模式(原理) ***
· 介绍部分:
进入时:源地址(CIP)-目标地址(VIP) —> 源地址(CIP)-目标地址(RIP) 映射过程 目标IP VIP -> RIP
返回时:源地址(RIP)-目标地址(CIP) —> 源地址(VIP)-目标地址(CIP) 映射过程 源IP RIP -> VIP
调度器中记录了,VIP对应RIP的映射关系表

· 总结说明: 
 1. NAT技术将请求的报文(DNAT)和响应的报文(SNAT),通过调度器地址重写然后在转发给内部服务器,报文返回时在
    改写成原来的用户请求的地址。
 2. 只需要在调度器LB上配置wan公网IP即可,调度器也要有私有LAN IP和内部RS节点通信
 3. 每台内部RS节点的网关地址,必须要配成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回时仍然
     经过调度器LB
 4. 由于请求与相应的数据报文都经过调度器LB,因此,网站访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点。
 5. NAT模式支持对IP及端口的转换,即用户请求10.0.0.1:80,可以通过调度器转换得到RS节点的10.0.0.2:8080
     (DR和TUN模式不具备的)
 6. 所有NAT内部RS节点只需配置私有LAN IP即可
 7. 由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4.ip_forward=1
 PS:当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)

LVS节点转发不了_服务器_02

发送报文时结构

源ip      端口     目标ip    端口     过程  
CIP    随机端口   VIP        80      客户端发送时的源ip以及目标ip 
CIP     随机端口  RIP1       80    LVS接受后转发给后端时将目标ip改为RIP
RIP1     80      CIP      随机端口     后端服务器响应时的报发送给LVS
VIP     80        CIP     随机端口      LVS修改源ip为自己的ip后发送给用户

PS: dip没有出现在报文中,只是第二个过程中,LVS接受转发时从DIP转发给后端,不过报文结构中并没有出现DIP。

LVS-NAT模式
本质:多目标IP地址的DNAT转换,通过将请求报文中的目标地址和目标端口修改为后端真实服务器的ip地址和port实现转发;
①RIP和DIP应在同一个ip网络中,使用私网地址,真实服务器的网关指向LVS的DIP
PS:应该不是必须。意思就是【用户】-----【LVS】-----【某】-----【后端集群】,这里的某应该是交换机,但是路由器也可以。
②请求报文和相应报文都必须经过LVS服务转发,LVS压力过大,易成为系统瓶颈。
③支持端口映射,可以修改请求报文的目标
④LVS必须是linux系统,后端集群可以是任意系统。

LVS服务部署过程

问题解决一:openVPN搭建好以后,将外网网卡关闭,会导致win ping 10.8.0.1时也会ping不通。

为什么成功建立虚拟网络链路(两端都有10.8.0.x网段了)以后还是需要借助外网网卡才能进行联系

(虽然在服务端的配置文件中第一行就是配置监听的eth0的IP地址)

原理方面:可能我理解的有些不是很对。

LVS节点转发不了_服务器_03

老师:

只有建立了vpn,才能利用vpn隧道进行通讯

外网地址用于建立 隧道地址用于通讯 两个条件缺一不可

同学:

因为他是在网络通道里开辟一个虚拟链路,如果这个网络通道都不存在,虚拟链路肯定也会断掉

老师举例:

你家到北京会经过一个大桥,每次都堵车,然后你花钱买了一条车道,是你的专有车道

突然有人说要把桥炸了,而你说没事我有专有车道

你桥都没了,专有车道自然也没了

问题解决二:

LVS节点转发不了_LVS节点转发不了_04


老师解释: 记住 tcp和udp协议有端口概念

不必纠结是否是:高于传输层还是可低于传输层时,会有端口的概念

(我自己认为是低于传输层时,没有端口的概念)

问题三解决:解释ps-ef |grep -c ‘n’nginx 的原理

这个就是记住就好了,不要纠结这个小技巧了。