服务器自动发现节点的算法?

时间:2011-09-12 16:28:52

标签: java http architecture

长期读者,第一次在这里提问。

情况:我们有一个服务器和节点架构,其中节点可以在相同或不同的机器上,并用于负载平衡。目前,当配置节点时,知道服务器的位置(IP,端口),并且在启动时,它们开始定期(每T秒)向服务器发送HTTP post请求,以通知它们有关其联系信息(IP,端口......)。服务器具有可用节点列表,一旦节点报告,其信息将存储在列表中。如果节点无法在2 * T秒内报告,则会从列表中删除其条目。这样,服务器就可用内容提供了相当新的信息。事实证明这个方案比前一个方案好得多,在前一个方案中使用了配置文件,我们经常不得不处理错误的配置。

新条件:由于安全问题(不知道细节),我们需要使节点保持静默 - 它们不能启动与服务器的连接,只能接受和响应。

因此我们当前的算法无效,我正在寻找新的选项呈现给我的团队。我知道最简单的解决方案是回到静态配置,但我想避免这种情况。我正在寻找建议,而不是详细,但一般的想法是如何实现这一点,而不是HTTP协议所必需的。我希望这里有人可能有想法或者已经解决了这个问题。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您的节点没有向服务器指出它们存在,您的服务器将不得不假设它们存在于某些位置,然后轮询这些位置以确定该节点是启动还是关闭。

这意味着您的服务器必须手动配置,以获得节点所在位置的先验知识。如果没有告知服务器是否存在节点,即使该节点可用且空闲,它也不会使用它。

基本上,如果可以选择从节点到负载平衡服务器的网络流量,那么可以选择从负载平衡服务器到工作节点的网络流量。因此,对于新的架构,我真的不希望安全性有任何提高。

更好的解决方案是充分加密流量,使得窃听者无法推断出消息的内容,并以某种方式进行握手,即使攻击者破坏了加密并试图模拟连接的任何一端,他们会在试图找出握手时引发太多警报。