You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Lukas Lentner <ko...@lukaslentner.de> on 2017/04/27 06:57:56 UTC

Network Discovery inside docker containers

Hi,

I have a question about Discovery in a Docker environment.

I have multiple machines running multiple docker containers with ignite in it. I want to use JDBC Discovery. I give every container a dedicated communication port and discovery port.
My understanding was that the Database Table should be filled with HOSTs and PORTs that can be reached from any ignite node so that they can find each other. So that's why I exposed both ports through docker to the outside for each container without relaying it (changing the port number). You could call machine-1-ip:container-1-discovery-port to discover the "Container 1" inside "Machine 1".

To achive that I set discoveryLocalAddress to the ip of the docker host (the machine). But it seems that does not work because this address is also used to bind the socket inside the docker container.

As I do not care on which network interface ignite is binding inside the docker container from this perspective I would not set the localAddress of the discoverySpi.

How can I not set the local discovery address (because of binding) but still make the JDBC-Discovery-IP-Finder put the machine ip inside the database table?

It is not about retrieving the machine ip. At all times I have that!

Thankx
Lukas


----

Lukas Lentner, B. Sc.
St.-Cajetan-Straße 13
81669 München
Deutschland
Fon:     +49 / 89  / 71 67 44 96
Mobile:  +49 / 176 / 24 77 09 22
E-Mail:  Kontakt@LukasLentner.de
Website: www.LukasLentner.de

IBAN:    DE33 7019 0000 0001 1810 17
BIC:     GENODEF1M01 (Münchner Bank)


Re: Network Discovery inside docker containers

Posted by Andrey Mashenkov <an...@gmail.com>.
Hi,

Yes, addressResolver should be helpful, but seems, there is a bug [1]

[1] https://issues.apache.org/jira/browse/IGNITE-5117

On Thu, Apr 27, 2017 at 10:15 AM, Lukas Lentner <ko...@lukaslentner.de>
wrote:

> Ok,
>
>
>
> I heard from chat that I should use an https://ignite.apache.org/
> releases/1.8.0/javadoc/org/apache/ignite/configuration/
> BasicAddressResolver.html
>
> ADDRESS Resolver.
>
>
>
> I will look into it.
>
>
>
> Thankx
>
> Lukas
>
>
>
>
>
> ----
>
>
>
> *Lukas Lentner, B. Sc.*
>
> St.-Cajetan-Straße 13
>
> 81669 München
>
> Deutschland
>
> Fon:     +49 / 89  / 71 67 44 96
>
> Mobile:  +49 / 176 / 24 77 09 22
>
> E-Mail:  Kontakt@LukasLentner.de
>
> Website: www.LukasLentner.de
>
>
>
> IBAN:    DE33 7019 0000 0001 1810 17
>
> BIC:     GENODEF1M01 (Münchner Bank)
>
>
>
> *Von:* Lukas Lentner [mailto:kontakt@lukaslentner.de]
> *Gesendet:* Donnerstag, 27. April 2017 08:58
> *An:* user@ignite.apache.org
> *Betreff:* Network Discovery inside docker containers
>
>
>
> Hi,
>
>
>
> I have a question about Discovery in a Docker environment.
>
>
>
> I have multiple machines running multiple docker containers with ignite in
> it. I want to use JDBC Discovery. I give every container a dedicated
> communication port and discovery port.
>
> My understanding was that the Database Table should be filled with HOSTs
> and PORTs that can be reached from any ignite node so that they can find
> each other. So that’s why I exposed both ports through docker to the
> outside for each container without relaying it (changing the port number).
> You could call machine-1-ip:container-1-discovery-port to discover the
> “Container 1” inside “Machine 1”.
>
>
>
> To achive that I set discoveryLocalAddress to the ip of the docker host
> (the machine). But it seems that does not work because this address is also
> used to bind the socket inside the docker container.
>
>
>
> As I do not care on which network interface ignite is binding inside the
> docker container from this perspective I would not set the localAddress of
> the discoverySpi.
>
>
>
> How can I not set the local discovery address (because of binding) but
> still make the JDBC-Discovery-IP-Finder put the machine ip inside the
> database table?
>
>
>
> It is not about retrieving the machine ip. At all times I have that!
>
>
>
> Thankx
>
> Lukas
>
>
>
>
>
> ----
>
>
>
> *Lukas Lentner, B. Sc.*
>
>
>
> St.-Cajetan-Straße 13
>
> 81669 München
>
> Deutschland
>
>
>
> Fon:     +49 / 89  / 71 67 44 96
>
> Mobile:  +49 / 176 / 24 77 09 22
>
>
>
> E-Mail:  Kontakt@LukasLentner.de
>
> Website: www.LukasLentner.de
>
>
>
> IBAN:    DE33 7019 0000 0001 1810 17
>
> BIC:     GENODEF1M01 (Münchner Bank)
>
>
>



-- 
Best regards,
Andrey V. Mashenkov

AW: Network Discovery inside docker containers

Posted by Lukas Lentner <ko...@lukaslentner.de>.
Ok,

I heard from chat that I should use an https://ignite.apache.org/releases/1.8.0/javadoc/org/apache/ignite/configuration/BasicAddressResolver.html
ADDRESS Resolver.

I will look into it.

Thankx
Lukas


----

Lukas Lentner, B. Sc.
St.-Cajetan-Straße 13
81669 München
Deutschland
Fon:     +49 / 89  / 71 67 44 96
Mobile:  +49 / 176 / 24 77 09 22
E-Mail:  Kontakt@LukasLentner.de
Website: www.LukasLentner.de

IBAN:    DE33 7019 0000 0001 1810 17
BIC:     GENODEF1M01 (Münchner Bank)

Von: Lukas Lentner [mailto:kontakt@lukaslentner.de]
Gesendet: Donnerstag, 27. April 2017 08:58
An: user@ignite.apache.org
Betreff: Network Discovery inside docker containers

Hi,

I have a question about Discovery in a Docker environment.

I have multiple machines running multiple docker containers with ignite in it. I want to use JDBC Discovery. I give every container a dedicated communication port and discovery port.
My understanding was that the Database Table should be filled with HOSTs and PORTs that can be reached from any ignite node so that they can find each other. So that's why I exposed both ports through docker to the outside for each container without relaying it (changing the port number). You could call machine-1-ip:container-1-discovery-port to discover the "Container 1" inside "Machine 1".

To achive that I set discoveryLocalAddress to the ip of the docker host (the machine). But it seems that does not work because this address is also used to bind the socket inside the docker container.

As I do not care on which network interface ignite is binding inside the docker container from this perspective I would not set the localAddress of the discoverySpi.

How can I not set the local discovery address (because of binding) but still make the JDBC-Discovery-IP-Finder put the machine ip inside the database table?

It is not about retrieving the machine ip. At all times I have that!

Thankx
Lukas


----

Lukas Lentner, B. Sc.

St.-Cajetan-Straße 13
81669 München
Deutschland

Fon:     +49 / 89  / 71 67 44 96
Mobile:  +49 / 176 / 24 77 09 22

E-Mail:  Kontakt@LukasLentner.de<ma...@LukasLentner.de>
Website: www.LukasLentner.de<http://www.LukasLentner.de>

IBAN:    DE33 7019 0000 0001 1810 17
BIC:     GENODEF1M01 (Münchner Bank)