场景如下。
我们有一个 Windows Server 2012 R2 Hyper-V 版本,上面托管着三台 NLB 2012 R2 Web 服务器,上面安装了我们的产品。它们从连接的公共服务器接收 XML 数据,运行良好。
我们有一个 Web 服务,用于检查 xDoS 攻击(这看起来像是一个端点向集群发送逻辑重复的 XML 消息)或有缺陷的端点,这些端点会以“失控循环”的形式发送消息。每个 IIS 服务器上的接收器都会调用 Web 服务,以查看它们是否应该处理或拒绝给定的消息。不用说,这必须非常快,而且由于这是一个集群,因此必须:
- 存储过去收到的消息数据的公共位置
- 这些数据保存在内存中的常见 Web 服务
第一个选项的合理位置是数据库,但该选项会大大减慢进程。我们每秒收到数千条消息,无法将这种开销添加到每条消息中。
常见的 Web 服务运行得很好,但是当集群中的一台服务器出现故障时,剩余服务器之间的协调就非常复杂——它们需要决定谁来担任主服务器,当出现故障的服务器重新启动时,它需要重新加入其他服务器,等等...
问题如下...
由于所有虚拟机都存储在一个公共 Hyper-V 主机上,我们能否将 IIS 添加到主机并在那里运行 xDoS 检查器 Web 服务?该 Web 服务始终只会从托管在其上的 IIS 服务器调用(无公共访问)。这意味着没有编排,因为它唯一会宕机的时候就是所有其他服务都宕机的时候。
问题如下...
不好的做法?如果是,为什么?顺便说一句,对我来说,“因为别人不这么做”或类似的说法并不是一个好的理由。
非常感谢,罗布