Sorry, I still don't understand, why you need an AddressResolver. Can't you specify all external IPs in configuration and don't use internal ones?
Denis пн, 27 нояб. 2017 г. в 15:55, Josephine Barboza <[email protected] >: > Hi Denis, > > > > I was able to establish connection between the two nodes. The problem was > that in AddressReslover the internal-external address mapping was > incorrect. I had to specify the socketAddress instead of the address as the > internal address for it to work. > > addrs=[10.131.12.16], sockAddrs=[/10.131.12.16:1510] > > > > However after the nodes have started they both seem to be stuck. I believe > the problem is that TcpCommunicationSpi is not starting on the IP Address > and port I have configured. Please see the logs below. How do I change > this? I have set the localhost on IgniteConfig as 10.105.244.17 > > > > Node 2: > > 2017-11-27 10:35:55 [exchange-worker-#28%nvIDNGB1%] WARN > TcpCommunicationSpi:471 - Connect timed out (consider increasing > 'failureDetectionTimeout' configuration property) [addr=/10.131.12.16:1511, > failureDetectionTimeout=10000] > > 2017-11-27 10:35:55 [grid-nio-worker-tcp-comm-0-#17%nvIDNGB1%] INFO > TcpCommunicationSpi:463 - Established outgoing communication connection > [locAddr=/10.105.244.16:47214, rmtAddr=/205.139.17.146:1511] > > > > Thanks. > > > > *From:* Denis Mekhanikov [mailto:[email protected]] > > *Sent:* Thursday, November 23, 2017 7:13 PM > *To:* [email protected] > > > *Subject:* Re: Node unable to join cluster > > > > Josephine, > > > > You should specify addresses in IP finder together with ports. So, it > should be like that: > > String[] addresses = {“ 206.142.241.45:1510”}; > > Then discovery SPI will be able to find itself, and the node will start. > > > > Do you have nodes in your cluster, that are able to see each other > locally? If not, then you don't need an address resolver actually. > > > > Denis > > > > чт, 23 нояб. 2017 г. в 13:10, Josephine Barboza < > [email protected]>: > > Hi, > > > > Still getting this error. > > 2017-11-23 08:59:27 [tcp-disco-msg-worker-#3%nvIDNGB1%] ERROR > TcpDiscoverySpi:495 - Failed to connect to next node > [msg=TcpDiscoveryNodeAddedMessage [node=TcpDiscoveryNode > [id=a11e7f8b-6d64-4620-a296-1a52fb253a48, addrs=[10.131.12.16], sockAddrs=[/ > 10.131.12.16:1510], discPort=1510, order=0, intOrder=3, > lastExchangeTime=1511427557675, loc=false, > ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], > dataPacket=o.a.i.spi.discovery.tcp.internal.DiscoveryDataPacket@516aef1f, > discardMsgId=null, discardCustomMsgId=null, top=null, clientTop=null, > gridStartTime=1511427411342, super=TcpDiscoveryAbstractMessage > [sndNodeId=null, id=5470818ef51-36f0e1f5-fe2e-4b2c-9f9d-bdd4f95f6cb0, > verifierNodeId=36f0e1f5-fe2e-4b2c-9f9d-bdd4f95f6cb0, topVer=0, > pendingIdx=0, failedNodes=null, isClient=false]], err=connect timed out] > > java.net.SocketTimeoutException: connect timed out > > > > it looks like the node1 is trying to connect on private Iof node2P. If I > give Public IP as discovery Local Address nodes won’t start. Could someone > help me understand what should be the configuration when public and private > IPs are involved? I have created the below address resolver configuration > > > > *package* com.hm.ignite.repositories; > > > > *import* java.net.InetSocketAddress; > > *import* java.util.Collection; > > *import* java.util.HashMap; > > *import* java.util.List; > > *import* java.util.Map; > > > > *import* org.apache.ignite.IgniteCheckedException; > > *import* org.apache.ignite.configuration.AddressResolver; > > *import* org.apache.ignite.internal.util.typedef.F; > > > > *public* *class* AddressResolverImpl *implements* AddressResolver { > > /** Internal address on external address. */ > > *private* *static* Map<InetSocketAddress, List<InetSocketAddress>> > *maps* = *new* HashMap<>(); > > > > *static* { > > *maps*.put(*new* InetSocketAddress("206.142.241.45", 47500), F. > *asList*(*new* InetSocketAddress("10.105.244.17", 31183))); > > *maps*.put(*new* InetSocketAddress("205.139.17.146", 47500), F. > *asList*(*new* InetSocketAddress("10.131.12.16", 30112))); > > *maps*.put(*new* InetSocketAddress("10.105.244.17", 47500), F. > *asList*(*new* InetSocketAddress("206.142.241.45", 31183))); > > *maps*.put(*new* InetSocketAddress("10.131.12.16", 47500), F. > *asList*(*new* InetSocketAddress("205.139.17.146", 30112))); > > } > > > > /** {@inheritDoc} */ > > @Override *public* Collection<InetSocketAddress> > getExternalAddresses(InetSocketAddress addr) > > *throws* IgniteCheckedException { > > *return* *maps*.get(addr); > > } > > } > > > > > > *From:* Josephine Barboza > *Sent:* Wednesday, November 22, 2017 5:13 PM > *To:* [email protected] > *Subject:* RE: Node unable to join cluster > > > > Hi Denis, > > > > After adding the localAddress in TcpDiscoverySpi, the node is still not > starting. It fails with the below log messages > > > > 2017-11-22 11:25:36 [localhost-startStop-1] DEBUG TcpDiscoverySpi:452 - > Handshake response from local node: TcpDiscoveryHandshakeResponse [order=0, > super=TcpDiscoveryAbstractMessage [sndNodeId=null, > id=089b073ef51-41a2ab42-639c-48f0-ad36-b75cd625939a, verifierNodeId=null, > topVer=0, pendingIdx=0, failedNodes=null, isClient=false]] > > 2017-11-22 11:25:36 [localhost-startStop-1] DEBUG TcpDiscoverySpi:452 - > Failed to send join request message [addr=/206.142.241.45:1510, > msg=Failed to send message to address [addr=/206.142.241.45:1510, > msg=TcpDiscoveryJoinRequestMessage [node=TcpDiscoveryNode > [id=41a2ab42-639c-48f0-ad36-b75cd625939a, addrs=[0:0:0:0:0:0:0:1%lo, > 10.105.244.16, 10.105.244.17, 127.0.0.1], sockAddrs=[/10.105.244.17:1510, > /0:0:0:0:0:0:0:1%lo:1510, /10.105.244.16:1510, /127.0.0.1:1510], > discPort=1510, order=0, intOrder=0, lastExchangeTime=1511349337034, > loc=true, ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], > dataPacket=org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket@432a7606, > super=TcpDiscoveryAbstractMessage [sndNodeId=null, > id=343b073ef51-41a2ab42-639c-48f0-ad36-b75cd625939a, verifierNodeId=null, > topVer=0, pendingIdx=0, failedNodes=null, isClient=false]]]] > > > > > > Below is my configuration > > > > > > // Comm spi > > TcpCommunicationSpi commSpi = *new* TcpCommunicationSpi(); > > commSpi.setLocalPort(1511); > > commSpi.setLocalPortRange(1); > > commSpi.setName(“commSpi”); > > igniteCfg.setCommunicationSpi(commSpi); > > igniteCfg.setNetworkTimeout(20000); > > > > // IP Finder > > TcpDiscoveryVmIpFinder ipFinder = *new* > TcpDiscoveryVmIpFinder(); > > String[] addresses = {“ 206.142.241.45”}; // This is the public > IP of my VM which has two ports open 1510 and 1511 > > ipFinder.setAddresses(addresses); > > > > > > // Discovery SPI > > TcpDiscoverySpi discoverySpi = *new* TcpDiscoverySpi(); > > discoverySpi.setLocalPort(1510); > > discoverySpi.setLocalPortRange(1); > > discoverySpi.setIpFinder(ipFinder); > > discoverySpi.setNetworkTimeout(20000); > > discoverySpi.setName(“discoSpi”); > > discoverySpi.setLocalAddress(“206.142.241.45”); > > > > > > // Address Resolver > > Map<String, String> addrMap = new Hashmap<>(); > > addrMap.put(“10.105.244.17”, “206.142.241.45”); > > > > AddressResolver addrResolvr = *new* BasicAddressResolver(addrMap); > > discoverySpi.setAddressResolver(addrResolvr); > > > > igniteCfg.setDiscoverySpi(discoverySpi); > > > > > > I am still unable to start a local node if I use the public IP in IPFinder. > > What could be the issue here? > > > > > > *From:* Denis Mekhanikov [mailto:[email protected] > <[email protected]>] > *Sent:* Tuesday, November 21, 2017 6:15 PM > *To:* [email protected] > *Subject:* Re: Node unable to join cluster > > > > Hi Josephine! > > > > Make sure, that TcpDiscoveryVmIpFinder has address of the local node on > the list. > > Otherwise the first node won't be able to start, because discovery SPI > won't find any nodes. > > > > Also note, that TcpDiscoverySpi has localAddress and localPort properties. > Try setting them according to your public IP and port. > > > > Refer to this page for more information: > https://apacheignite.readme.io/docs/cluster-config > > > > Denis > > > > вт, 21 нояб. 2017 г. в 15:11, Josephine Barboza < > [email protected]>: > > Hi, > > > > I have setup ignite instances on two different VMs and I’m trying to > create a cluster using Static IP discovery using TcpDiscoveryVmIpFinder. > > I have a couple of questions: > > 1. Do I need to give loopback address or public IP for the node to > start before trying to connect to the other node in the cluster? What is > the recommended configuration for production? > 2. When I give loopback address/private IP it works(node starts before > trying the connect to other node) but when I give the public IP it does > not. Both the ports for discoverySpi and commSpi are open on the public IP > and I have used address resolver as well to map the private IP to the > public IP. Is there any other configuration required? > 3. Facing the same issue as mentioned in point 2 while connecting to > the node on the second VM where in spite of using address resolver the node > is unable to join the topology. > > > > Thanks. > > > > *IMPORTANT NOTICE: This email and any files transmitted with it are > confidential and intended solely for the use of the individual or entity to > whom they are addressed. If you have received this email in error, please > notify the system manager and/or the sender immediately.* > >
