您的位置:首页 > 其它

漫画 | 打死我也不搞负载均衡了!

2021-02-22 08:51 169 查看

这是1998年一个普通的上午, 张大胖刚上班就被老板叫去训话。


张大胖有个亲戚在卖IBM的服务器,经常吹嘘说性能有多好,张大胖就想花钱把现在的‘老破小’服务器给替换掉。

老板不管过程,只要结果。

大胖悻悻地去找Bill, 将老板的指示声情并茂地做了传达。

张大胖思索了一会儿,想出了用DNS做中间层的办法。

让网站的域名映射到多个服务器的IP!

用户面对系统的域名,查询IP的时候用轮询的方式。

这DNS系统也真是太不智能了, 张大胖没招了。

Bill决定另辟蹊径,开发一个自己的负载均衡软件。

Load Balancer 简称LB , 有两个IP,一个对外(115.39.19.22),一个对内(192.168.0.100)。

用户看到的是那个对外的IP。后面的真正提供服务的服务器有三个,称为RS1, RS2,RS3, 他们的网关都指向LB。

但是这个数据包一看就是发给Load Balancer的, 怎么发给后面的某个服务器呢?

等到RS1处理完了,要返回首页的HTML, 会把数据包发给网关LB, LB再次施展同样的手段,把IP和端口都修改成自己的, 再发给客户就行了。

修改IP地址和端口,计算机网络中的NAT(网络地址转换)思想在这里被用上了,张大胖决定把这种方式叫做NAT 负载均衡。

Bill 吩咐张大胖组织人力把这个负载均衡软件给开发出来。

三个月后,Load Balancer的第一版开发出来了,这是运行在Linux上的一个软件, 公司试用了一下,感觉还真是不错,仅仅用几台便宜的服务器就可以实现负载均衡了。

可是好景不长,张大胖发现这个Load Balancer存在这瓶颈。

所有的数据包都要通过它,不管是客户端发来的,还是要发给客户端的。

Bill 给出了一个新的方案:把请求和响应分开处理

Bill展示了一张更加复杂的图:

张大胖通过第一版Load Balancer的开发,积累了丰富的经验。

所有服务器都有一个IP:115.39.19.22, 简称VIP。

每个实际的服务器的loopback都绑定到了这个VIP上。

但是,一个巨大的问题出现了:

RS1(192.168.0.10)这个服务器收到了数据包,拆开一看,目的地IP是115.39.19.22,是自己的IP, 那就可以处理了。

对于客户端来说,它看到的还是那个唯一的地址115.39.19.22, 并不知道后台发生了什么事情。

张大胖决定把这种方式叫做Direct Server(DR)模式。

几个月以后,DR模式也开发成功,并且部署到了生产环境上。

后记: 本文所描述的,其实就是著名开源软件LVS的原理,上面讲的两种负载均衡的方式,就是LVS的NAT和DR。LVS是章文嵩博士在1998年5月成立的自由软件项目,现在已经是Linux内核的一部分。

最后再留个小疑问给大家:对于用户的一个请求来说,可能会被分成多个数据包来发送, 如果这些数据包被我们的Load Balancer发到了不同的机器上,那就完全乱套了啊!这该怎么办?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: