CentOS 和 VMWare 上的 Nginx 1.7.x 及更高版本
从历史上看,我总是设置硬件负载平衡器,如防火墙(一个物理端口上面向公共的接口,第二个物理端口上面向私有的接口),以及“单臂”软件负载平衡器(因为它都在防火墙后面)
问题:
1)在生产环境中,所有内容(应用服务器、nginx)都在 vmware 上,我们是否应该完成所有网络操作来执行此操作,还是让它“独臂”?
2) 在虚拟化环境中,我是否关心网络是否可能成为瓶颈?(单臂意味着所有入站和出站流量都通过单个虚拟和物理接口。)
我应该进一步补充一点,在我所看到的例子中,例如https://spin.atomicobject.com/2013/07/08/nginx-load-balancing-reverse-proxy-updated/,似乎到处都是一个武装。(这个例子对我来说看起来像一个武装,因为服务器没有监听特定的 IP,所以看起来它运行在只有一个 IP 的系统上。)
(单臂意味着:一个接口,可能有多个 IP 地址,用于处理所有传入和传出的流量。)
答案1
1)在生产环境中,所有内容(应用服务器、nginx)都在 vmware 上,我们是否应该完成所有网络操作来执行此操作,还是让它“独臂”?
这取决于吞吐量要求,与物理硬件基本相同 - 如果您发现 NIC 的吞吐量是瓶颈,则放入另一个映射到不同物理 NIC 的虚拟 NIC。如果吞吐量没有瓶颈,则延迟应该基本相同。
2) 在虚拟化环境中,我是否关心网络是否可能成为瓶颈?(单臂意味着所有入站和出站流量都通过单个虚拟和物理接口。)
您可能只会关心是否达到了 VM 主机上 NIC 的物理限制之一。在正常使用情况下,除非应用程序对延迟异常敏感(例如高频交易系统),否则您不会关心。虚拟化会增加一定程度的延迟,如果使用物理 NIC 的虚拟主机之间存在吞吐量争用,则可能会出现问题 - 物理 NIC 仍将是主要的限制因素。如果是这样,那么您可以考虑添加其他物理 NIC 并将虚拟 NIC 映射到这些 NIC,或者横向扩展到在不同主机上运行的 VM。基本上,您在运行物理服务器时必须做出相同的决定,但具有更大的灵活性。