antirez / antirez/disque

Inbuilt incompatibility with port mapping (such as in Docker)

Aperta
#164 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C
Stelle
8.1k
Fork
532
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

The decision to make the cluster bus a static "base port +10000" makes it impossible to use in a default Docker setup. It is better that this is configurable, and even better would discoverable.

For discoverability it would be reasonable enough to add the cluster bus port to the hello message and have the initial handshake after `cluster meet` be to connect, issue hello, then use the port returned to connect for cluster administration. This isn't very dissimilar to the sentinel+client method of Redis. It isn't leaking anything a potential invader can't already figure out so there is no leakage. Ideally this would be how to introduce a member to a cluster.

However, that alone does not solve the underlying problem. We need the equivalent of `sentinel announce-port`, and it needs to be a run-time configurable. With those additions deploying a Disque cluster would be pretty simple to do on a Docker or Docker swarm. As it stands, Disque has the same problems you run into trying to run Redis master/slave with Sentinel, but the additional one of making the assumption/insistence that the cluster communicates on base+10000. Since you solved in for Sentinel, I _know_ you can solve it here fairly easily. ;)

Summary:
- Yay if made discoverable!
- Make cluster bus port configurable rather than calculated

Cheers,
Bill

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.