如何使用IPTables将流量重新路由到本地连接管理器或主xmpp服务(Openfire)

时间:2019-02-11 12:22:26

标签: centos iptables openfire

我正在尝试对openfire XMPP服务器的连接进行负载平衡-这样,我在第二台服务器上托管了一个连接管理器,并试图将IP表用作负载平衡器。两者都在Linux CentOS 6.3上运行(是的,我知道它已经很旧了-可以使用它)。

我已经在第二台服务器(我们称其为服务器A)的端口5300上设置了连接管理器,并且XMPP服务器(服务器B)已经愉快地运行了很多年,并且继续这样做。 / p>

问题是使负载平衡实际上可以进行任何平衡。

这些是我已在服务器A上应用的预路由规则(已编辑的IP地址),以尝试在服务器A上的连接管理器(端口5300)和服务器B上的XMPP服务(端口5222)之间路由通信: / p>

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            <server A IP>      tcp dpt:5222 
statistic mode nth every 2 to:<server B IP>:5222
DNAT       tcp  --  0.0.0.0/0            <server A IP>      tcp dpt:5222 
to:<server B IP>:5300

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我通过Spark使用端口5222连接到服务器A,它成功登录到XMPP服务。

我希望与端口5222上的服务器A的所有偶数连接都已转发到:5222上的openfire服务器,并且每个奇数连接都将被引用到:5300上的连接管理器。

但是,在openfire中查看连接时,似乎总是通过连接管理器进行连接。

关于这种情况可能发生或如何纠正的任何想法?我知道那里有各种负载平衡软件解决方案,但希望本机处理以最小化成本。

1 个答案:

答案 0 :(得分:0)

事实证明,从外观上看,xmpp服务器从未接收过通过IPTables配置转发的数据包-但XMPP服务器已将所有默认规则设置为“接受”,并且未声明其他任何规则,并且正在接受来自连接管理器的连接。然后,Spark重新尝试连接;因此当然会连接到连接管理器,因为这是一个“奇数”连接。

我将[发布一个新问题/标识一个​​存在的问题]关于正在使用的IPTables规则以及为什么不转发和/或接收数据包的问题-比上述问题更简单。