Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1092777
  • 博文数量: 186
  • 博客积分: 4939
  • 博客等级: 上校
  • 技术积分: 2075
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 17:15
文章分类

全部博文(186)

文章存档

2018年(1)

2017年(3)

2016年(11)

2015年(42)

2014年(21)

2013年(9)

2012年(18)

2011年(46)

2010年(35)

分类: IT职场

2010-11-03 17:07:06

其实LVS搞起来非常简单,网上一搜一堆。现在又有了keepalived,一个keepalived.conf搞好了,o(╯□╰)o。
 
1,几个关键原理
1)为什么要绑一个vip到调度器里网卡(eth0:1)上?
因为IP层在物理层上,先IP后物理,调度器是重写了client包的MAC,没有重写IP,假如没有VIP,肯定调度器接不到这个包,至于调度器重写mac,是在接到包之后的事
 
)2为什么要绑vip到real server的网卡(loopback口)上?
客户请求的IP是VIP,如果后端不绑定VIP的话,出去的包的源IP地址是不对的,客户端接收到这个包会丢掉
 
3)为什么要打开ip_forward(LVS/NAT)?
不让转发包,肯定被掉了,还做什么NAT啊?
 
4)LVS/DR的调度器能否只要一个VIP?不要自身的IP?
不行,假设一下场景
VIP=192.168.1.1
Director Server为A,DIP=192.168.1.2
Realserver为B,RIP=192.168.1.3
那么当有一个请求过来后,首先由director得到,然后lvs根据设置,需要将该请求修改后,广播给B。这时,他就需要B的MAC地址,当本地arp缓冲区中不存在时,A首先会广播arp消息,格式为who has 192.168.1.3? tell 192.168.1.2,然后由B响应请求
而如果A仅仅只有一个VIP,而没有DIP时,arp格式变为who has 192.168.1.3? tell 192.168.1.1,这时,B机收到arp请求后,会按照arp请求src地址192.168.1.1发送自己的信息,而由于B机本身就有VIP,所以此时不会广播出去。所以A机永远得不到B机的MAC地址。
 
5)为什么要关闭real server的arp广播?
靠,几个机器都配了一个vip,而他们都在一个网络内,发了arp广播,不会导致IP冲突吗?
 
6)In some configurations that real servers are on the same network that the load balancer accepts request packets, if real servers answers arp request for the VIP, there will be race condition, no winner. Packets for the VIP may be sent to the load balancer at one time, to a real server at another time, to another real server at another time, and so on. Then, connections will be broken, everything will be in a mess, and the whole LVS cluster won't work. Therefore, in the VS/TUN and VS/DR cluster, we must guarantee that only the load balancer answers arp request for the VIP to accept incoming packets for virtual service, and the real servers(in the same network of load balancer) don't answer arp request for the VIP but can process packets destined for the VIP locally.

Linux kernel 2.0.xx doesn't do arp response on loopback alias and tunneling interfaces, it is good for the LVS cluster. However, Linux kernel 2.2.xx does all arp responses of all its IP addresses except the loopback addresses (127.0.0.0/255.0.0.0) and multicast addresses.

dr建立了hash table,再改写了data frame mac地址为选择的real server

###########  补充一个 ##############

1、LVS调度器收到目标地址为VIP的请求包后,将MAC地址改成RS的MAC地址,并通过交换机(链路层)发给RS.

2、RS的链路层收到请求后,往上传给IP层。IP层需要验证请求的目标IP地址。所以RS需要配置一个VIP的loopback device。这样RS的IP层收到报文后,会往上递交给传输层。之所以配置成loopback device,是因为loopback device对外不可见,不会跟LVS的VIP冲突。

3、RS处理完成后,将应答包直接返回给客户端。若是公网服务器,则RS需要连上互联网(公网IP或者网关)才能将应答包返回。

VIP地址为调度器和服务器(RealServer)所共享,那会不会引起IP冲突?

答案是:不会。正因为后面所说的,“调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的”。在调度器上,VIP与其局域网内IP对外都是可见的;在服务器上,对外可见的是其在局域网上的IP(调度器调度的时候使用的IP),而在服务器上,VIP的性质就像是平常我们所熟知的127.0.0.1的性质一样,它是一个loopback device,他只在网络层之上可见(包括网络层),这样的loopback device用来模拟网络适配器的行为。就算没有装网卡,127.0.0.1与VIP的这样IP都是可用的。
那为什么要在服务器上还放上一个VIP呢?

因为当只修改了MAC地址的链路层帧发到服务器的链路层时,要想再向上提交到应用层去让HTTP等服务器程序处理,必须再经过网络层、传输层等,而要通过这些层是要经过目标IP的检测的。 

阅读(1449) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

expert12019-03-07 16:20:33

DR配置Real IP还还有一个作用就是,SSH还有健康检查需要,其实就是管理需要。