使用docker部署redis-sentinel 和redis-cluster

Docker和Redis搭配进行Sentinel或Cluster使用的大坑 docker默认是使用bridge的网络环境构建container 由于slave是基于对网络环境的检测来告知master自己的IP,类似地,sentinel是也是这样返回有效的master信息以及向其他sentinel广播自身位置,在docker环境中,这通常会导致slave和sentinel无法正常获取真实或有效的IP地址。 通常是类似如下 172.18.0.? 127.0.0.? ... 阅读详情

       写这篇文章的目的并不是为了介绍redis以及它的高可用方案,主要是通过redis各种高可用方案的简单安装,让读者能够通过真实的集群环境更好的体会redis的高可用方案。对redis感兴趣的同学经常会遇到这样的一个问题,没有足够的虚拟机,因此有时候想要自己部署redis各种集群环境时总是显得力不从心,而使用官方的安装包又非常麻烦,因此本文利用docker-compose来快速安装redis,当然,前提是你要会简单使用docker和docker-compose哦。

        话不多说,咱们直接进入正题,下面所有的操作都是在我的一台虚拟机(192.168.174.129)上完成的,读者在使用时可以把配置中涉及到的ip改成自己的实际ip.

        一、单实例的redis

创建  /home/ubuntu/redis/standalone/docker-compose.yml,如下

version: '2'
services:
  redis:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6379:6379

$: cd /home/ubuntu/redis/standalone/

$: docker-compose up -d

然后,一个redis实例就启动好了,就是这么easy。此时只需要使用你的redis client访问192.168.174.129的6379端口就可以愉快的使用redis了,可以简单的验证一下,如下,还是在/home/ubuntu/redis/standalone目录下执行如下命令

$:  docker-compose  exec redis redis-cli

进入redis-cli的命令行,然后就可以在里面验证各种redis命令了

        二、redis一主多从(读写分离)

     创建  /home/ubuntu/redis/repl/docker-compose.yml,如下

version: '2'
services:
  master:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6380:6379

  slave-1:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6381:6379
    command: ["redis-server","--slaveof","192.168.174.129","6380"]

  slave-2:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6382:6379
    command: ["redis-server","--slaveof","192.168.174.129","6380"]

  slave-3:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6383:6379
    command: ["redis-server","--slaveof","192.168.174.129","6382"]

注:slave-3是slave-2的从服务器,slave-2和slave-1是master的从服务器,这样举例主要是为了体现嵌套树状复制结构 。

    三、redis-sentinel

  创建  /home/ubuntu/redis/sentinel/docker-compose.yml,如下

version: '2'
services:
  repl-0:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6380:6379       
    networks:
      - sentinel
    command: ["redis-server","--replica-announce-ip","192.168.174.129","--replica-announce-port","6380"]

  repl-1:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6381:6379       
    networks:
      - sentinel
    command: ["redis-server","--slaveof","repl-0","6379","--replica-announce-ip","192.168.174.129","--replica-announce-port","6381"]

  repl-2:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6382:6379       
    networks:
      - sentinel
    command: ["redis-server","--slaveof","repl-0","6379","--replica-announce-ip","192.168.174.129","--replica-announce-port","6382"]

  repl-3:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - 6383:6379       
    networks:
      - sentinel
    ports:
      - 6383:6379
    command: ["redis-server","--slaveof","repl-2","6379","--replica-announce-ip","192.168.174.129","--replica-announce-port","6383"]
    
  sentinel-1:
    build: ./build
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    networks:
      - sentinel 
    ports:
      - 26380:26379
    command: ["redis-server","/data/sentinel.conf","--sentinel","announce-ip","192.168.174.129","--sentinel","announce-port" , "26380"]

  sentinel-2:
    build: ./build
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    networks:
      - sentinel 
    ports:
      - 26381:26379
    command: ["redis-server","/data/sentinel.conf","--sentinel","announce-ip","192.168.174.129","--sentinel","announce-port" , "26381"]
    
  sentinel-3:
    build: ./build
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    networks:
      - sentinel  
    ports:
      - 26382:26379
    command: ["redis-server","/data/sentinel.conf","--sentinel","announce-ip","192.168.174.129","--sentinel","announce-port" , "26382"]

networks:
  sentinel: 
     driver: bridge   

注:与非docker环境相比,我们添加了announce-ip和announce-port这些命令,这是因为默认情况下主从服务器之间以及各个sentinel实例之间使用的ip是容器内部自动分配的ip,这样在切换主从服务或sentinel之间通信时无法联通,因此务必需要添加对应的命令。

同时在/home/ubuntu/redis/sentinel/build目录下创建 Dockerfile和sentinel.conf

Dockerfile:

FROM redis:5.0-rc-alpine
COPY ./sentinel.conf /data/sentinel.conf
EXPOSE 26379

sentinel.conf

sentinel monitor mymaster 192.168.174.129 6380 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

 

    四、redis-cluster

创建  /home/ubuntu/redis/cluster/docker-compose.yml,如下

version: '2'
services:
  cluster-a1:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6371.conf:/data/redis.conf" 
    network_mode: host
    command: ["redis-server","/data/redis.conf"]

  cluster-a2:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6372.conf:/data/redis.conf" 
    network_mode: host
    command: ["redis-server","/data/redis.conf"]

  cluster-b1:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6381.conf:/data/redis.conf" 
    network_mode: host
    command: ["redis-server","/data/redis.conf"]

  cluster-b2:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6382.conf:/data/redis.conf"
    network_mode: host
    command: ["redis-server","/data/redis.conf"]

  cluster-c1:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6391.conf:/data/redis.conf" 
    network_mode: host
    command: ["redis-server","/data/redis.conf"]
    
  cluster-c2:
    image: redis:5.0-rc-alpine
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./conf.d/cluster-6392.conf:/data/redis.conf"
    network_mode: host
    command: ["redis-server","/data/redis.conf"]

同时在 /home/ubuntu/redis/cluster/conf.d目录下创建cluster-6371.conf 、 cluster-6372.conf  、cluster-6381.conf  、cluster-6382.conf  、cluster-6391.conf 、cluster-6392.conf ,这六个配置文件唯一的区别只是第一行的port不一样,每个配置文件的port与文件名上的数字一致,如下面是cluster-6371.conf

port 6371
cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file "nodes.conf"
pidfile /var/run/redis.pid
logfile "cluster.log"
dbfilename dump-cluster.rdb
appendfilename "appendonly-cluster.aof"

接下来,在/home/ubuntu/redis/cluster目录下进行如下操作启动所有redis实例

$: docker-compose up -d

-- 查看容器的状态

$: docker-compose ps

(1) 将所有实例加入集群

$: docker-compose exec cluster-c1 redis-cli -p 6381 -h 192.168.174.129 

进入redis客户端命令行

192.168.174.129:6381> cluster meet 192.168.174.129 6371

192.168.174.129:6381> cluster meet 192.168.174.129 6372

192.168.174.129:6381> cluster meet 192.168.174.129 6381

192.168.174.129:6381> cluster meet 192.168.174.129 6382

192.168.174.129:6381> cluster meet 192.168.174.129 6391

192.168.174.129:6381> cluster meet 192.168.174.129 6392

检查一下效果

192.168.174.129:6381> cluster  nodes

注1:上面的第一列是node_id,这个在步骤(3)中会用到,比如16a7e8a557ba01615c5b15e967c769f983913b85是192.168.174.129:6392的node_id。

注2:当前的6个node都是master,还没有分配主从关系,具体见步骤(3)

(2)分配虚拟槽

    可以看到配置的六个节点都已经加入到了集群中,但是其现在还不能使用,因为还没有将16384个槽分配到集群节点中。虚拟槽的分配可以使用redis-cli分别连接到6371,6381和6391端口的节点中,然后分别执行如下命令:

$:  docker-compose exec cluster-c1 redis-cli -p 6371 -h 192.168.174.129 cluster addslots {0..5000} 

$:  docker-compose exec cluster-c1 redis-cli -p 6381 -h 192.168.174.129 cluster addslots {5001..10000}

$:  docker-compose exec cluster-c1 redis-cli -p 6391 -h 192.168.174.129 cluster addslots {10001..16383}  

-- 检查当前集群的状态

$: docker-compose exec cluster-c1 redis-cli -p 6381 -h 192.168.174.129 cluster info

(3)设置主从关系

     通过上面的步骤,我们把16384个槽分配给了6371、6381、6391这三个端口对应的redis实例,因此这三个实例必须是master,至少为每一个master再分配一个slave,如下命令 : cluster replicate [master_node_id],

-- 将6372对应的实例设置为6371的slave

$:  docker-compose exec cluster-c1 redis-cli -p 6372 -h 192.168.174.129 cluster replicate  16a7e8a557ba01615c5b15e967c769f983913b85

-- 将6382对应的实例设置为6381的slave

$:  docker-compose exec cluster-c1 redis-cli -p 6382 -h 192.168.174.129 cluster replicate  3921bc89204a900360de770fe42f931787431e7c

-- 将6392对应的实例设置为6391的slave

$:  docker-compose exec cluster-c1 redis-cli -p 6392 -h 192.168.174.129 cluster replicate fad1e9b5115c876dbbaf3ba4c500ddfca0508065

-- 检查当前的节点主从关系

$:  docker-compose exec cluster-c1 redis-cli -p 6382 -h 192.168.174.129 cluster nodes

(4)使用redis-cli连接集群

$:  docker-compose exec cluster-c1 redis-cli -p 6382 -h 192.168.174.129 -c

进入redis-cli控制台

192.168.174.129:6382>  get k1

发现跳转到6391对应的实例上,你也可以试着停掉其中的一个master,然后观察一下他的slave是否会自动转为master。

还有更多redis-cluster的特性,都可以在这个集群上进行测试验证,小伙伴们还等什么,赶紧动手吧。

注: 细心的同学会发现,我们使用redis-cli时都是使用了"docker-compose exec cluster-c1  redis-cli ",其实我们也可以使用其他的redis实例,比如 "docker-compose exec cluster-a2  redis-cli ",我们只是为了使用redis实例中内置的redis-cli命令,如果你本地已经装了redis-cli,也是可以直接使用redis-cli。

五、总结

      关于redis主从复制、sentinel高可用以及redis-cluster,网上有很多优秀的文章对他们进行了非常详细的介绍,我在这里不在赘述,只是简单说一下我个人不太成熟的理解吧。redis主从复制可以实现读写分离,但是在master挂掉之后没有现成的机制重新选举,redis的写功能就不可用了,所以引出了sentinel,sentinel可以在master挂掉之后可以选一个slave替代挂掉的master,所以sentinel增强了高可用性,但是没有解决redis水平扩展的问题,当master的内存不足时,除了增加机器内存,没有现成的办法扩容,因此引入了redis-cluster,cluster通过哈希槽让各个master节点只负责一部分的哈希槽(hash slo),然后每个master有多个slave作为数据备份,一旦master不行了,可以让slave顶上去。

      sentinel和cluster都不能很好的使用读写分离,slave节点只是作为备份节点,因此slave节点不能替master分担读的压力,同时由于redis使用的是异步复制,不能保证强一致性。

      有一些不错的帖子,大家可以参考一些

https://my.oschina.net/zhangxufeng/blog/905611

https://dbaplus.cn/news-158-2182-1.html

redis镜像地址: https://hub.docker.com/_/redis 

官方地址: https://redis.io/

英文不好的同学可以参考 http://www.redis.cn/ 

docker安装请参考  https://blog.youkuaiyun.com/song_java/article/details/88061162

数据库之Redis运维手册(私人整理) 1、redis配置文件 #cat 8000.conf daemonize no #[yes/no]默认值no,该参数用于定制redis服务是否以守护模式运行。 pidfile /var/run/redis.pid #默认值/var/run/redis.pid,指定redis服务的进程号文件路径,以守护模式运行时需要配置本参数; port 8000 #默认值6379,指定redis服务... 阅读详情

相关推荐

深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案

当前阶段,由于我只有一个 云服务器,搞分布式系统就比较麻烦,而实际工作中,一般是通过多个主机的方式来搭建集群的. 因此这里我会 基于 docker、docker-compose(容器编排) 来搭建 redis 集群.

CYK_byte的博客 2370

Docker-compose搭建Redis集群(Sentinel)

redis高可用服务器搭建,哨兵模式。

老师好,我是安同学 4107

用Cadence IC618仿真双平衡吉尔伯特混频器:从原理图到后仿的完整避坑指南

本文详细介绍了在Cadence IC618环境中设计双平衡吉尔伯特混频器的全流程,包括原理图设计、仿真优化和版图实现。通过实战案例分享,重点解析了设计中的关键技巧和常见问题解决方案,帮助工程师高效完成高性能混频器设计,特别适合射频前端开发人员参考。

weixin_42656416的博客 162

Docker 部署 Redis Sentinel 哨兵模式集群

在Redis Replication 主从模式下,Redis 不能在主节点故障的情况下,重新选举新的主节点。而 Redis 哨兵模式就是用来实现这一目的的,从而实现高可用的目标。的局域网,同时 Redis 已经提供了 NAT 模式的解决方案,但是在故障迁移的过程中,其会使用。,当投票数量为 2 的时候,该节点会被认为是主节点。主机名称格式,因为在实验过程中,它会出现指定固定 IP 失效的问题。出来去执行故障迁移,而新的主节点则是根据副本的偏移指针。当主节点下线的时候,哨兵会用 RAFT 算法选出一名。

千度阿三的博客 1012

plc secs半导体通讯协议 PLC 与MES的SECS/GEM通讯方案

符合SEMI E4, E5, E30, E37 的 SECS/GEM通讯方案 专业稳定的产品,持续运行5年都不出错 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 毫米级的响应,单个messge在5ms以内 MES与PLC之间达到实时性,如采集实时性的数据 每秒支持100条Message以上 快速搭建PLC与MES之间的SECS/GEM桥梁,只需简单配置数据 SECS/GEM介绍 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 增删改上报数据配置简单,并且一目了然 大量的数据处理.

SECS/GEM 6362

ros_control硬件接口实战:从零构建机器人控制框架

本文详细介绍了ros_control硬件接口在机器人控制框架中的核心作用与实践方法。通过解析硬件接口类型、实现标准接口、构建主控制循环及自定义功能扩展,帮助开发者从零构建高效的机器人控制系统,提升硬件与ROS的协同效率。

lstm7chronicler的博客 500

使用 Docker Compose 部署 Redis Cluster 集群,轻松搭建高可用分布式缓存

Redis Cluster 介绍将数据划分为多个槽(slot),默认情况下共有 16384 个槽。每个 Redis 节点负责处理其中的一部分槽。当客户端请求访问某个键时,Redis Cluster 会根据键的哈希值决定它应该位于哪个槽,并将请求转发到负责该槽的 Redis 节点上。在 Redis Cluster 中,每个槽都可以有多个副本,通常有一个主节点和一个或多个从节点。主节点负责处理客户端请求,并将数据同步到从节点上。

修己xj的博客 1407

一分钟教会你搭建steam新游幻兽帕鲁服务器

总结: 游戏对服务器搭建要求相对较高、且对服务器网络协议有要求不能封堵UDP、多开、游戏运行久、同时在线人数多了这些会很吃内存 我自己用的64G内存多开4区测试玩家同时在线50多人的情况下内存已经跑满了、对于想用服务器搭建联机的小伙伴建议根据开区数量以及玩家人数去选择配置、当然也可以直接找我阿杰购买、我可以提供技术搭建服务。注:如果用的是本地电脑局域网搭建直接输入127.0.0.1:8211就行 如果用的是服务器搭建输入自己服务器IP+端口或解析的域名+端口进入游戏。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 2238

docker部署redis-sentinel(一主二从三哨兵)

docker部署redis-sentinel(一主二从三哨兵) java代码访问测试故障转移

p393975269的博客 1023

在摩尔线程 MTT S80 上使用 Ollama 进行 DeepSeek R1 蒸馏版模型推理

本文主要介绍了如何在摩尔线程 MTT S80 上通过 Ollama 快速完成DeepSeek R1 蒸馏系列模型的推理。

摩尔线程blog中心 3602

TC3xx芯片中断配置避坑指南:从AUTOSAR Davinci配置到SRN地址计算的完整流程

本文详细解析了英飞凌TC3xx芯片的中断配置流程,从AUTOSAR Davinci工具链到硬件调试的全链路指南。重点介绍了中断路由(IR)模块、服务请求节点(SRN)和中断控制单元(ICU)的配置技巧,帮助开发者避开常见陷阱,优化中断性能。

weixin_30628801的博客 415

使用 Docker Compose 部署 Redis Sentinel 高可用架构

在现代应用中,无法容忍系统中断或数据丢失。Redis 作为一种高性能的内存数据库,被广泛应用于缓存、会话管理等场景。然而,即使我们拥有可伸缩的 Redis Cluster 集群,也需要考虑在主节点故障时自动切换到从节点的机制。

修己xj的博客 935

【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》

谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法之旅!

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1306

Redis集群部署方案

这里我们把 redis-master 手动停止,模拟 主从点挂掉的情况,此时 redis-slave1 还是从节点,而主节点变成了redis-slave2。Redis Cluster 是 Redis原生的分布式集群方案,支持数据的自动分片(sharding),从而实现水平扩展,处理大规模的数据和请求。从图里我们,可以看到redis-master的role是master,而redis-slave的role是slave。而我们在redis-master添加的键值对,在redis-slave里可以获得。

... 2177

基于深度学习的人脸识别考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发

基于深度学习的口罩人脸识别的考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1829

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

利用docker-compose 搭建redis哨兵集群

docker 搭建redis 哨兵集群

weixin_55625082的博客 228

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

docker 部署 Redis Cluster 集群

docker 部署 Redis Cluster 集群

会飞的小蜗 912

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Redis Cluster Docker Swarm 项目常见问题解决方案

Redis Cluster Docker Swarm 项目常见问题解决方案 项目基础介绍 Redis Cluster Docker Swarm 是一个用于在 Docker Swarm 环境中配置 Redis 集群缓存的开源项目。该项目利用 Redis Sentinel 实现自动故障转移,并且默认关闭持久化功能。主要编程语言包括 Shell 和 Dockerfile。 新手使用注意事项及解决方案 1...

gitblog_00667的博客 985

如何用docker-redis-cluster快速构建高可用Redis集群?新手必看教程

在现代应用开发中,Redis集群是保障数据高可用和高性能的关键组件。**docker-redis-cluster**作为一款便捷的Docker镜像,能帮助开发者在几分钟内搭建起稳定的Redis集群环境,特别适合新手和开发测试场景使用。本文将详细介绍如何利用这个工具快速部署包含3主3从结构的Redis集群,并提供实用配置技巧。 ## 🚀 为什么选择docker-redis-cluster? 对

gitblog_00860的博客 843

实战使用Docker compose搭建Redis哨兵(Sentinel)模式集群

本文介绍了使用docker-compose快速搭建Redis主从+哨兵集群的方法。Redis哨兵模式通过独立哨兵进程监控主从节点状态,实现自动故障转移,包含监控、选主和通知三大功能。文章详细讲解了哨兵的工作流程和选主机制,同时指出哨兵模式仍存在从节点无法自动故障转移和写操作负载不均等局限性。实战部分展示了一主二从三哨兵的部署架构,并提供了主从节点的关键配置参数,包括端口绑定、数据持久化、密码设置和主从复制等核心配置项。

勤于笔记,成于点滴。 2010

Redis OM Spring 生产部署指南:Sentinel 高可用与 Redis Enterprise/Cloud 实战

**Redis OM Spring 生产部署**是很多 Spring Boot 开发者从"能跑"走向"稳定跑"的关键一步。Redis OM Spring 作为 Spring Data Redis 的增强框架,提供了 `@Document` JSON 文档映射、RediSearch 全文检索、向量相似度搜索等强大能力,但许多新手在本地 Demo 运行顺畅后,一上生产就遇到连接失败、主从切换后应用不恢

gitblog_00799的博客 1117

Docker部署Redis:容器化实践与生产环境配置

容器化技术通过资源隔离和环境一致性彻底改变了传统应用的部署方式。Docker作为主流容器引擎,利用cgroups和命名空间实现进程隔离,配合镜像机制保证开发-生产环境的一致性。在数据库部署场景中,Redis作为高性能内存数据库,其Docker化部署能显著提升运维效率。通过官方Redis镜像可快速实现包括持久化配置、内存管理、主从复制等关键特性,特别适合微服务架构和云原生环境。实际部署时需注意生产级配置如RDB/AOF持久化策略、内存限额控制、网络隔离等核心参数,配合Prometheus监控可构建完整的高可用

weixin_34323858的博客 420

docker-redis-cluster进阶技巧:IPv6支持与网络配置最佳实践

docker-redis-cluster是一个基于Docker的Redis集群解决方案,支持Redis 3.0+版本,通过容器化部署简化了Redis集群的搭建与管理流程。本文将深入探讨如何为docker-redis-cluster配置IPv6支持,以及网络优化的最佳实践,帮助开发者构建更灵活、更安全的Redis集群环境。 ## 一、理解docker-redis-cluster的网络架构 doc

gitblog_01106的博客 987

Redis 高可用集群部署实战:单Docker实现1主2从3

本文手把手教你用 Docker 部署一套 Redis Sentinel 高可用集群,涵盖主从、哨兵、故障转移、验证与运维要点,可开箱即用。

需要远程指导仿真实验、代码有问题的,请后台私信。 1902

02-Redis 环境搭建实战:Docker、Docker Compose、主从、哨兵与 Cluster 从零搭建

本文从零讲解 Redis 环境搭建,覆盖 Docker 单机启动、Docker Compose 配置管理、主从复制、Sentinel 哨兵自动故障转移、Redis Cluster 切片集群,以及源码安装和生产配置模板。文章配合命令、配置说明、拓扑图和排坑清单,帮助新手完整掌握 Redis 从本地实验到生产部署的搭建流程。

m0_66500660的博客 745

推荐文章:探索高效分布式缓存——Redis Cluster Cache在Docker Swarm中的应用

推荐文章:探索高效分布式缓存——Redis Cluster Cache在Docker Swarm中的应用 项目介绍 在这个数据爆炸的时代,高效、可靠的缓存解决方案对于提升应用程序性能至关重要。Redis Cluster Cache for Docker Swarm 是一个针对Docker Swarm环境量身定制的快速部署方案,旨在通过利用Redis Sentinel的自动故障转移特性,为企业级应...

gitblog_00406的博客 969
上一篇: proxysql的安装和使用(docker)
下一篇: ubuntu安装docker和docker-compose
五克松
博客等级 码龄17年 4粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值