Scenario: I have 3 nodes in a shipping container with no access to the outside world and no knowledge of what exists in their surround network/services environment.
I need them to come up and join together in to a Consul Cluster, and I don’t know what their IPs are, or if there’s even DHCP available.
How to do this?
My initial thought is that through zeroconf (avahi) I can give every node a link-local address, then have that get advertised as “node-x.consul.local” and put those “node1/2/3.consul.local” hostnames in my consul config. … but this ridiculous avahi bug makes me hesitant: https://github.com/lathiat/avahi/issues/117
Is there a better/obvious way to do this that I’m missing?
Yes, that’s absolutely correct- and I’m hoping that avahi bug can be worked around by disabling IPV6 (or I’ll have my team fix the code themselves- go go open source!)
These nodes need to self-identify, advertise their presence, and then come together.
I am thinking that I can can hardcode some known hostnames (3 or 5 of them) and include some startup mDNS->response logic that mirrors the initial link-local address setup:
“If hostname-x is unresolvable, assume I am hostname-x → advertise this hostname on my link-local IP via mDNS”
“If hostname-x resolves, try hostname-x+1”
It seems that if I start them all up with “-bootstrap-expect 3” and “-retry-join hostname-1 -retry-join hostname-2 -retry-join hostname-3” then everything should JUST WORK assuming I can get them all on those hostnames with link-local addresses. Anything I’m missing?
Since you’re considering link-local addresses it seems like they only need to communicate with each other and nothing else on the network. You could pick your own IP subnet and hardcode their IP addresses with a VLAN.
If you have three nodes in a shipping container with no access to the outside world and no knowledge of their IPs or the surrounding network environment, setting up a Consul Cluster can be challenging. However, there are a few alternative approaches you can consider to achieve this without relying on avahi or DHCP.