利用bitnamiredis-sentinel部署Redis 哨兵模式

打印 上一主题 下一主题

主题 981|帖子 981|积分 2943

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
利用bitnami/redis-sentinel部署Redis 哨兵模式

为什么利用 Bitnami 镜像?



  • Bitnami 密切跟踪上游源代码更改,并利用我们的主动化系统及时发布此镜像的新版本。
  • 借助 Bitnami 镜像,可以尽快提供最新的错误修复和功能。
  • Bitnami 容器、虚拟机和云镜像利用雷同的组件和配置方法 - 可以根据你的项目需求轻松切换格式。
  • 我们全部的镜像都基于minideb,这是一个基于 Debian 的极简容器镜像,它为你提供了一个小型底子容器镜像和领先 Linux 发行版的熟悉度。
  • Docker Hub 中可用的全部 Bitnami 镜像都利用Docker Content Trust (DCT)进行署名。你可以利用它DOCKER_CONTENT_TRUST=1来验证镜像的完整性。
  • Bitnami 容器镜像会定期发布,并提供最新的分发包。
获取此镜像

获取 Bitnami Redis Sentinel Docker 镜像的保举方法是从Docker Hub Registry中提取预构建的镜像。
  1. docker pull bitnami/redis-sentinel:latest
复制代码
要利用特定版本,你可以拉取版本化标签。你可以在 Docker Hub Registry 中查看可用版本的列表。
  1. docker pull bitnami/redis-sentinel:[TAG]
复制代码
如果你乐意,你也可以本身构建镜像。
  1. docker build -t bitnami/redis-sentinel:latest 'https://github.com/bitnami/bitnami-docker-redis-sentinel.git#master:7.0/debian-11'
复制代码
毗连到其他容器

利用Docker 容器网络,你的应用程序容器可以轻松访问在容器内运行的 Redis 服务器。
毗连到同一网络的容器可以利用容器名称作为主机名相互通讯。
利用命令行

在此示例中,我们将创建一个 Redis Sentinel 实例,该实例将监视在同一 docker 网络上运行的 Redis 实例
第 1 步:创建网络

  1. docker network create redis-sharednet --driver bridge
  2. # swarm 跨节点
  3. docker network create -d overlay --attachable redis-sharednet
复制代码
第 2 步:启动 Redis 实例

利用命令的--network app-tier参数,将 Redis 容器附加到app-tier网络。
  1. # 从节点docker run -d --name redis-server
  2.     -e ALLOW_EMPTY_PASSWORD=yes
  3.     --network app-tier
  4.     bitnami/redis:4.0.14
  5.    
  6. # swarm 跨节点  
  7. # 主节点
  8. docker run -d --name redis-server -p 6388:6379
  9.     -e REDIS_REPLICATION_MODE=master
  10.     -e REDIS_PASSWORD=root123
  11.     --network redis-sharednet
  12.     bitnami/redis:4.0.14
复制代码
第 3 步:启动你的 Redis Sentinel 实例

末了,我们创建一个新的容器实例来启动 Redis 客户端并毗连到上一步中创建的服务器:
  1. docker run -it --rm
  2.     -e REDIS_MASTER_HOST=redis-server
  3.     --network app-tier
  4.     bitnami/redis-sentinel:4.0.14
  5.    
  6.    
  7. # swarm 跨节点
  8. # 从节点
  9. docker run -d --name redis-slave -p 6399:6379
  10.     -e REDIS_REPLICATION_MODE=slave
  11.     -e REDIS_MASTER_HOST=redis-server
  12.     -e REDIS_MASTER_PASSWORD=root123
  13.     -e REDIS_PASSWORD=root123
  14.     --network redis-sharednet
  15.     bitnami/redis:4.0.14
  16.    
  17. # 哨兵节点   
  18. docker run -d --name redis-sentinel
  19.     -e REDIS_MASTER_HOST=redis-server
  20.     -e REDIS_MASTER_PASSWORD=root123
  21.     --network redis-sharednet
  22.     bitnami/redis-sentinel:4.0.14
  23.    
  24. docker run -d --name redis-sentinel-02
  25.     -e REDIS_MASTER_HOST=redis-server
  26.     -e REDIS_MASTER_PASSWORD=root123
  27.     --network redis-sharednet
  28.     bitnami/redis-sentinel:4.0.14
  29. docker run -d --name redis-sentinel-03
  30.     -e REDIS_MASTER_HOST=redis-server
  31.     -e REDIS_MASTER_PASSWORD=root123
  32.     --network redis-sharednet
  33.     bitnami/redis-sentinel:4.0.14
复制代码
利用 Docker 撰写

如果未指定,Docker Compose 会主动设置一个新网络并将全部已部署的服务附加到该网络。但是,我们将明确定义一个bridge名为 的新网络app-tier。在此示例中,我们假设你希望从你本身的自定义应用程序镜像毗连到 Redis 服务器,该镜像在以下代码段中由服务名称标识myapp。
  1. version: '2'
  2. networks:
  3.   app-tier:
  4.     driver: bridge
  5. services:
  6.   redis:
  7.     image: 'bitnami/redis:latest'
  8.     environment:
  9.       - ALLOW_EMPTY_PASSWORD=yes
  10.     networks:
  11.       - app-tier
  12.   redis-sentinel:
  13.     image: 'bitnami/redis-sentinel:latest'
  14.     environment:
  15.       - REDIS_MASTER_HOST=redis
  16.     ports:
  17.       - '26379:26379'
  18.     networks:
  19.       - app-tier
复制代码
利用以下命令启动容器:
  1. docker-compose up -d
复制代码
利用主从设置

在 Master-Slave 设置中利用 Sentinel 时,如果要设置 Master 和 Slave 节点的密码,请考虑为它们设置雷同 REDIS_PASSWORD的密码REDIS_MASTER_PASSWORD(#23)。
  1. version: '2'
  2. networks:
  3.   app-tier:
  4.     driver: bridge
  5. services:
  6.   redis:
  7.     image: 'bitnami/redis:latest'
  8.     environment:
  9.       - REDIS_REPLICATION_MODE=master
  10.       - REDIS_PASSWORD=str0ng_passw0rd
  11.     networks:
  12.       - app-tier
  13.     ports:
  14.       - '6379'
  15.   redis-slave:
  16.     image: 'bitnami/redis:latest'
  17.     environment:
  18.       - REDIS_REPLICATION_MODE=slave
  19.       - REDIS_MASTER_HOST=redis
  20.       - REDIS_MASTER_PASSWORD=str0ng_passw0rd
  21.       - REDIS_PASSWORD=str0ng_passw0rd
  22.     ports:
  23.       - '6379'
  24.     depends_on:
  25.       - redis
  26.     networks:
  27.       - app-tier
  28.   
  29.   redis-sentinel:
  30.     image: 'bitnami/redis-sentinel:latest'
  31.     environment:
  32.       - REDIS_MASTER_PASSWORD=str0ng_passw0rd
  33.     depends_on:
  34.       - redis
  35.       - redis-slave
  36.     ports:
  37.       - '26379-26381:26379'
  38.     networks:
  39.       - app-tier
复制代码
利用以下命令启动容器:
  1. docker-compose up --scale redis-sentinel=3 -d
复制代码
配置

情况变量

Redis Sentinel 实例可以通过在第一次运行时指定情况变量来定制。提供以下情况值以自定义 Redis Sentinel:


  • REDIS_MASTER_HOST:要监控的 Redis 主控的主机。默认值:redis
  • REDIS_MASTER_PORT_NUMBER:要监控的 Redis master 的端口。默认值:6379
  • REDIS_MASTER_SET:要监控的 Redis 实例集的名称。默认值:mymaster
  • REDIS_MASTER_PASSWORD:与主服务器进行身份验证的密码。没有默认值。作为替代方案,你可以利用密码挂载文件并设置REDIS_MASTER_PASSWORD_FILE变量。
  • REDIS_MASTER_USER: 为 master 启用 ACL 时进行身份验证的用户名。没有默认值。这仅适用于 Redis 6 或更高版本。如果未指定,Redis Sentinel 将实验仅利用密码进行身份验证(利用sentinel auth-pass <master-name> <password>)。
  • REDIS_SENTINEL_PORT_NUMBER:Redis 哨兵端口。默认值:26379
  • REDIS_SENTINEL_QUORUM:需要就 master 不可访问这一究竟告竣同等的 Sentinel 数量。默认值:2
  • REDIS_SENTINEL_PASSWORD:利用此哨兵进行身份验证和向其他哨兵进行身份验证的密码。没有默认值。全部哨兵都需要雷同。作为替代方案,你可以利用密码挂载文件并设置REDIS_SENTINEL_PASSWORD_FILE变量。
  • REDIS_SENTINEL_DOWN_AFTER_MILLISECONDS: 公布 master 关闭之前的毫秒数。默认值:60000
  • REDIS_SENTINEL_FAILOVER_TIMEOUT:以毫秒为单位指定故障转移超时。默认值:180000
  • REDIS_SENTINEL_RESOLVE_HOSTNAMES:启用哨兵主机名支持。这仅适用于 Redis 6.2 或更高版本。默认值:
  • REDIS_SENTINEL_TLS_ENABLED:是否为流量启用 TLS。默认值:
  • REDIS_SENTINEL_TLS_PORT_NUMBER:用于 TLS 安全流量的端口。默认值:26379
  • REDIS_SENTINEL_TLS_CERT_FILE:包罗 TLS 流量的证书文件的文件。没有默认值。
  • REDIS_SENTINEL_TLS_KEY_FILE:包罗证书密钥的文件。没有默认值。
  • REDIS_SENTINEL_TLS_CA_FILE: 包罗证书 CA 的文件。没有默认值。
  • REDIS_SENTINEL_TLS_DH_PARAMS_FILE: 包罗 DH 参数的文件(为了支持基于 DH 的密码)。没有默认值。
  • REDIS_SENTINEL_TLS_AUTH_CLIENTS:是否要求客户端进行身份验证。默认值:
  • REDIS_SENTINEL_ANNOUNCE_IP:在 HELLO 消息中利用指定的 IP 地点来八卦它的存在。默认值:主动检测到的本地地点
  • REDIS_SENTINEL_ANNOUNCE_PORT: 利用 HELLO 消息中的指定端口来八卦它的存在。默认值:在 中指定的端口REDIS_SENTINEL_PORT_NUMBER
保护 Redis Sentinel 流量

从版本 6 开始,Redis 添加了对 SSL/TLS 毗连的支持。如果你希望启用此可选功能,你可以利用上述REDIS_SENTINEL_TLS_*情况变量来配置应用程序。
启用 TLS 时,默认情况下会禁用通例标准流量。然而,这个新功能并不是相互排斥的,这意味着可以同时监听 TLS 和非 TLS 毗连。要启用非 TLS 流量,请设置REDIS_SENTINEL_PORT_NUMBER为不同于0.

  • 利用docker run
    1. docker run --name redis-sentinel
    2.     -v /path/to/certs:/opt/bitnami/redis/certs
    3.     -v /path/to/redis-sentinel/persistence:/bitnami
    4.     -e REDIS_MASTER_HOST=redis
    5.     -e REDIS_SENTINEL_TLS_ENABLED=yes
    6.     -e REDIS_SENTINEL_TLS_CERT_FILE=/opt/bitnami/redis/certs/redis.crt
    7.     -e REDIS_SENTINEL_TLS_KEY_FILE=/opt/bitnami/redis/certs/redis.key
    8.     -e REDIS_SENTINEL_TLS_CA_FILE=/opt/bitnami/redis/certs/redisCA.crt
    9.     bitnami/redis-cluster:latest
    10.     bitnami/redis-sentinel:latest
    复制代码
  • 修改docker-compose.yml此存储库中存在的文件:
    1.   redis-sentinel:
    2.   ...
    3.     environment:
    4.       ...
    5.       - REDIS_SENTINEL_TLS_ENABLED=yes
    6.       - REDIS_SENTINEL_TLS_CERT_FILE=/opt/bitnami/redis/certs/redis.crt
    7.       - REDIS_SENTINEL_TLS_KEY_FILE=/opt/bitnami/redis/certs/redis.key
    8.       - REDIS_SENTINEL_TLS_CA_FILE=/opt/bitnami/redis/certs/redisCA.crt
    9.     ...
    10.     volumes:
    11.       - /path/to/certs:/opt/bitnami/redis/certs
    12.     ...
    13.   ...
    复制代码
或者,你也可以在自定义配置文件中提供此配置。
配置文件

该镜像在/bitnami/redis-sentinel/conf/. 你可以/bitnami在/path/to/redis-persistence/redis-sentinel/conf/. conf/如果目次为空,则默认配置将填充到目次中。
第 1 步:运行 Redis Sentinel 镜像

运行 Redis Sentinel 镜像,从你的主机挂载一个目次。
  1. docker run --name redis-sentinel
  2.     -e REDIS_MASTER_HOST=redis
  3.     -v /path/to/redis-sentinel/persistence:/bitnami
  4.     bitnami/redis-sentinel:latest
复制代码
你还可以修改[这里是代码055]此存储库中存在的文件:
  1. services:
  2.   redis-sentinel:
  3.   ...
  4.     volumes:
  5.       - /path/to/redis-persistence:/bitnami
  6.   ...
复制代码
第 2 步:编辑配置

利用你喜欢的编辑器编辑主机上的配置。
  1. vi /path/to/redis-persistence/redis-sentinel/conf/redis.conf
复制代码
第 3 步:重新启动 Redis

更改配置后,重新启动 Redis 容器以使更改见效。
  1. docker restart redis
复制代码
或利用 Docker 撰写:
  1. docker-compose restart redis
复制代码
有关配置选项的完整列表,请参阅Redis? 配置手册。
日志记录

Bitnami Redis Sentinel Docker Image 将容器日志发送到stdout. 查看日志:
  1. docker logs redis
复制代码
或利用 Docker 撰写:
  1. docker-compose logs redis
复制代码
如果你希望以不同的方式利用容器日志,你可以利用该选项配置容器日志记录驱动程序。--log-driver在默认配置中,docker 利用json-file驱动程序。
维护

升级此镜像

Bitnami 在上游制作后不久就提供最新版本的 Redis Sentinel,包罗安全补丁。我们建议你按照以下步骤升级你的容器。
第 1 步:获取更新后的镜像

  1. docker pull bitnami/redis-sentinel:latest
复制代码
或者,如果你利用的是 Docker Compose,请将 image 属性的值更新为 bitnami/redis-sentinel:latest.
第 2 步:制止并备份当前正在运行的容器

利用命令制止当前运行的容器
  1. docker stop redis
复制代码
或利用 Docker 撰写:
  1. docker-compose stop redis
复制代码
接下来,利用以下命令拍摄恒久卷的快照/path/to/redis-persistence:
  1. rsync -a /path/to/redis-persistence /path/to/redis-persistence.bkp.$(date +%Y%m%d-%H.%M.%S)
复制代码
第三步:移除当前运行的容器

  1. docker rm -v redis
复制代码
或利用 Docker 撰写:
  1. docker-compose rm -v redis
复制代码
第四步:运行新镜像

重新镜像重新创建你的容器。
  1. docker run --name redis bitnami/redis-sentinel:latest
复制代码
或利用 Docker 撰写:
  1. docker-compose up redis
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表