负载均衡初步了解

前言

初步了解负载均衡,做个笔记。

留给自己的问题

留些问题,下次再来看的时候看能否回答出。

什么是负载均衡
为什么要了解负载均衡
网关是什么(看书——计算机网络)
为什么服务器处理完的响应数据报一定会经过网关
负载均衡中nat模式和dr模式分别指的是哪种,有什么区别
为什么说LVS NAT是四层负载均衡,它不是作用于传输层(修改端口号)和网络层(修改ip地址)吗,也不理解为什么说负载均衡有四层负载均衡和七层负载均衡,dr模式为什么不叫两层负载均衡?
学习负载均衡,需要了解到哪个程度,自己现在属于哪个程度

垂直扩展

垂直扩展就是将服务器替换成性能更强的机器。

水平扩展

水平扩展就是通过把系统部署到多个服务器上,将请求分散到各个服务器上,这样单个服务器的压力就小很多了。

负载均衡的实现

方法1是通过DNS服务器,方法2是通过负载均衡器。

使用DNS服务器的思想就是让一个域名对应多个IP,即一个DNS服务器对应多个服务器。通过一种轮询的方式,这样,就可以将DNS服务器上的接收到的请求分散到各个服务器上。
但是,使用DNS服务器不够灵活(相对于负载均衡器而言,不够灵活),存在缓存问题。具体问题如:“如果某个机器出故障,域名解析仍然会返回那个出问题机器的IP,那所有访问该机器的用户都会出问题, 即使我们把这个机器的IP从DNS中删除也不行”。

另一种实现是使用负载均衡器Load Balancer,简称LB。这个LB的作用就是转发请求。
具体是将用户发送过来的数据报转发给具体的服务器(通过将IP数据报中的目的地IP和TCP报文里的目的地端口号改成具体服务器的相关信息),然后再把该请求转发出去,由于LB和多个RS属于通过网络,因此具体的服务器(设为RS1)能接受到,RS1处理完会发出响应报文,报文会经过LB(因为LB是网关。是这样吧?这是计算机网络的知识,),LB再次修改IP地址和端口号,改为自己的,然后再转发给用户。
这样,在用户看来,就是处理请求的就是负载均衡服务器了(也就是说用户不知道系统有多个服务器)。

上面有很多细节。
1,像用户的一个请求会被分成多个数据报,LB在转发数据报的时候要记录哪些数据报是属于同一个请求,并将这些数据报都发到同一个RS上,也就是说不能将同一请求的多个数据报发到不同的RS上。
2,像LB有两个IP,一个对内一个对外。LB和多个RS属于同一个网络,LB是该网络的网关(这里不是很理解)。
3,负载均衡器的实现有多种方式。上面说的负载均衡,是通过修改网络包的ip地址和端口号来转发。而有一种负载均衡是作用在应用层,描述如:“将HTTP请求等应用数据发送到具体的应用服务器,如将图片请求转发到特定的服务器上,总之可以做到更智能的负载均衡,这些功能在四层负载均衡上不好实现,一般放在架构的后面位置,布置在应用服务器前面”。还有的实现,是作用于数据链路层。

nat模式和dr模式

首先要明白nat和dr是什么的缩写,nat是network address translation,即网络地址转换。dr是direct routing,即直接路由。
上面举的例子就是nat模式,也就是请求和响应的数据报都要经过LB,这样一来就有一个问题了,LB的压力很大,尤其是对响应数据报进行ip地址和端口号修改时很麻烦。因为响应通常很大,那么要处理的数据报也会很多。从而导致LB的压力过大。也就是说LB会成为性能的瓶颈。
dr模式会比nat模式更好。dr模式只处理请求,在数据链路层修改目的地的MAC地址,然后将数据报转发出去,这样相应的RS就能接受到该数据报。该RS处理完后,直接将响应数据报返回给用户而不是返回给LB。如此,LB就只处理请求,而不用处理响应,压力就会小很多。
其中,会LB和各个RS有一个相同的vip(virtual ip),且使用相同的端口号。且要抑制各个RS对该vip的响应,这样当数据报到来时,就只有LB会接收。LB接收后再修改数据报的MAC地址,再将请求转发出去。然后相应的RS就会接收到,并且处理完直接可以响应用户。

nat模式的LB必须作为RS的网关,否则数据报被转发后将一去不返。

PS:服务器集群负载均衡原理-知乎,该链接中,有nat模式和dr模式的请求处理图。

参考文章

负载均衡的原理-码农翻身
服务器集群负载均衡原理-知乎

猜你喜欢

转载自blog.csdn.net/weixin_30531261/article/details/80157196