#xml #hadoop #windows-subsystem-for-linux #ignite
#xml #hadoop #windows-subsystem-for-linux #ignite
Вопрос:
Итак, я пытаюсь настроить кластер Ignite с помощью этого default-config.xml для обоих узлов:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="workDirectory" value="/mnt/e/apache-ignite"/>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
<property name="addresses">
<list>
<value>node1:47500..47509</value>
<value>node2:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="47100"/>
</bean>
</property>
<property name="fileSystemConfiguration">
<list>
<bean class="org.apache.ignite.configuration.FileSystemConfiguration">
<property name="name" value="igfs"/>
<property name="ipcEndpointConfiguration">
<bean class="org.apache.ignite.igfs.IgfsIpcEndpointConfiguration">
<property name="type" value="TCP"/>
<property name="host" value="0.0.0.0"/>
<property name="port" value="10500"/>
</bean>
</property>
<property name="secondaryFileSystem">
<bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
<property name="fileSystemFactory">
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://node1:9000/"/>
<property name="configPaths">
<list>
<value>/mnt/e/hadoop/etc/hadoop/core-site.xml</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</list>
</property>
</bean>
Я могу запустить оба узла отдельно без каких-либо проблем с использованием ignite.sh
. Но когда я пытаюсь присоединиться к обоим узлам, я продолжаю получать следующую ошибку:
class org.apache.ignite.IgniteException: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]
at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1067)
at org.apache.ignite.Ignition.start(Ignition.java:349)
at org.apache.ignite.startup.cmdline.CommandLineStartup.main(CommandLineStartup.java:300)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]
at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1965)
at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1276)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:2045)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1703)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1117)
at org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:1035)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:921)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:820)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:690)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:659)
at org.apache.ignite.Ignition.start(Ignition.java:346)
... 1 more
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to start SPI: TcpDiscoverySpi [addrRslvr=null, sockTimeout=5000, ackTimeout=5000, marsh=JdkMarshaller [clsFilter=org.apache.ignite.marshaller.MarshallerUtils$1@1b5c3e5f], reconCnt=10, reconDelay=2000, maxAckTimeout=600000, soLinger=5, forceSrvMode=false, clientReconnectDisabled=false, internalLsnr=null, skipAddrsRandomization=false]
at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:302)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:943)
at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1960)
... 11 more
Caused by: class org.apache.ignite.spi.IgniteSpiException: Impossible to continue join, check if local discovery and communication ports are not blocked with firewall [addr=OmUsVdiDist0221/192.168.175.221:47500, req=TcpDiscoveryJoinRequestMessage [node=TcpDiscoveryNode [id=98e6971f-b477-4518-a25d-1d8ff8a33c46, consistentId=0:0:0:0:0:0:0:1%lo,127.0.0.1:47500, addrs=ArrayList [0:0:0:0:0:0:0:1%lo, 127.0.0.1], sockAddrs=HashSet [/0:0:0:0:0:0:0:1%lo:47500, /127.0.0.1:47500], discPort=47500, order=0, intOrder=0, lastExchangeTime=1602083346717, loc=true, ver=2.8.1#20200521-sha1:86422096, isClient=false], dataPacket=org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket@2b59501e, super=TcpDiscoveryAbstractMessage [sndNodeId=null, id=3a6cb930571-98e6971f-b477-4518-a25d-1d8ff8a33c46, verifierNodeId=null, topVer=0, pendingIdx=0, failedNodes=null, isClient=false]], discoLocalPort=47500, discoLocalPortRange=100]
at org.apache.ignite.spi.discovery.tcp.ServerImpl.sendJoinRequestMessage(ServerImpl.java:1292)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:1032)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:427)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:2099)
at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:299)
... 13 more
Failed to start grid: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]
В настоящее время я использую последнюю версию Ignite (2.8.1) и две машины с Windows (запуск Ignite на wsl).
Я не думаю, что брандмауэр блокирует порты обнаружения или связи, потому что использование telnet при запуске одного из узлов работает без каких-либо проблем.
administrator@node1:~$ telnet <node2-ip> 47100
Trying <node2-ip>...
Connected to <node2-ip>.
Escape character is '^]'.
0[GOi#^CConnection closed by foreign host.
administrator@node1:~$ telnet <node2-ip> 47500
Trying <node2-ip>...
Connected to <node2-ip>.
Escape character is '^]'.
Connection closed by foreign host.
Я здесь немного потерялся. Может быть, я делаю что-то не так в своей конфигурации?
Редактировать
При запуске ignite.bat
на втором рабочем сервере с использованием powershell узел добавляется в топологию без каких-либо проблем.
Комментарии:
1. Вы выполняете telnet от node1 к node1. Что произойдет, если вы подключитесь по telnet с узла 1 на узел 2?
2. К сожалению, я отредактировал фактические IP-адреса и изменил все на node1. Но я на самом деле telnet от node1 до node2. Я отредактирую свой вопрос. Спасибо за замечание.
3. Похоже, что node1 смог установить соединение с node2, но в то же время node2 не может выполнить пинг node1. Можете ли вы проверить, возможно ли установить соединение в обоих направлениях между узлами?
4. Да, возможен пинг с узла 2 на узел 1. Также при использовании powershell все работает просто отлично. Но в моем случае было бы лучше, если бы я запускал оба узла изнутри WSL.
Ответ №1:
Попробуйте установить правильный внешний localAddress
в SPI обнаружения и связи обоих узлов.
В противном случае, похоже, что узел 98e6971f подтвердит только свой адрес локального хоста.