Redis哨兵Docker镜像 / Dockerfile

9
我希望在coreOS集群上部署高可用性Redis,并需要一个工作的Redis Sentinel Docker镜像(即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
2个回答

12

嘿,Joshula - 我已经将你的Docker文件并入了一个脚本中(https://github.com/mdevilliers/docker-rediscluster),该脚本设置了一个带有sentinel配置的主/从集群。如果你能看一下并反馈一下,那就太好了。 - markdevilliers
嗨,马克,看起来很不错,只有几点需要注意:announce-ip配置是在版本+2.8.15中添加的(所以请注意版本)。请确保在生产环境中(其中sentinels都在不同的物理机器上),“announce-ip”引用物理主机机器的IP。此外,我(和其他一些人已经确认)在容器中运行Redis时存在性能问题--具体表现为Docker引入的额外网络层/桥接... - joshula
所以,我决定在物理机器上安装/运行Redis(正如Antirez和Mattsta在上面的帖子中所说,Redis和Sentinel尚未完全设计/优化以在类似Docker的环境中运行。) - joshula
感谢反馈 - 我只是为了开发而运行它,但已经注意到了。有趣的是,有很多Redis容器存在! - markdevilliers
是的,我知道。我已经(通过艰苦的方式)学到了,在为特定用例组装生产系统时,你有点“自己动手”。很多“现成的”东西并不适合生产环境或尚未准备好。 - joshula
1
你可以发一下这个 Dockerfile 吗?你有存储这个文件的 GitHub 仓库吗? - Daniel Eagle

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接