背景信息(请原谅我在这里缺乏正确的语言):我将运行一对物理服务器,每个物理服务器使用Nginx托pipe一些简单的站点。 服务器是可变的,我会有一些专用的IP地址(最多16个)。 服务器通过交换机连接。 他们的networking位于思科防火墙之后。
我的意图(纠正我,如果这是完全错误的)是给每个服务器一个虚拟的IP。 然后,通过防火墙进入的stream量将准备到其中一个虚拟IP地址(我的主服务器)。 这样,如果我对主物理服务器有问题,我可以将其closures,并在备用物理服务器中使用其VIP(手动故障切换)。 我的理解是,如果我将故障转移服务器的虚拟IP更改为主服务器正在使用的虚拟IP,那么对公共IP地址的请求将被路由到故障转移服务器。
然而,当我们了解networking时,我感到非常困惑(正如你可能已经知道的那样)。
1)如果一个TCP连接到我的网站的公共IP,它会打到防火墙。 然后,它将被定向到主服务器(基于VIP)。 它是否正确?
2)如果我的服务器都在同一个防火墙后面,他们怎么能在同一个IP地址被访问(这样我可以把我的Alogging指向一个IP)? 或者,这是不可能的防火墙,只有路由器可以处理?
3)我的用例会更适合使用静态IP地址还是DHCP? 什么是一些倒台呢?
4)我甚至正确理解公共IP地址。 我是否将一个公共IP地址分配给防火墙,然后将连接从那里转发回防火墙后面的一个IP? 或者,我的每个服务器都得到一个IP地址,并且TCP连接只是通过我的防火墙进入到基于IP连接的服务器之一中?
你的理解是正确的。 需要注意的是,在networking方面,虚拟IP本质上是一个你的路由器可以控制的公共IP,无论何时,只要你愿意,你都可以租用它。
有两种types的IP地址,公共IP(您通常将其分配给路由器本身),然后您拥有私有IP,您可以100%控制VLAN。 在你的情况下,你想要把所有的公有IP,把它们放在一个VLAN中,把它们全部分配给你的路由器(并让你的路由器通过静态IP路由将它们出去),并确保路由器已经build立对于NAT 1:1redirect(可以采用公共IP,并将其redirect到内部IP地址,这样,在您的服务器上,可以将其分配给10.0.0.101,并将备份服务器设置为10.0.0.102 。如果你的主服务器出现故障,你不需要切换任何公共IP地址,你需要在路由器端做的所有事情都是让你的公共IP地址指向你的其他私有IP地址。
但是,还有其他方法可以做到这一点。 如果您使用Nginx的上游后端function( http://wiki.nginx.org/HttpUpstreamModule ),您可以在多个服务器之间build立一个Web服务器负载平衡(如果一个后端出现故障,Nginx会知道的话),但是如果主要的Nginx Web服务器代理你的请求,那么你就不得不采取其他一些奇特的路由方式来很好的进行故障恢复。 您可能需要阅读https://stackoverflow.com/questions/10971298/load-balancing-with-nginx 🙂