hashicorp / memberlist

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

Document TCP-only operation #226

Open pnovotnak opened 4 years ago

pnovotnak commented 4 years ago

I am using memberlist in a kubernetes environment. Kubernetes doesn't doesn't provide a nice experience for exposing mixed protocol ports externally via loadblanacers. I'd like to use just TCP or UDP, but I need to send reliable messages – I think that means TCP is my only option?

Unfortunately when I use tcp-only load balancers or nodeports memberlist nodes are not able to assemble. The nodes are able to establish a tcp connection (Initiating push/pull sync) but for some reason are unable to ack:

node joined: test-1
memberlist: Initiating push/pull sync with:  10.0.0.10:4001
memberlist: Suspect test-1 has failed, no acks received
memberlist: Suspect test-1 has failed, no acks received
memberlist: Marking test-1 as failed, suspect timeout reached (0 peer confirmations)

It would be good to clarify in the docs whether this is possible, because it's really unclear at the moment. If it's not possible, I wonder what it would take to make this work?