在网络设备上使用IP CEF平衡Web服务器之间的流量

任务是为两个Web服务器实现容错解决方案,并在可能的情况下实现Web服务器之间的负载平衡,因为有时一个数据库无法满足所有请求。 购买与以下方案有关的专用设备是不可能的。 也许这个主意不是原创的,但是在互联网上我没有找到任何类似的想法。 我们的拓扑如下:

我的形象
有一个Cisco路由器将Web服务器连接到Internet。 使用nginx的Centos 7上的两个Web服务器。 第一和第二台Web服务器的IP地址分别为192.168.20.176/24和192.168.20.177/24。 要实施该计划,Web服务器需要设置相同的辅助IP地址。 这可以是您的网络上未使用的任何私有IP地址。 我选择了192.168.120.175并将其注册到Web服务器主eth0接口的辅助IP地址。 在Centos上,这是通过在/ etc / sysconfig / network-scripts /目录中创建eth0:0文件来完成的。 文件内容:

TYPE="Ethernet" DEVICE=eth0:0 BOOTPROTO="static" IPADDR=192.168.120.175 NETMASK=255.255.255.255 ONBOOT="yes" 

重要的是要注意,使用掩码255.255.255.255可以避免任何ip冲突,因为Web服务器不会使用它来生成流量。 可以这么说,我们将在Web服务器上具有Loopback接口。

之后,路由器可以使用静态路由实现负载平衡。 该技术是在Cisco路由器上使用IP Cef实施的。 链接到这里 。 其他供应商可能会有某些细微差别。

在思科中,线程分配可以通过两种方式进行:

  • 每个目标(默认)。 我们需要这个选项。 一个流的所有数据包将被发送到两个服务器之一。 工作原理是,哈希是通过源IP地址和目标ip地址计算的,并根据此哈希选择第一条路由(服务器)或第二条路由(服务器)。 接下来,我们将略微修改此行为。
  • 每包。 此选项不适合我们,因为平衡将发生在包装上。 粗略地说,第一个路由上的第一个数据包,第二个路由上的第二个数据包。

我们在命令的帮助下规定了两条路线:

 ip route 192.168.120.175 255.255.255.255 GigabitEthernet0/0 192.168.20.176 ip route 192.168.120.175 255.255.255.255 GigabitEthernet0/0 192.168.20.177 

因此,两条路由都将安装在路由表中,并且将沿着它们执行负载分配:

我的形象

我们还检查是否正确选择了平衡方法:

我的形象

源IP地址将更改,而目标IP将始终保持单独状态。 给定NAT,这可能会影响平衡均匀性。 为了进行优化,可以考虑源端口,根据客户端会话的不同,源端口会随机不同。 为此,请使用以下命令:

 ip cef load-sharing algorithm include-ports source 

您还需要配置静态NAT以将Web请求重定向到地址192.168.120.175:

 ip nat inside source static tcp 192.168.120.175 80 interface GigabitEthernet0/1 80 

我们得到什么? 来自Internet的用户的请求将发送到我们的路由器,该路由器将根据TCP的源端口按流在服务器之间分发它们。 当您打开一个新会话时,客户端可能会到达新服务器。

如果其中一台服务器崩溃怎么办? 导致此服务器的路由将从路由表中删除。 要优化此过程,可以使用IP SLA。 通过每10秒ping一次来监视服务器的状态:

 ip sla 10 icmp-echo 192.168.20.176 frequency 10 ip sla schedule 10 life forever start-time now ip sla 20 icmp-echo 192.168.20.177 frequency 10 ip sla schedule 20 life forever start-time now 

接下来,将监视添加到适当的路由:

 ip route 192.168.120.175 255.255.255.255 GigabitEthernet0/0 192.168.20.176 track 10 ip route 192.168.120.175 255.255.255.255 GigabitEthernet0/0 192.168.20.177 track 20 

Cisco路由器上的IP SLA还允许通过HTTP GET请求进行监视,这不仅有助于确定Web服务器是否在网络中,而且还可以在Web服务关闭时确定其崩溃。

因此,构建这样的方案不需要用于Web服务器的附加设备和任何软件。 您所需要的只是具有平衡流量能力的路由器。

Source: https://habr.com/ru/post/zh-CN418915/


All Articles