我在配置了多个网络接口的盒子上运行Ignite群集。我有3种不同的网络接口,速度不同。
我看到Ignite找到3个IP地址
INFO: Non-loopback local IPs: xxx, yyy, zzz
然后
INFO: Successfully bound to TCP port [port=47100,locHost=0.0.0.0/0.0.0.0]
和
INFO: Successfully bound to TCP port [port=47500, localHost=0.0.0.0/0.0.0.0]
和
>>> Local node addresses: [Server1/xxx, Server1/yyy, Server1/zzz, /127.0.0.1]
>>> Local ports: TCP:47100 TCP:47500 TCP:48100
我想将Ignite群集配置为仅使用其中一个网络接口进行通信。
我有这个Ignite xml网络配置
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" parent="base-ignite.cfg">
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>box1:47500</value>
<value>box2:47500</value>
<value>box3:47500</value>
<value>box4:47500</value>
....
...
..
.
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
当节点加入时我找到
INFO: Added new node to topology: TcpDiscoveryNode [id=cb61c90f-6a8d-4c4a-81dc-7994b5e5fd80, addrs=[box1-xxx,box1-yyy, box1-yyy, 127.0.0.1], sockAddrs=[/box1-xxx:47500, /box1-xxx:47500, /box1-yyy:47500, /box1-yyy:47500, /box1-zzz:47500, /box1-zzz:47500, /127.0.0.1:47500], discPort=47500, order=2, intOrder=2, lastExchangeTime=1442308257191, loc=false, ver=1.5.0#20150911-sha1:b736c46f, isClient=false]
所以Ignite服务器绑定并侦听盒子上的所有网络接口。并且在xml配置中我只给出了1个网络接口的地址,但有些如何在节点加入消息时,我看到所有其他网络接口的IP地址。
答案 0 :(得分:1)
Ignite需要在每个节点上提供两个端口:一个用于发现(默认为47500),另一个用于通信(默认为47100)。有关更详细的说明,请参阅此链接:https://mail-archives.apache.org/mod_mbox/incubator-ignite-dev/201504.mbox/%3CCABuYRcqGRB2_3Y7niHShz=icHVVr5d8PVmdwug=oOwHVSXA4SA@mail.gmail.com%3E
端口48100由共享内存通信使用,其工作速度比传统TCP通信快,但仅适用于在同一物理计算机上运行的节点。此功能是可选的,可以通过将-1
设置为共享内存通信端口来禁用此功能:
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="sharedMemoryPort" value="-1"/>
</bean>
</property>