我已经在两台主机(OpenStack云)上部署了由两台Ignite2.5.0服务器组成的集群。它们使用拓扑快照( ipFinder TcpDiscoveryMulticastIpFinder [ver=14,servers=2,clients=0,CPUs=2,...)相互查看。只有一台主机有公网IP (浮动IP),我们称它为A,另一台主机只有内网IP B,只能从主机A访问。在我的客户机(Eclipse IDE)的配置中,我已经设置了A的公共IP,以便通过TcpDiscoveryVmIpFinder.addresses连接。(在A的配置中,addressResolver和localAddress的公网和内网in设置正确)。
向此集群发送广播()时,几分钟内没有任何反应。杀死B,广播工作(在A上)。
如何从外部客户端访问集群的“私有”计算节点?我看到了“路由器”(bin/igniterouter.sh,config/router/default-router.xml)的迹象--可能已被弃用?,但没有太多关于如何使用它的信息,或者任何其他解决这个问题的方法。
发布于 2018-07-21 00:04:28
Ignite客户端节点是一个常规节点,但没有存储(好吧,它可以,例如,如果它有近缓存或本地缓存)。因此,与服务器节点一样,它必须能够与集群中的所有节点通信。因此,您需要使客户端或使用瘦客户端可以访问整个集群:
https://apacheignite.readme.io/docs/java-thin-client
不幸的是,它还不支持计算API,只能使用缓存操作和SQL。
发布于 2018-07-23 20:58:36
不是解决方案,而是使用代理的变通方法是在公共主机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:
<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"/>其中193.x.x.x是A的公网IP (A上的入口tcp端口47501和47101必须打开防火墙)
在我的IDE中,广播"helloworld“在A和B上工作。
https://stackoverflow.com/questions/51442742
复制相似问题