hashicorp / memberlist

Golang package for gossip based membership and failure detection
Mozilla Public License 2.0
3.61k stars 435 forks source link

Can nodes be identify each MEMBERLIST without using UDP connections? #295

Open yspaik opened 6 months ago

yspaik commented 6 months ago

Hello,

I have a few questions regarding MEMBERLIST that I need to address. In our production environment, I have set up Docker on three servers, with each Docker container acting as a node, utilizing MEMBERLIST for a triple redundancy configuration. We use a GitHub open source solution called Weaviate (https://github.com/weaviate/weaviate) vector db to discover nodes within the DB cluster through MEMBERLIST. Everything connected well in the development environment, but upon moving to the production environment, we encountered connection issues. It appears that the problem lies with the UDP connections used by the MEMBERLIST module for node discovery. Each server in the production environment is protected by a firewall, which restricts UDP-based node discovery.

I have two questions:

  1. Is there a way to identify each MEMBERLIST without using UDP connections, by only specifying the IP, gossip port, and data port of each node? It's challenging to request port openings in the production environment due to strict restrictions.
  2. If UDP port usage is inevitable, can we narrow down the range of UDP ports? The production environment does not allow for a wide range of ports to be opened. I would like to know how to adjust these settings.

I look forward to your response.