直接路由

2018年09月19日 10:57 | 135次浏览 作者原创 版权保护

不同于 NAT 机制,直接路由方式下的负载均衡调度器工作在数据链路层(第二层),简单地说,它通过修改数据包的目标 MAC地址,将数据包转发到实际服务器上,并且最重要的是,实际服务器的响应数据包将直接发送给用户端,而不经过调度器。这听起来似乎不可思议,响应数据包可以不经过调度器,这意味着什么呢?可以肯定的是,实际服务器必须直接接入外部网络,它可以不使用 RFC1918 规定的私有地址,也不能将调度器作为默认网

提示:RFC1918规定的私有 IP 地址范围是:

10.0.0.0       -     10.255.255.255    (10/8 prefix)

172.16.0.0   -     172.31.255.255    (172.16/12 prefix)

192.168.0.0  -    192.168.255.255   (192.168/16 prefix)

我们还是先来看看这种方式的实现机制,在此之前,你需要了解一个也许对你来说比较陌生的名词,那就是 IP 别名,它对于直接路由负载均衡的实现至关重要.

使用IP 别名

我们知道,一个网络接口理所当然地拥有一个 IP 地址,但是除此之外,我们还可以为它配置更多个 IP 地址,它们称为 IP 别名。这里的网络接口可以是物理网卡(如 eth0、eth1),也可以是虚拟接口(如回环网络接口 lo)。

根据规定,一个网络接口最多可以设置 256 个 IP 别名,没错,你可以把一个 C 类网段的所有 IP 地址都设置到一个网卡上,理论上没有任何问题。你也许已经张大了嘴巴,一个网卡竟然可以设置多个 IP 地址,并且拥有同样的 MAC 地址,没错,它们可以很好地工作。

在Linux 中配置 IP 别名非常简单,比如我们在 125.12.12.12 这台服务器上执行以下命令行操作:

ifconfig  eth0:0  125.12.12.77

这时候,我们通过 ifconfig 命令可以查看到刚才配置的 IP 别名,如下所示:


这样一来,我们从同网段的另一台服务器尝试访问它,如下所示:

s-db:~ # ping 125.12.12.77

PING 125.12.12.77 (125.12.12.77) 56(84) bytes of data.

64 bytes from 125.12.12.77: icmp_seq=1 ttl=64 time=6.35 ms

64 bytes from 125.12.12.77: icmp_seq=2 ttl=64 time=0.123 ms

64 bytes from 125.12.12.77: icmp_seq=3 ttl=64 time=0.119 ms

可见,IP 别名对外界来说,和普通 IP 地址没什么区别,当网络中有 ARP 广播询问谁拥有 125.12.12.77 这个 IP 地址时,这台服务器将会积极应答。我们在另一台服务器上查看 ARP 表,其中包含以下两条:

的确,两个 IP 地址对应着相同的 MAC 地址。

现在你应该已经知道 IP 别名是怎么回事了,那么,它有什么用呢?请继续看下一章节,未完待续


此文章本站原创,地址 https://www.vxzsk.com/1895.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程