使用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中提取预构建的镜像。

 docker pull bitnami/redis-sentinel:latest

要使用特定版本,你可以拉取版本化标签。你可以在 Docker Hub Registry 中查看可用版本的列表。

 docker pull bitnami/redis-sentinel:[TAG]

如果你愿意,你也可以自己构建镜像。

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 步:创建网络

docker network create redis-sharednet --driver bridge
# swarm 跨节点
docker network create -d overlay --attachable redis-sharednet

第 2 步:启动 Redis® 实例

使用命令的--network app-tier参数,将 Redis® 容器附加到app-tier网络。


# 从节点docker run -d --name redis-server \-e ALLOW_EMPTY_PASSWORD=yes \--network app-tier \bitnami/redis:4.0.14# swarm 跨节点
# 主节点
docker run -d --name redis-server -p 6388:6379\-e REDIS_REPLICATION_MODE=master \-e REDIS_PASSWORD=root123 \--network redis-sharednet \bitnami/redis:4.0.14

第 3 步:启动你的 Redis® Sentinel 实例

最后,我们创建一个新的容器实例来启动 Redis® 客户端并连接到上一步中创建的服务器:

docker run -it --rm \-e REDIS_MASTER_HOST=redis-server \--network app-tier \bitnami/redis-sentinel:4.0.14# swarm 跨节点# 从节点
docker run -d --name redis-slave -p 6399:6379\-e REDIS_REPLICATION_MODE=slave \-e REDIS_MASTER_HOST=redis-server \-e REDIS_MASTER_PASSWORD=root123 \-e REDIS_PASSWORD=root123 \--network redis-sharednet \bitnami/redis:4.0.14# 哨兵节点
docker run -d --name redis-sentinel \-e REDIS_MASTER_HOST=redis-server \-e REDIS_MASTER_PASSWORD=root123 \--network redis-sharednet \bitnami/redis-sentinel:4.0.14docker run -d --name redis-sentinel-02 \-e REDIS_MASTER_HOST=redis-server \-e REDIS_MASTER_PASSWORD=root123 \--network redis-sharednet \bitnami/redis-sentinel:4.0.14docker run -d --name redis-sentinel-03 \-e REDIS_MASTER_HOST=redis-server \-e REDIS_MASTER_PASSWORD=root123 \--network redis-sharednet \bitnami/redis-sentinel:4.0.14

使用 Docker 撰写

如果未指定,Docker Compose 会自动设置一个新网络并将所有已部署的服务附加到该网络。但是,我们将明确定义一个bridge名为 的新网络app-tier。在此示例中,我们假设你希望从你自己的自定义应用程序镜像连接到 Redis® 服务器,该镜像在以下代码段中由服务名称标识myapp

version: '2'networks:app-tier:driver: bridgeservices:redis:image: 'bitnami/redis:latest'environment:- ALLOW_EMPTY_PASSWORD=yesnetworks:- app-tierredis-sentinel:image: 'bitnami/redis-sentinel:latest'environment:- REDIS_MASTER_HOST=redisports:- '26379:26379'networks:- app-tier

使用以下命令启动容器:

docker-compose up -d

使用主从设置

在 Master-Slave 设置中使用 Sentinel 时,如果要设置 Master 和 Slave 节点的密码,请考虑为它们设置相同 REDIS_PASSWORD的密码REDIS_MASTER_PASSWORD(#23)。

version: '2'networks:app-tier:driver: bridgeservices:redis:image: 'bitnami/redis:latest'environment:- REDIS_REPLICATION_MODE=master- REDIS_PASSWORD=str0ng_passw0rdnetworks:- app-tierports:- '6379'redis-slave:image: 'bitnami/redis:latest'environment:- REDIS_REPLICATION_MODE=slave- REDIS_MASTER_HOST=redis- REDIS_MASTER_PASSWORD=str0ng_passw0rd- REDIS_PASSWORD=str0ng_passw0rdports:- '6379'depends_on:- redisnetworks:- app-tierredis-sentinel:image: 'bitnami/redis-sentinel:latest'environment:- REDIS_MASTER_PASSWORD=str0ng_passw0rddepends_on:- redis- redis-slaveports:- '26379-26381:26379'networks:- app-tier

使用以下命令启动容器:

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.

  1. 使用docker run

    docker run --name redis-sentinel \-v /path/to/certs:/opt/bitnami/redis/certs \-v /path/to/redis-sentinel/persistence:/bitnami \-e REDIS_MASTER_HOST=redis \-e REDIS_SENTINEL_TLS_ENABLED=yes \-e REDIS_SENTINEL_TLS_CERT_FILE=/opt/bitnami/redis/certs/redis.crt \-e REDIS_SENTINEL_TLS_KEY_FILE=/opt/bitnami/redis/certs/redis.key \-e REDIS_SENTINEL_TLS_CA_FILE=/opt/bitnami/redis/certs/redisCA.crt \bitnami/redis-cluster:latestbitnami/redis-sentinel:latest
    
  2. 修改docker-compose.yml此存储库中存在的文件:

      redis-sentinel:...environment:...- REDIS_SENTINEL_TLS_ENABLED=yes- REDIS_SENTINEL_TLS_CERT_FILE=/opt/bitnami/redis/certs/redis.crt- REDIS_SENTINEL_TLS_KEY_FILE=/opt/bitnami/redis/certs/redis.key- REDIS_SENTINEL_TLS_CA_FILE=/opt/bitnami/redis/certs/redisCA.crt...volumes:- /path/to/certs:/opt/bitnami/redis/certs......
    

或者,你也可以在自定义配置文件中提供此配置。

配置文件

该镜像在/bitnami/redis-sentinel/conf/. 你可以/bitnami/path/to/redis-persistence/redis-sentinel/conf/. conf/如果目录为空,则默认配置将填充到目录中。

第 1 步:运行 Redis® Sentinel 镜像

运行 Redis® Sentinel 镜像,从你的主机挂载一个目录。

docker run --name redis-sentinel \-e REDIS_MASTER_HOST=redis \-v /path/to/redis-sentinel/persistence:/bitnami \bitnami/redis-sentinel:latest

你还可以修改docker-compose.yml此存储库中存在的文件:

services:redis-sentinel:...volumes:- /path/to/redis-persistence:/bitnami...

第 2 步:编辑配置

使用你喜欢的编辑器编辑主机上的配置。

vi /path/to/redis-persistence/redis-sentinel/conf/redis.conf

第 3 步:重新启动 Redis®

更改配置后,重新启动 Redis® 容器以使更改生效。

docker restart redis

或使用 Docker 撰写:

docker-compose restart redis

有关配置选项的完整列表,请参阅Redis® 配置手册。

日志记录

Bitnami Redis® Sentinel Docker Image 将容器日志发送到stdout. 查看日志:

docker logs redis

或使用 Docker 撰写:

docker-compose logs redis

如果你希望以不同的方式使用容器日志,你可以使用该选项配置容器日志记录驱动程序。--log-driver在默认配置中,docker 使用json-file驱动程序。

维护

升级此镜像

Bitnami 在上游制作后不久就提供最新版本的 Redis® Sentinel,包括安全补丁。我们建议你按照以下步骤升级你的容器。

第 1 步:获取更新后的镜像

docker pull bitnami/redis-sentinel:latest

或者,如果你使用的是 Docker Compose,请将 image 属性的值更新为 bitnami/redis-sentinel:latest.

第 2 步:停止并备份当前正在运行的容器

使用命令停止当前运行的容器

docker stop redis

或使用 Docker 撰写:

docker-compose stop redis

接下来,使用以下命令拍摄持久卷的快照/path/to/redis-persistence

rsync -a /path/to/redis-persistence /path/to/redis-persistence.bkp.$(date +%Y%m%d-%H.%M.%S)

第三步:移除当前运行的容器

docker rm -v redis

或使用 Docker 撰写:

docker-compose rm -v redis

第四步:运行新镜像

从新镜像重新创建你的容器。

docker run --name redis bitnami/redis-sentinel:latest

或使用 Docker 撰写:

docker-compose up redis

使用bitnamiredis-sentinel部署Redis 哨兵模式相关推荐

  1. docker redis 配置文件_Docker在一台机器部署redis哨兵模式——完整步骤和截图

    本文记录本人在一台机器上配置一主两从三哨兵redis哨兵模式 一.环境 操作系统:centos7 docker版本:1.13.1 二.操作 docker安装redis docker pull redi ...

  2. redis哨兵模式出现connected_slaves:0解决办法

    本人菜鸡一枚,只是记录自己的错误,不对请大神纠正. linux的部署redis哨兵模式时出现connected_slaves:0 本人不会拔日志就死命找,最后发现在配置主从关系时缺少从节点配置(我的主 ...

  3. redis哨兵模式没有切换主机_Redis哨兵(Sentinel)模式

    Redis哨兵(Sentinel)模式 在这里插入图片描述 一.主从复制高可用 当我们使用主从复制出现的问题 手动故障转移 写能力和存储能力受限 主从复制 -master 宕机故障处理 主从切换技术的 ...

  4. redis哨兵模式-sentinel ,java客户端动态切换master

    redis 的搭建模式 单机模式 : 单机服务 主从模式: 有备机,备机提供备份,和 读写分离的功能 哨兵模式: master宕机后,哨兵会选举备机替换master 集群模式: 集群能够做分布式,ma ...

  5. Redis哨兵模式部署

    Redis哨兵模式部署 一. 部署好Redis主从复制模式,可以参考主从复制部署 二. 在下载好的Redis压缩包中我们可以看到sentinel.conf文件,这个文件就是启动哨兵的配置文件 三. 修 ...

  6. 部署支持使用Redis哨兵模式,支持纳管ClickHouse数据库,JumpServer堡垒机v2.28.0发布

    2022年11月21日,JumpServer开源堡垒机正式发布v2.28.0版本.在这一版本中,JumpServer的部署支持使用Redis哨兵集群作为后端缓存数据库,从而使系统更加健壮和高可用.操作 ...

  7. Redis哨兵模式(Sentinel)

    哨兵模式 概述 主从切换技术的操作是:当主机宕机后,需要手动把一台从机切换为主机.这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. Re ...

  8. k8s redis集群_基于K8S部署redis哨兵集群

    本 文 主 要 内 容 什么是Kubernetes分布式容器管理平台 PaaS平台redis-sentinel集群架构简介 PaaS平台部署redis哨兵集群 redis-sentinel容器测试及验 ...

  9. 哨兵2号波段_分布式框架之高性能:Redis哨兵模式

    本文首发于Ressmix个人站点:https://www.tpvlog.com 我们在搭建Redis的主从架构时,主节点一旦由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主 ...

最新文章

  1. 【机器学习】理解方差、偏差且其泛化误差的关系
  2. SAP事业部内部互供
  3. Android 判断当前联网的类型 wifi、移动数据流量
  4. CHM文件显示目录无法显示内容的解决方案
  5. LeetCode(38): 报数
  6. java采集温湿度水浸_机房水浸传感器:智能生活不可或缺的漏水传感器
  7. 你想知道的容器混合云问题,答案都在这里!
  8. mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表
  9. 【英语学习】【医学】无机化学 - 化合物命名(2) - 非金属类二元化合物
  10. 检查硬件变化的命令kudzu
  11. 【HDU1166】敌兵布阵(树状数组或线段树)
  12. steam登录api_steam饰品骗术——骗你说你的账户违反了 Steam 服务协议条款,然后让你转出库存给你的好友。...
  13. 西门子estop指令_西门子6RA80直流调速器调试步骤和参数设置
  14. 2021/7/27 Ubuntu18.04 安装 PCL记录
  15. ARM架构与系列简介
  16. linux中重要文件夹介绍
  17. RK3399平台开发系列讲解(USB网卡)5.47、USBNET驱动模型
  18. 实战丨Web云开发项目—TodoList待办事项
  19. 2023浙江师范大学计算机考研信息汇总
  20. LeetCode笔记05:最长公共前缀

热门文章

  1. meanshift 的跟踪原理解析
  2. TCP: request_sock_TCP: Possible SYN flooding on port 80. Sending cookies. Check SNMP counters
  3. 材料力学I(第六版-刘鸿文主编)思维导图
  4. python数列求和1+11+111前n项_2020年《python程序设计》基础知识及程序设计598题IQ[含参考答案]...
  5. 达观数据基于Deep Learning的中文分词尝试
  6. 自己动手尝试学习软件winchm pro -从小白到老白
  7. 二冲港交所,嘀嗒出行“顺风车领头羊”的故事真的动听吗?
  8. 2020年3月计算机等级二级MS Office考试模拟软件是一款功能强大的全国计算机等级考试题库模拟软件
  9. 优秀企业最大的特征是专注
  10. 微信小程序点击时如何获取当前id