Loading

【架构学习】负载均衡

单服务器能力有限,需要横向扩展。多服务器如何作为一个整体对外提供服务?

1.需要隐藏集群细节,让客户端感觉到只有一台服务器在提供服务

2.需要对各个服务器的负载做一个均衡

 

报文结构:

 

 

 请求:

返回

对于问题2,假设只做最简单的轮询。

对于问题1,由于整个服务集群对外只有一个IP,所以显然请求不能直接到达具体服务器,中间必然经过LB,LB这时候有两种做法:

1.修改IP数据报,将目的地更改具体服务器IP,原地址保留为客户端地址,让LB作为整个服务集群的网关,服务器处理完之后,返回报文也经过LB,LB这时候将IP数据报中的源地址再次修改为自己的外网IP;

2.由于做法1所有的返回都要经过LB,LB压力很大,并且收发都需要LB来做修改报文的操作,LB压力更大。所以要让LB不处理服务器的返回,并且LB也不再作为服务器集群的网关。但是无论如何返回的IP数据报中的源地址必须得到修改,LB如果不修改,服务器端也不修改,那么必然要让LB的IP地址和服务器集群中所有服务器都是同一个IP,这个概念叫做VIP,具体是怎么做呢,通常一一张网卡的回环地址是127.0.0.1,我们将其全部修改为某个比如206.217.5.11,这样便不再需要修改返回的IP数据报了。但是新的问题来了。由于LB不再是服务集群的网关,他们在网络中的地位是平级的,这时IP又是一样的,那么当请求来临时,路由器如何找到LB?其实很简单,关停所有服务器的ARP广播,仅仅让LB做ARP广播,请求来临时,路由器结息以太网帧,只会找到LB的IP地址。该问题也就由此解决。

 

posted @ 2018-05-30 21:40  注销111  阅读(139)  评论(0编辑  收藏  举报