2014-09-18 3 views
8

Я ищу, чтобы развернуть высокую доступность Redis на кластере CoreOS, и мне нужно изображение докеры Redis Sentinel (т. Е. Dockerfile), который работает. Я собрал достаточно информации/опыта для создания одного (я думаю) ... но мои ограниченные знания/опыт работы с передовыми сетями - единственное, что мешает мне создавать и делиться ими.Redis sentinel docker image/Dockerfile

Может ли кто-нибудь, кто является экспертом, помочь мне разработать Redis Sentinel Dockerfile (сейчас нет никого)? Сообщество Redis/Docker действительно выиграет от этого.

Вот более широкий вопрос и контекст: https://github.com/antirez/redis/pull/1908

Я думаю, что решение прямо здесь конкретно: https://github.com/antirez/redis/pull/1908#issuecomment-54380876

Вот Dockerfile я использую ... но если вы читаете нить выше , вы увидите мои комментарии (joshula) ... ему не хватает исправлений в сети, о которых говорит mattsta. Обратите внимание, что, поскольку я использую это в coreOS, любые настройки конфигурации в sentinel.conf устанавливаются во время выполнения через командную строку (следовательно, 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 

ответ

11

После тонны работы я в конечном итоге понял это. Вот, чтобы сделать его простым для всех, кто хочет, чтобы развернуть высокодоступной экземпляр Redis с помощью Докер:

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

+0

Эй, Joshula - Я включен файл Docker в [сценарий] (https: // GitHub .com/mdevilliers/docker-rediscluster), который устанавливает кластер ведущий/подчиненный с дозорной конфигурацией. Отлично, если бы вы могли взглянуть на него и получить обратную связь? – markdevilliers

+0

Привет, Марк, который выглядит довольно неплохо, несколько заметок, которые нужно иметь в виду, когда вы двигаетесь вперед: в версии +2.8.15 добавлена ​​версия объявления-ip-конфигурации (так что просто знайте о версиях). Убедитесь, что в рабочей среде (где все часовые находятся на разных физических машинах), что «announce-ip» ссылается на IP-адрес физического хост-компьютера. Кроме того, я (и некоторые другие люди подтвердили) проблемы с производительностью при запуске Redis в контейнере - особенно вокруг дополнительных сетевых слоев/мостов, которые Docker представляет ... – joshula

+0

Итак, я решил установить/запустить Redis (в производстве) на физической машине (как заявили Antirez и Mattsta в вышеупомянутых сообщениях, Redis и Sentinel еще не были полностью разработаны/оптимизированы для работы в среде, подобной Docker. – joshula

Смежные вопросы