5.5 Docker搭建redis主从+哨兵

5分钟实现用docker搭建Redis集群模式和哨兵模式 Docker Compose 可以理解为将多个容器运行的方式和配置固化下来!就拿最简单的例子来说吧,如果我们要为我们的应用容器准备一个 MySQL 容器和一个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容器启动起来,再将应用容器运行起来。这其中还不要忘了在创建应用容器时将容器网络连接到 MySQL 容器和 Redis 容器上,以便应用连接上它们并进行数据交换。这还不够,如果我们还对容器进行了各种配置,我们最好还得将容器创建和配置的命令保存下来,以便下次可以直接使用。 阅读详情


1. redis 哨兵

redis主从复制结构中,主服务器会自动的将数据向从服务器复制;

哨兵可以监控到服务宕机,实时了解主服务器是否宕机,当主服务器宕机,会在从服务器中重新选举新的服务器用作主服务器;

客户端访问时,会由主服务器获取数据,但是客户端不确实到底哪个是主服务器,所以客户端先去访问哨兵,通过哨兵去访问主服务器;

我们首先通过redis搭建一主俩从的服务器集群;

2. 搭建主从服务器 – 一主两从

清理容器(可选)

docker rm -f $(docker ps -aq)

2.1 启动主服务器

# --net=host 容器可以直接使用宿主机的端口,不需要做端口映射
docker run -d --name redis6379 --net=host --restart=always redis 

# 进入容器,运行redis客户端
docker exec -it redis6379 redis-cli

2.2 启动两个从服务器

# 启动redis6380容器,--slaveof参数指定作为 redis6379 的从服务器启动
# --port 和 --slaveof 是 redis-server 命令的参数
docker run -d --name redis6380 --net=host --restart=always redis \
redis-server --port 6380 --slaveof 192.168.64.150 6379

# 启动redis6381容器,作为 redis6379 的从服务器启动
docker run -d --name redis6381 --net=host --restart=always redis \
redis-server --port 6381 --slaveof 192.168.64.150 6379

2.3 查看启动服务器

分别进入3台服务器查看redis服务角色:

进入从服务器时,需要单独添加端口参数,因为默认的redis-cli客户端是连接主服务器6379的,无法直接进入;

# 查看三个 redis 服务的角色
docker exec -it redis6379 redis-cli
> info replication

docker exec -it redis6380 redis-cli -p 6380
> info replication

docker exec -it redis6381 redis-cli -p 6381
> info replication

在这里插入图片描述

在这里插入图片描述

2.4 查看主从复制

我们进入6379服务器添加数据,然后到6380访问数据,查看是否进行了主从复制:
在这里插入图片描述

3. 设置哨兵配置

创建哨兵的配置文件:

mkdir /opt/sentinel/
cd /opt/sentinel/

输入配置文件内容:
配置文件中的 sentinel monitor mymaster 192.168.64.150 6379 2中:

  • mymaster 是给主服务器取的名字
  • 末尾的 2 表示两个哨兵投票确认主服务器宕机,哨兵才会认为主服务器宕机

有时候可能哨兵会出现故障,当哨兵故障无法和主服务器通信时,可能会误报主服务器宕机,所以需要多个哨兵一起确定主服务器宕机,一般为投票选举,少数服务多数,例如5个哨兵配置3个,7个哨兵配置5个等;

cat <<EOF >5000.conf
port 5000
sentinel monitor mymaster 192.168.64.150 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
EOF

cat <<EOF >5001.conf
port 5001
sentinel monitor mymaster 192.168.64.150 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
EOF

cat <<EOF >5002.conf
port 5002
sentinel monitor mymaster 192.168.64.150 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
EOF

在这里插入图片描述

4. 启动三个哨兵

4.1 启动命令

docker run -d --name sentinel5000 \
-v /opt/sentinel/5000.conf:/sentinel.conf \
--net=host \
redis redis-sentinel /sentinel.conf

docker run -d --name sentinel5001 \
-v /opt/sentinel/5001.conf:/sentinel.conf \
--net=host \
redis redis-sentinel /sentinel.conf

docker run -d --name sentinel5002 \
-v /opt/sentinel/5002.conf:/sentinel.conf \
--net=host \
redis redis-sentinel /sentinel.conf

启动完成后进入一个哨兵容器,查看它监控的主从服务器和其他哨兵

docker exec -it sentinel5000 redis-cli -p 5000
> sentinel master mymaster
> sentinel slaves mymaster
> sentinel sentinels mymaster

4.2 停止主服务器,测试主服务器重新选举

# 停止主服务器
docker stop redis6379
# 在哨兵日志中查看服务器切换日志: +switch-master mymaster 192.168.64.150 6379 192.168.64.150 6381
docker logs sentinel5000

# 查看 6380 和 6381 服务器的角色变化
docker exec -it redis6380 redis-cli -p 6380
> info replication

docker exec -it redis6381 redis-cli -p 6381
> info replication

在这里插入图片描述

在这里插入图片描述

重新启动6379,不会把6379切换成主服务器,而是作为从服务器

docker start redis6379

docker exec -it redis6379 redis-cli
> info replication

在这里插入图片描述

4.3 客户端api连接哨兵存取数据

package test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;

import java.util.HashSet;
import java.util.Set;

/**
 * 客户端连接主从集群
 * 1. 不直接连接主服务器,而是连接哨兵
 * 2. 通过哨兵连接主服务器
 * */
public class TestSentinel {
    public static void main(String[] args) {
        //哨兵服务器地址列表
        Set<String> sets = new HashSet<>();
        sets.add("192.168.64.151:5000");
        sets.add("192.168.64.151:5001");
        sets.add("192.168.64.151:5002");
        //配置对象
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //创建哨兵连接池
        JedisSentinelPool pool = new JedisSentinelPool("mymaster", sets, poolConfig);
        //获取数据操作工具
        Jedis jedis = pool.getResource();
        //添加数据
        jedis.set("k1", "v1");
    }
}

运行代码并查看主从集群各个服务器中是否都有此数据:

在这里插入图片描述

在这里插入图片描述

redis哨兵模式实现主从故障切换 Mysql的存储管理: Server1(master): [root@server1 ~]# tar zxf redis-4.0.8.tar.gz [root@server1 ~]# cd redis-4.0.8 [root@server1 redis-4.0.8]# yum install gcc -y [root@server1 redis-4.0.8]# make [root@serve... 阅读详情

相关推荐

windows php5.5 redis扩展 php_redis-5.5-vc11-ts-x86

php_redis-5.5-vc11-ts-x86 php5.5 redis扩展

Docker-Compose搭建Redis高可用一主二从三哨兵集群

使用docker-compose搭建Redis高可用一主二从三哨兵集群

a1764739438的博客 1689

redis以及5.5.12扩展文件

5.5.12 php_redis 安装不成功,找不到指定的模板, 亲测可用,分享给大家

Redis-05-一主一从搭建

【代码】Redis-05-一主一从搭建。

qq_43297415的博客 177

redis-5.0.5.zip windows版本

因为工作需要使用redis,需要临时搭建单机环境,但是windows下支持的版本过低,因此编译了一个windows可用的5.0.5的redis版本

PHP_Redis-5.5-VC11 for Windows X86/X64版本(亲测可用)

.7z压缩格式,用.rar压缩软件即可解压缩。解压后查看 readme.txt 说明文件。 此压缩文档为PHPRedis的Windows版本,文件里包含 X86/X64 版本,各版本下还有TS和NTS版本。 本人亲测可用。

Redis哨兵搭建

Redis哨兵搭建 哨兵:在redis里监控服务,在主从复制结构中,当主服务器宕机,哨兵可以监控到服务宕机,并且在服务器中选举产生一个新的主服务器。 选举多个哨兵,一个是高可用,另一个原因是投票,当都投票到一个说明这个服务器宕机。少数服从多数 搭建主从服务器 — 一主多从 启动系统docker systemctl restart docker 清理容器 docker rm -f $(docker ps -aq) 进入容器 docker exec -it redis6379 redis-cli 查看集群信息

qq_52632150的博客 465

php_redis-5.5-vc11-ts-x64

适用于windows 平台的php-redis扩展 将下载包内php_redis.dll和php_igbinary.dll放在php扩展目录中(ext) 并修改配置文件php.ini,新增以下两行 extension=php_igbinary.dll extension=php_redis.dll 注意这是TS版的,不适用于IIS

Redis05-进阶-主从

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。

李宥的博客 1054

逻辑漏洞:水平越权、垂直越权靶场练习

水平越权和垂直越权是组织中常见的管理问题,指的是员工在组织中所拥有的权力和责任超出其职位所应具备的范围。 水平越权是指员工在同一级别的职位上超越了其同事的权力和责任范围,通常表现为某个员工在团队中承担了过多的任务或权力,导致其他同事感到不公平或不满。 垂直越权则是指员工在组织中超越了其职位等级的权力和责任范围,通常表现为员工在没有得到上级批准的情况下做出决策或行动,可能会导致组织内部的混乱和冲突。

qq_68163788的博客 2464

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

docker搭建redis主从复制(一主二从)——哨兵模式

1、首先开启三台虚拟机,分别安装dokcer 2、拉取镜像 docker pull redis 3、查看镜像 4、配置文件修改(提前准备好配置文件) 5、启动容器(三台机器分别执行) docker run -d -p 6379:6379 --name redis --privileged=true -v /usr/local/redis/data:/data -v /usr/local/redis/redis.conf:/etc/redis/redis.conf r...

weixin_43870793的博客 1474

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4108

docker安装redis7-哨兵模式

系统:CentOS7.9由于资源问题本次的部署全部在一台宿主机上通过启动不同的docker容器来完成部署。。搭建好主从模式之后我们开始部署哨兵,这里部署了3台哨兵,端口分别为26379,26380,26381。

浩瀚蓝天dep的博客 726

nnDetection复现Luna16 附模型

淘论文发现nnDetection框架对肺结节的检测效果挺好,便跑了跑复现了下, 作者诚不欺人,确实挺好, 并附上我依据文档训练的模型。

HeavenWalker 2590

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析了Facebook登录协议的逆向工程实战,详细拆解了从关键加密参数(如`lgndim`、`encpass`)定位到完整登录流程的实现。文章提供了Python代码示例,重点阐述了加密逻辑的深度解析、加密函数的本地化实现,并解决了Crypto.js异步调用等常见问题,为研究Web安全和协议逆向的开发者提供了实用参考。

metal的博客 1307

Docker部署系列:搭建Redis哨兵模式(一主两从)

Docker部署系列:搭建Redis哨兵模式(一主两从)

CancerKing的博客 804

解放双手:用KUKA示教器白键一键触发复杂工艺,自定义你的快捷指令

本文详细介绍了如何利用KUKA示教器的工艺白键功能,通过自定义快捷指令一键触发复杂工艺,显著提升自动化产线效率。文章涵盖UserTech技术栈解析、KRL脚本封装、人机交互视觉工程及工业实战策略,帮助工程师实现机械臂操作的高阶优化。

weixin_30379531的博客 425

docker中安装redis集群和哨兵模式

引言: centos 7.5 版本 ; docker 20.10.8 1.拉取redis镜像 #根据docker hub 官网上进行版本选择 docker pull redis #查看镜像 docker images 2.服务器中创建文件夹 这里我的路径是 /usr/local/docker/redis-sentinel redis 文件夹用于搭建 redis集群 3台 sentinel 文件夹用于搭建 redis的哨兵服务 3台 3.搭建redis集群 3.1搭建redis集群-编写docke

qq_42709881的博客 429

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 129

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 741

5分钟快速验证Redis哨兵模式原型

今天在技术方案选型时遇到一个经典问题:如何快速验证Redis哨兵模式的高可用性?传统搭建方式需要多台服务器和复杂配置,但通过现代开发工具,我们完全可以在单机上5分钟完成原型验证。的云环境中执行特别顺畅,直接使用预装Docker的环境省去了本地配置麻烦,一键部署后马上就能开始测试,对需要快速验证技术方案的团队非常友好。这种原型验证方法的价值在于:方案选型阶段用最低成本验证技术可行性,后续再考虑性能调优和安全生产规范。使用redis-cli的INFO replication命令实时观察拓扑变化。

SilvermistRaven28的博客 475

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Docker】summary

【Docker】summary

qq_44077764的博客 225

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Docker搭建redis单体、主从、哨兵、集群

docker搭建redis

bluesomnium的博客 1803

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker部署Redis哨兵

Redis主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。docker部署redis,docker部署redis主从复制https://blog.csdn.net/ddf128/article/details/143606905。

2982
上一篇: 5.4 Docker案例
下一篇: 5.6 Docker 搭建redis集群
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值