【问题标题】:Redis sentinel docker image / DockerfileRedis 哨兵 docker 镜像 / Dockerfile
【发布时间】:2014-11-12 22:05:59
【问题描述】:

我希望在 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...但是如果您阅读上面的帖子,您会看到我的 cmets (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

【问题讨论】:

    标签: redis docker coreos redis-sentinel


    【解决方案1】:

    经过大量的工作,我最终弄清楚了这一点。对于任何想通过 Docker 部署高可用性 redis 实例的人来说,这里是为了使其变得简单:

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

    【讨论】:

    • 嘿,Joshula - 我已将您的 docker 文件合并到一个 script 中,该文件设置了一个具有哨兵配置的主/从集群。如果您可以查看它并提供反馈,那就太好了?
    • 嗨,马克,看起来不错,在您继续前进时要记住一些注意事项:announce-ip 配置是在版本 +2.8.15 中添加的(所以请注意版本) .请确保在生产环境中(哨兵都在不同的物理机器上)“announce-ip”引用物理主机的 IP。此外,我(和其他一些人已经确认)在容器中运行 Redis 时会出现性能问题——特别是围绕 Docker 引入的额外网络层/桥......
    • 所以,我决定在物理机器上安装/运行 Redis(生产中)(正如 Antirez 和 Mattsta 在上面的帖子中所说,Redis 和 Sentinel 尚未完全设计/优化以运行在类似 Docker 的环境中。
    • 感谢您的反馈 - 我运行此程序纯粹是为了开发,但请注意。这很有趣,因为那里有很多 Redis 容器!
    • 您有机会为此发布 Dockerfile 吗?你有 GitHub 存储库吗?
    【解决方案2】:

    不需要自定义标记图像,也不需要网络。使用Spring Data Redisbitnami/redisbitnami/redis-sentinel 图像查看我的redis-ha-learning 项目。 Docker Compose 文件是here。 我的代码根据 Docker Compose 容器名称自动检测哨兵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2013-10-19
      相关资源
      最近更新 更多