我们正在开始迁移到 IIS 群集,以实现负载平衡、故障转移支持以及零停机升级。
我们目前正在使用一对 Windows 2008 R2 虚拟机测试此配置。我们目前的方法是在 IIS 上为两个虚拟机配置相同的 IP 地址和绑定。换句话说 - 192.168.100.88 由两个虚拟机绑定,并且两个虚拟机在其 IP 配置中都显示该地址。
每台服务器也有一个不受负载均衡器绑定的IP。
所以,我的问题是,在将节点上线之前,如何测试它?例如,我们关闭一个节点进行升级。我们希望在将服务器内容返回给客户之前对其进行测试。以前,当我们通过防火墙/网络配置手动切换不同的主机时,每个 IIS 服务器都有一组不同的 IP 地址,我们只需更改主机文件并清除 DNS 缓存即可。测试离线模式。然后将其上线。
然而...通过负载平衡配置,两台服务器在技术上都绑定到同一个 IP 地址(我不知道如何那可以工作)。那么,如何将浏览器具体指向平衡器中未启用的节点呢?
我唯一想到的办法是为每个网站设置第二组 IP 地址,并在 IIS 中绑定这些 IP 地址(除了负载平衡 IP)。内部测试将使用第二组 IP,因为它们不会通过防火墙暴露给外部客户。
唯一的问题是(除了额外 IP 的额外开销之外)一些网站是 https。并且 IIS7 只能将 SSL 证书绑定到单个 IP 地址。
那么如何测试当前未与集群一起运行的节点(通过网络负载均衡器管理器禁用)
答案1
NLB 使用端口规则来确定到节点的路由。我们将 NLB 群集设置为除了路由 Web 服务 (http/s) 的标准端口之外,还路由非标准端口,并将 NLB 设置为始终将一个非标准端口路由到一个节点,然后将另一个非标准端口路由到另一个节点。
在每个节点的 IIS 中,我们为该节点的非标准端口添加了一个主机头文件条目。结果允许您转到特定的 URL(http://mysite.com:81),端口指定保证了流量会根据NLB的端口规则流向您想要检查的节点。
如果您担心安全性,那么请不要在防火墙/ NAT 规则上打开那些非标准端口,这样您就只能从内部网络测试节点。
结果允许您使用与生产相同的 IP 地址进行测试,但依靠 PORT 来指定您想要在哪个节点上查看网站。这样可以节省 IP,并允许您绕过 SSL 证书要求,即网站必须绑定到单个 IP。
至于禁用节点,不要禁用整个节点,只需禁用用于生产的端口(80、443)。负载平衡器仍将路由非标准端口上的流量,让您可以测试该节点,同时保证生产流量安全地路由到另一个节点。当您对节点处于活动状态且正常运行感到满意时,只需重新启用生产端口即可。
NLB 中的端口规则示例:
80 – 50/50 拆分到两个节点 (http) 443 – 50/50 拆分到两个节点 (https)
81 - 始终转到节点 1 (http) 451 - 始终转到节点 1 (https)
82 - 始终转到节点 2 (http) 452 - 始终转到节点 2 (https)
访问节点的示例 URL:
http://mysite.com:81- 节点 1 http http://mysite.com:82- 节点 2 http https://mysite.com:451- 节点 1 https https://mysite.com:452- 节点 2 https