负载均衡原理与实践详解 第十六篇 负载均衡网络设计 把负载均衡当作二层交换机还是三层路由器

系列文章:  

负载均衡详解第一篇:负载均衡的需求

负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础

负载均衡详解第三篇:服务器负载均衡的基本概念-使用负载均衡器的服务器群

负载均衡详解第四篇:服务器负载均衡的基本概念-负载均衡时数据包流程

负载均衡详解第五篇:服务器负载均衡的基本概念-健康检查

负载均衡详解第六篇:服务器负载均衡的基本概念-网络地址转换(NAT)

负载均衡详解第七篇:服务器负载均衡的基本概念-服务器直接返回

负载均衡详解第八篇:服务器负载均衡技术进阶-会话保持(上)

负载均衡详解第九篇:服务器负载均衡技术进阶-会话保持(中)

负载均衡详解第十篇:服务器负载均衡技术进阶-会话保持(下)

 

到目前为止,我们已经详细讨论了使用负载均衡器来提高服务器群可扩展性、可用性、可管理性的几种功能和特性。本章我们主要讨论负载均衡器部署的问题,讨论在现有的网络中部署负载均衡器的几种方案。我们还将讨论如何设计高可用的方案,以实现整个网络中不同网络组件的容错处理,包括负载均衡器在内。

 

在讨论网络结构之前,我们需要了解一些基本概念。首先讨论是否把负载均衡器当作二层交换机或三层路由器来使用,这在网络设计中是非常关键的。然后从不涉及到高可用性的简单的网络结构入手,延伸到负载均衡器如何实现双机的高可用性,并将讨论不同的高可用性设计和必需的条件。本章将详细描述网络结构由简单到复杂的变化过程,而不只是提供一个特定的网络设计方案。

 

1把负载均衡当作二层交换机还是三层路由器

 

       交换机的基本功能就是在接收端口接收数据包,选择输出端口并将数据包发送出去。如何选择输出端口取决于交换机的具体类型。

二层交换机利用数据链路层的MAC地址来决定数据包的输出端口。三层交换机,也就是路由器,利用网络层的信息来决定数据包的输出端口。当采用IP协议时,三层交换机利用数据包中的IP地址来决定数据包的输出端口。

 

       客户端和服务器,通常被称为主机,会把管理员提供的路由器的IP地址设置为缺省网关。当给不同网段的IP地址发送数据包时,主机会把数据包发送给缺省网关。路有器作为缺省网关会利用路由协议根据数据包的IP地址来决定如何转发数据包。

 

       负载均衡器一般在四层或者四层以上工作,这取决于我们使用的功能特性。当接收到目地址是VIP并以负载均衡器的MAC地址为其目的MAC地址的数据包后,负载均衡器根据数据包中四层以上的信息实现负载均衡功能。

 

       通过利用数据包中的信息和服务器健康检查的结果以及服务器负载的状态,负载均衡器选择一台真实的服务器来提供服务,并将请求转发到这台服务器。同时负载均衡器会修改数据包中的相关信息,例如目的IP地址、TCP或者UDP端口号码。修改数据包之后,负载均衡器需要确定输出端口并发送这个数据包,负载均衡器可以象二层交换机或路由器那样转发数据包。

 

       负载均衡器只对特定的数据包提供四层以上的交换,那就是以VIP为目的地址并有相应服务器回应的数据包。所有其他的数据包均在二层或三层交换,这取决于负载均衡器的配置。

 

       图1是负载均衡器在二层工作模式下数据包转发和IP寻址的过程。

 

20120504083637.png

 

       服务器和负载均衡器的缺省网关都指向路由器。所有的服务器都在同一个网段内,这样,服务器之间可以通过负载均衡器直接通讯,而不需要经过路由器。需要注意的一点是,从服务器端返回的数据包的目的MAC地址是M1,即路由器的MAC地址。但是由于服务器采用公网IP地址,无法节省IP地址资源,所以这种方案没有吸引力。

 

       这样也无法防止用户直接访问服务器,除非在路由器或负载均衡器上设置访问控制列表。可以让服务器使用私网IP地址,但是这样就有需要在路由器同一个接口上面配置两个网段。

 

       负载均衡器使用公网IP地址在一个网段,服务器使用私网IP地址在另外一个网段。我们需要在路由器跟负载均衡器相连的接口上定义两个IP地址:一个IP地址在VIP的网段,而另外一个IP地址在服务器的网段。有些负载均衡产品提供一些特殊的功能,可以避免在路由器接口上设置多个IP地址。

 

       服务器的缺省网关指向负载均衡器时,数据包的流程和IP寻址过程如图2所示,负载均衡器象路由器一样转发数据包。缺省网关的地址为:10.10.10.1,定义在负载均衡器连接服务器的接口上。本文中使用网关IP来表示服务器缺省网关的IP地址。 

 

       因为缺省网关指向负载均衡器,服务器回应的数据包的目的MAC地址是M2,也就是负载均衡器的MAC地址,如图2所示。

20120504083831.png

 

       有人会问,为什么不用VIP来做服务器的缺省网关?当然可以,但是可能会有多个VIP,每个VIP为不同的客户和应用提供服务,而服务器的缺省网关只能有一个。所以,采用单独的IP地址作为缺省网关,跟VIP地址分开是比较合理的。另外,网关IP地址必须与服务器在同一网段。如果服务器分布在不同的网段,每个网段都需要定义一个缺省网关。所以,把VIP和缺省网关分开会比较方便。

 

       路由和交换功能跟整个负载均衡功能是分开的,路由和交换功能就是根据IP地址或者MAC地址来决定下一跳和输出端口,而负载均衡功能在OSI模型中的更高层工作。如果真实服务器和负载均衡器在同一个网段或者广播域,负载均衡器可以通过第二层交换把数据包发送到真实服务器上。如果服务器和负载均衡器不在同一个广播域,如何转发数据包就取决于负载均衡器是在二层工作还是在三层工作。如果负载均衡器是一个三层交换机,它会根据路由表来决定下一跳的地址。如果负载均衡器是一个第二层交换机,负载均衡器会把数据包发送到缺省网关,由缺省网关把数据包路由到真实的服务器。

 

       如果负载均衡器是以三层路由器的方式进行工作,还有一个好处,服务器可以把缺省网关指向负载均衡器。这样就保证了在特定的网络环境中服务器回应的数据经过负载均衡器,例如单臂网络环境中。

 

       我们接下来要讨论的一些网络设计中会用到这种功能。另外,负载均衡器能够对外部交换机和路由器隐藏服务器的私有IP地址。如果服务器在不同的网段,它们可以通过负载均衡器互相通信。不过,负载均衡器以三层路由的方式进行工作时,在配置和管理上要比二层工作方式稍微复杂一点。通常,只要求负载均衡器进行简单的路由,不会运行BGP之类复杂的路由协议。

 

       在后续部分,假定负载均衡器以三层路由的方式进行工作,所以服务器的缺省网关都指向负载均衡器。

posted @ 2012-05-04 08:47  小洋(燕洋天)  阅读(5201)  评论(5编辑  收藏  举报