Apache Ignite.NET服务器节点挂起在Start()上

Apache Ignite.NET服务器节点挂起在Start()上,.net,iis,ignite,.net,Iis,Ignite,因此,我已将Apache Ignite.NET实例配置为作为服务器运行: var cfg = new IgniteConfiguration { CommunicationSpi = new TcpCommunicationSpi { LocalPort = config.CommunicationPort, LocalPortRange = config.Commun

因此,我已将Apache Ignite.NET实例配置为作为服务器运行:

var cfg = new IgniteConfiguration
        {
            CommunicationSpi = new TcpCommunicationSpi
            {
                LocalPort = config.CommunicationPort,
                LocalPortRange = config.CommunicationPortRange,
                MaxConnectTimeout = TimeSpan.FromMilliseconds(10000),
                ConnectTimeout = TimeSpan.FromMilliseconds(1000)
            },
            AutoGenerateIgniteInstanceName = true,
            ClientMode = false,
            IsActiveOnStart = true,
            DiscoverySpi = new TcpDiscoverySpi
            {
                LocalPort = config.DiscoveryPort,
                LocalPortRange = config.DiscoveryPortRange,
                ForceServerMode = true,
                LocalAddress = localAddress,
                IpFinder = new TcpDiscoveryStaticIpFinder
                {
                    Endpoints = config.ClusterEndPoints
                }
            },
            Localhost = config.LocalAddress,
        };
我使用ForceServerMode=true,在DiscoverySpi.Endpoints中,我拥有本地ip以及集群的ip列表

我看到的是,出于某种原因,Join通过ignite timeout调用。这是我得到的异常日志:

Level: [Error], Message:[Exception on direct send: connect timed out] Native:[java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.openSocket(TcpDiscoverySpi.java:1376)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.openSocket(TcpDiscoverySpi.java:1339)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.sendMessageDirectly(ServerImpl.java:1159)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.sendJoinRequestMessage(ServerImpl.java:1006)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:851)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:358)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:1834)
at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:297)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:837)
at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1770)
at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:977)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1896)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1648)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1076)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:574)
at org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:48)
at org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:76)
]

这很好,可能有一些网络问题,分区,防火墙等等。。我能弄明白

我不明白的是为什么启动ingite节点的调用挂起。我希望它尝试连接到这些端点,如果不能,它应该只启动本地节点。以下是如何启动节点

Ignition.Start(cfg);
相反,我看到的是,它不断尝试加入那些写入超时日志的程序,并且它从不停止,应用程序无限期地挂起

我缺少一些配置,无法使Ignite放弃尝试连接,只启动本地模式,或者完全失败

[编辑]
只有当我已经在集群中运行了ignite的其他应用程序,并且这个新节点试图通过静态IP加入现有集群时,才会发生这种情况(而且它的VM有一个坏的网络配置,阻止它与现有集群通信)。如果我尝试启动这个新节点,但没有ignite实例已经运行,它不会挂起,它只会继续启动本地ignite节点。

因此我深入研究了日志,我确实看到ignite报告本地节点已初始化:以下是日志:
本地节点已初始化:TcpDiscoveryNode[id=1a55b46a-c270-4450-b902-eb5fd28906bc,addrs=[10.211.55.3],sockAddrs=[/10.211.55.3:49100],disport=49100,order=0,intOrder=0,lastExchangeTime=1504661932964,loc=true,ver=2.1.0#20170720-sha1:bdaeecca,isClient=false
但是在我的.NET应用程序中调用
Ignition.Start(cfg)
时,我也从来没有看到过这个日志代码[警告],消息:[节点尚未连接到拓扑,将重复加入过程。请检查远程节点日志以获取可能的错误消息。请注意,大型拓扑可能需要较长的启动时间。如果在启动节点上获取此消息,请增加“TcpDiscoverySpi.networkTimeout”配置属性[networkTimeout=5000]]本机:[]所以我想问题是,如何让加入进程不阻塞我的应用程序?我不确定问题是出在您的特定配置上还是出在Ignite.NET本身上。您能用默认配置启动节点吗?运行示例?@PavelTupitsyn,这样当VM网络配置允许com时,我就可以正常运行Ignite了我的ignite实例的主机VM之间的通信。但是,如果出现某种网络问题,尝试启动的节点将挂起,而不是在未加入群集的情况下启动本地节点。我遇到的问题是,每当我的应用程序挂起时,我都不是一个快乐的露营者。如果没有网络问题,新节点加入集群,ignite按预期工作。