On Mon, Sep 4, 2017 at 8:40 PM, Raymond Wilson <raymond_wil...@trimble.com> wrote:
> Thanks. > > > > I get the utility of specifying the network address to bind to; I’m not > convinced using that to derive the name of the internal data store is a > good idea! J > For instance, what if you have to move a persistent data store to a > different server? Or are you saying everybody sets LocalHost or 120.0.0.1 > to ensure the folder name is always essentially local host? > I think what you are asking about is a database backup or a snapshot. Ignite does not support it out of the box, but you may wish to look at the 3rd party solutions, e.g. the one provided by GridGain - https://docs.gridgain.com/docs/data-snapshots > > > *From:* Dmitriy Setrakyan [mailto:dsetrak...@apache.org] > *Sent:* Tuesday, September 5, 2017 3:09 PM > *To:* user <user@ignite.apache.org> > > *Subject:* Re: Specifying location of persistent storage location > > > > > > > > On Mon, Sep 4, 2017 at 6:07 PM, Raymond Wilson <raymond_wil...@trimble.com> > wrote: > > Dmitriy, > > > > I set up an XML file based on the default one and added the two elements > you noted. > > > > However, this has brought up an issue in that the XML file and an > IgniteConfiguration instance can’t both be provided to the Ignition.Start() > call. So I changed it to use the DiscoverSPI aspect of IgniteConfiguration > and set LocalAddress to “127.0.0.1” and LocalPort to 47500. > > > > This did change the name of the persistence folder to be “127_0_0_1_47500” > as you suggested. > > > > While this resolves my current issue with the folder name changing, it > still seems fragile as network configuration aspects of the server Ignite > is running on have a direct impact on an internal aspect of its > configuration (ie: the location where to store the persisted data). A DHCP > IP lease renewal or an internal DNS domain change or an internal IT > department change to using IPv6 addressing (among other things) could cause > problems when a node restarts and decides the location of its data is > different. > > > > Do you know how GridGain manage this in their enterprise deployments using > persistence? > > > > I am glad the issue is resolved. By default, Ignite will bind to all the > local network interfaces, and if they are provided in different order, it > may create the situation you witnessed. > > > > All enterprise users explicitly specify which network address to bind to, > just like you did. This helps avoid any kind of magic in production. > > > > > > > > > > Thanks, > Raymond. > > > > *From:* Dmitriy Setrakyan [mailto:dsetrak...@apache.org] > *Sent:* Tuesday, September 5, 2017 11:41 AM > > > *To:* user <user@ignite.apache.org> > *Cc:* Raymond Wilson <raymond_wil...@trimble.com> > *Subject:* Re: Specifying location of persistent storage location > > > > > > On Mon, Sep 4, 2017 at 4:28 PM, Raymond Wilson <raymond_wil...@trimble.com> > wrote: > > Hi, > > > > It’s possible this could cause change in the folder name, though I do not > think this is an issue in my case. Below are three different folder names I > have seen. All use the same port number, but differ in terms of the IPV6 > address (I have also seen variations where the IPv6 address is absent in > the folder name). > > 0_0_0_0_0_0_0_1_10_0_75_1_10_3_72_117_127_0_0_1_192_168_ > 121_1_192_168_178_27_192_168_3_1_2406_e007_9e5_1_9cc8_92bc_ > 50c9_6794_2406_e007_9e5_1_c5d8_af4b_55b2_582a_47500 > > > > , > > 0_0_0_0_0_0_0_1_10_0_75_1_10_3_72_117_127_0_0_1_192_168_ > 121_1_192_168_178_27_192_168_3_1_2406_e007_9e5_1_a58c_2f32_ > 8005_b03d_2406_e007_9e5_1_c5d8_af4b_55b2_582a_47500 > > 0_0_0_0_0_0_0_1_10_0_75_1_10_3_72_117_127_0_0_1_192_168_ > 121_1_192_168_178_27_192_168_3_1_2406_e007_38b4_1_858c_ > f0ab_bc60_54ab_2406_e007_38b4_1_c5d8_af4b_55b2_582a_47500 > > > > I start the nodes in my local setup in a well defined order so I would > expect the port to be the same. I did once start a second instance by > mistake and did see the port number incremented in the folder name. > > > > Are you suggesting the two changes you note below will result in the same > folder name being chosen every time, unlike above? > > > > > > Yes, exactly. My suggestions will ensure that you explicitly bind to the > same address every time. > > > > > > > > > > > > Thanks, > > Raymond. > > > > *From:* Dmitriy Setrakyan [mailto:dsetrak...@apache.org] > *Sent:* Tuesday, September 5, 2017 11:17 AM > *To:* user <user@ignite.apache.org> > *Cc:* Raymond Wilson <raymond_wil...@trimble.com> > *Subject:* Re: Specifying location of persistent storage location > > > > > > > > On Mon, Sep 4, 2017 at 3:37 PM, Raymond Wilson <raymond_wil...@trimble.com> > wrote: > > Hi, > > > > I definitely have not had more than one server node running at the same > time (though there have been more than one client node running on the same > machine). > > > > I suspect what is happening is that one or more of the network interfaces > on the machine can have their address change dynamically. What I thought of > as a GUID is actually (I think) an IPv6 address attached to one of the > interfaces. This aspect of the folder name tends to come and go. > > > > You can see from the folder names below that there are quite a number of > addresses involved. This seems to be fragile (and I certainly see the name > of this folder changing frequently), so I think being able to set it to > something concrete would be a good idea. > > > > > > I think I understand what is happening. Ignite starts off with a default > port, and then starts incrementing it with every new node started on the > same host. Perhaps you start server and client nodes in different order > sometimes which causes server to bind to a different port. > > > > To make sure that your server node binds to the same port all the time, > you should try specifying it explicitly in the server node configuration, > like so (forgive me if this snippet does not compile): > > > > > > > > *<property name="discoverySpi"> <bean > class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> > <property name="localPort" value="40123"/> </bean></property>* > > > > Please make sure that the client nodes either don't have any port > configured, or have a different port configured. > > > > You should also make sure that Ignite always binds to the desired local > interface on client and server nodes, by specifying > IgniteConfiguration.setLocalHost(...) > property, or like so in XML: > > > > *<property name="localHost" value="my.local.ip.address"/>* > > > > If my theory is correct, Ignite should make sure that the clients and > servers cannot theoretically bind to the same port. I will double check it > with the community and file a ticket if needed. > > > > > > >