Cluster computing 使用单个公共IP的Apache Ignite群集

Cluster computing 使用单个公共IP的Apache Ignite群集,cluster-computing,router,ignite,Cluster Computing,Router,Ignite,我已经在两台主机(OpenStack云)上部署了由两台Ignite 2.5.0服务器组成的集群。他们使用ipFinder TcpDiscoveryMulticastIpFinder(拓扑快照[ver=14,servers=2,clients=0,cpu=2,…)相互查看。只有一个主机有一个公共IP(浮动IP),我们称之为a,另一个只有私有IP,B,只能从主机a访问。在我的客户机(Eclipse IDE)中,在配置中,我已使用TcpDiscoveryVmIpFinder.addresses设置了要

我已经在两台主机(OpenStack云)上部署了由两台Ignite 2.5.0服务器组成的集群。他们使用ipFinder TcpDiscoveryMulticastIpFinder(拓扑快照[ver=14,servers=2,clients=0,cpu=2,…)相互查看。只有一个主机有一个公共IP(浮动IP),我们称之为a,另一个只有私有IP,B,只能从主机a访问。在我的客户机(Eclipse IDE)中,在配置中,我已使用TcpDiscoveryVmIpFinder.addresses设置了要连接到的A的公用IP。(在A的配置中,正确设置了addressResolver和localAddress中的公用IP和专用IP)

将广播()发送到此群集时,几分钟内不会发生任何事情。杀死B,广播工作(在a上)


我如何从外部的客户端访问集群的“私有”计算节点?我看到了“路由器”的迹象(bin/igniterouter.sh,config/router/default router.xml)-可能已弃用?但没有太多关于如何使用它或解决此问题的任何其他方法的信息。

Ignite client node是一个常规节点,但没有存储(例如,如果它有近缓存或本地缓存,那么它可以)因此,与服务器节点一样,它必须能够与集群中的所有节点通信。 因此,您需要使整个群集可供您的客户端访问或使用瘦客户端:


不幸的是,它还不支持compute API,只能使用缓存操作和SQL。

这不是解决方案,但使用代理的解决方法是在公用主机a上安装“haproxy”,并带有以下行:

listen l47501
    bind :47501
    mode tcp
    server worker1 192.168.0.224:47500
listen l47101
    bind :47101
    mode tcp
    server worker1 192.168.0.224:47100
在/etc/haproxy/haproxy.cfg中,其中192.168.0.224是B的私有IP(命名为worker1)。它将A的端口47501和47101连接到B的47500和47100

在B的ignite配置(config/default config.xml)中,为discoverySpi(47500,见下文)和communicationSpi(47100,未显示)设置addressResolver:


其中193.x.x.x是A的公共IP。(必须为A上的入口tcp端口47501和47101打开防火墙。)


广播“helloworld”从我的IDE中开发了A和B。

谢谢你的回答,Micheal。这对我来说是个不幸的消息。在我看来,Ignite是一个很棒的工具,它可以让我的笔记本电脑上的Java IDE以整个云的计算能力进行备份—零部署。因为在云上拥有有限数量的公共IP是很常见的,我认为,我们现在只能选择使用VPN或其他IProxy解决方案,但它们不太方便,并且有一些性能开销。
<property name="discoverySpi">
    <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
        <property name="localAddress" value="192.168.0.224"/>
        <property name="addressResolver">
            <bean class="org.apache.ignite.configuration.BasicAddressResolver">
                <constructor-arg><map>
                    <entry key="192.168.0.224:47500" value="193.x.x.x:47501"/>