2016-05-10 7 views
3

Ich nutze das K8s Beispiel um ein Reliable, Scalable Redis auf Kubernetes zu erstellen.Erstelle einen Redis Sentinel Cluster in Kubernetes, der Redis Master kann den Slave Ursprung IP nicht bekommen

Der Redis-Master muss Slave die Ursprungs-IP erhalten und sich beim Sentinel registrieren. Sentinel wird verwendet, um den Master zu wechseln, wenn der Master fehlgeschlagen ist.

Aber mein Docker startet ohne das Flag iptables = false (Es wird ein iptables wie SNAT erstellen), so dass die Redis-Slave-Quell-IP wird SNAT sein, und der Master wird die IP von Flanel0 wie 172.16.103.0 bekommen.

Ich füge auch das Flanell-Netzwerk zu Container-Verbindung zwischen Knoten.

Also die Frage ist "Ist eine Möglichkeit, die Quell-IP zu erhalten, ohne das Iptables-Flag zu entfernen, oder eine andere Möglichkeit, ein zuverlässiges Redis Cluster zu erstellen."

Antwort

2

EDIT: Ich habe die magische Kombination von Flags herausgefunden, um das zu funktionieren.

1) Laufstopp Docker & die Bootstrap-Docker verarbeitet

systemctl stop docker && pkill -f "docker-bootstrap" && sleep 10 

2) iptables-Regeln löschen:

iptables -F && iptables -t nat -F 

3) führen Sie Ihre Docker-Daemon mit der ip-masq = false Option
4) renne deinen flanneld mit der Option ip-masq = true

Für mich macht das alle drei pod-> pod, pod-> ext, & ext-> Service-> Pod perfekt funktionieren.

Hoffe das funktioniert für den Rest von euch!


(Preserving Anfangsantwort, die die Symptome beschrieben)

I mit der Führung das gleiche Problem habe. Der Slave repliziert sehr gut, aber der Master kann den Slave-Status nicht richtig überprüfen, da die Verbindung von der Punkt-Null-IP kommt.

Proto Recv-Q Send-Q Local Address   Foreign Address   State  

Beispiel Slave-> Master-Verbindung von der Master-Perspektive (zeigt falsche IP-Slave):

tcp 0  0 redis-master:6379  10.1.37.0:51674   ESTABLISHED 

Beispiel Slave-> Master-Verbindung von Slave-Perspektive (rechts ip von Master zeigt):

Hier sind die Redis-Server-Befehle von PS.

Master:

root 12 0.1 0.2 26876 2352 ? Sl 10:42 0:02 redis-server 10.1.90.2:6379 

Slave:

root 18 0.1 0.2 26876 2300 ? Sl 10:48 0:00 redis-server 10.1.37.3:6379 
+0

wir sehen das gleiche, haben Sie Fortschritte gemacht? –

+0

https://github.com/antirez/redis/issues/2527 –

+0

@AndySmith ja, bitte sehen Sie meine angepasste Antwort :) P. S. Stellen Sie sicher, Flanell ip-masq läuft auf allen Knoten – ssjcory

0

Wir haben es geschafft, dies zu umgehen, indem hostNetworking: true in unseren redis Schoten zu setzen. Dies bedeutet, dass die Redis-Server keine Container-IPs erhalten (172 ..) und es ist definitiv ein Problem, behebt das Problem jedoch.

+0

Ich repariere es auf diese Weise. Danke vielmals. – zhulinhong

Verwandte Themen