2014-09-18 37 views
8

Sto cercando di distribuire Redis ad alta disponibilità su un cluster coreOS e ho bisogno di un'immagine di finestra mobile Redis Sentinel (ad esempio Dockerfile) che funzioni. Ho raccolto abbastanza informazioni/competenze per crearne uno (credo) ... ma la mia limitata conoscenza/esperienza con il networking avanzato è l'unica cosa che mi impedisce di costruirlo e condividerlo.Immagine docker sentinella Redis/Dockerfile

Può qualcuno che è un esperto qui aiutarmi a sviluppare un Redis Sentinel Dockerfile (nessuno esiste in questo momento)? La comunità Redis/Docker trarrebbe davvero vantaggio da questo.

Ecco la questione più ampia e il contesto: https://github.com/antirez/redis/pull/1908

Penso che la soluzione è proprio qui specificamente: https://github.com/antirez/redis/pull/1908#issuecomment-54380876

Ecco il Dockerfile ho usato ... ma se leggete il filo sopra vedrai i miei commenti (joshula) ... mancano le correzioni di Networking di cui sta parlando mattsta. Nota che poiché sto usando questo su coreOS, tutte le impostazioni di configurazione in sentinel.conf vengono impostate in fase di esecuzione tramite la riga di comando (quindi ENTRYPOINT).

# 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 

risposta

11

Dopo un sacco di lavoro, ho finito per capirlo. Ecco a che lo rende semplice per chiunque altro che vuole distribuire un'istanza Redis altamente disponibile tramite Docker:

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

+0

Hey, Joshula - Ho incorporato il file finestra mobile in uno [Script] (https: // GitHub .com/mdevilliers/docker-rediscluster) che imposta un cluster master/slave con configurazione sentinella. Ottimo se si potesse dare un'occhiata e feedback? – markdevilliers

+0

Ciao Mark, sembra abbastanza buono, alcune note da tenere a mente mentre vai avanti: la configurazione di annunci-ip è stata aggiunta nella versione +2.8.15 (quindi tieni a mente le versioni). Assicurati che in un ambiente di produzione (dove le sentinelle sono tutte su macchine fisiche diverse) che 'announce-ip' faccia riferimento all'IP della macchina host fisica. Inoltre, io (e alcuni altri hanno confermato) problemi di prestazioni durante l'esecuzione di Redis in un contenitore, in particolare attorno ai livelli/bridge di rete aggiuntivi introdotti da Docker ... – joshula

+0

Quindi, ho deciso di installare/eseguire Redis (in produzione) su una macchina fisica (come hanno detto Antirez e Mattsta nei post precedenti, Redis e Sentinel non sono ancora stati completamente progettati/ottimizzati per funzionare in un ambiente simile a Docker. – joshula

Problemi correlati