2014-09-18 19 views
8

Ich bin auf der Suche nach Hochverfügbarkeit Redis auf einem CoreOS-Cluster, und ich brauche ein Redis Sentinel Docker-Image (d. H. Dockerfile), die funktioniert. Ich habe genügend Informationen/Expertise gesammelt, um eine zu erstellen (denke ich) ... aber mein begrenztes Wissen/meine Erfahrung mit fortgeschrittener Vernetzung ist die einzige Sache, die mich davon abhält, sie aufzubauen und zu teilen.Redis Sentinel Docker Bild/Dockerfile

Kann jemand, der ein Experte hier ist, mir helfen, eine Redis Sentinel Dockerfile (keine existiert gerade) zu entwickeln? Die Redis/Docker-Community würde davon wirklich profitieren.

Hier ist das allgemeinere Thema und Kontext: https://github.com/antirez/redis/pull/1908

Ich denke, die Lösung hier ist speziell: https://github.com/antirez/redis/pull/1908#issuecomment-54380876

Hier ist die Dockerfile Ich habe mit ... aber wenn man den Faden oben gelesen Du wirst meine Kommentare (Joshula) sehen ... es fehlen die Netzwerk-Fixes, über die Mattsta spricht. Beachten Sie, dass alle Konfigurationseinstellungen in der Datei sentinel.conf zur Laufzeit über die Befehlszeile (daher ENTRYPOINT) festgelegt werden, da ich dies auf dem coreOS verwende.

# Pull base image. 
FROM dockerfile/ubuntu:latest 

# Install Redis. 
RUN \ 
    cd /tmp && \ 
    wget http://download.redis.io/redis-stable.tar.gz && \ 
    tar xvzf redis-stable.tar.gz && \ 
    cd redis-stable && \ 
    make && \ 
    make install && \ 
    cp -f src/redis-sentinel /usr/local/bin && \ 
    mkdir -p /etc/redis && \ 
    cp -f *.conf /etc/redis && \ 
    rm -rf /tmp/redis-stable* && \ 
    sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && \ 
    sed -i 's/^\(daemonize .*\)$/# \1/' /etc/redis/redis.conf && \ 
    sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/redis/redis.conf && \ 
    sed -i 's/^\(logfile .*\)$/# \1/' /etc/redis/redis.conf 

# Define mountable directories. 
VOLUME ["/data"] 

# Define working directory. 
WORKDIR /data 

# Expose ports. 
EXPOSE 26379 

# Define default command. 
ENTRYPOINT redis-sentinel /etc/redis/sentinel.conf 

Antwort

11

Nach einer Menge Arbeit, habe ich herausgefunden, dies herauszufinden. Hier ist zu machen es einfach für alle anderen, die eine hochverfügbare redis Instanz über Docker einsetzen will:

https://registry.hub.docker.com/u/joshula/redis-sentinel/

+0

Hey, Joshula - Ich habe Ihre Docker-Datei in ein [Skript] integriert (https: // Github .com/mdevilliers/docker-redescluster), die einen Master/Slave-Cluster mit Sentinel-Konfiguration einrichtet. Großartig, wenn Sie es sich anschauen und Feedback geben könnten? – markdevilliers

+0

Hallo Mark, das sieht ziemlich gut aus, ein paar Notizen, die man nur im Kopf behalten sollte: Die announce-ip config wurde in der Version +2.8.15 hinzugefügt (also seien Sie sich der Versionen bewusst). Bitte stellen Sie sicher, dass 'announce-ip' in einer Produktionsumgebung (in der sich alle Sentinels auf verschiedenen physischen Maschinen befinden) auf die IP des physischen Host-Rechners referenziert. Außerdem habe ich (und einige andere Leute haben bestätigt) Leistungsprobleme, wenn Redis in einem Container ausgeführt wird - speziell um die zusätzlichen Netzwerkebenen/Brücken, die Docker einführt ... – joshula

+0

Also, ich habe entschieden, Redis zu installieren/laufen zu lassen (in Produktion)) auf einer physischen Maschine (wie Antirez und Mattsta in den obigen Beiträgen sagten, Redis und Sentinel sind noch nicht vollständig für eine Docker-artige Umgebung ausgelegt/optimiert. – joshula

Verwandte Themen