【架构】docker实现3主3从架构配置【案例1/4】

一,集群规划及准备工作

架构实现:Redis3主3从
三主三从架构

二,搭建命令

第一步,创建6台服务:

docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

参数说明:
--cluster-enabled yes: 是否开启集群
--privileged=true:获取宿主机root用户权限
--net host:使用宿主机的端口和ip,默认
--appendonly yes:开启持久化

查看是否启动创建成功:

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS     NAMES
528b29c8330b   redis:6.0.8   "docker-entrypoint.s…"   5 seconds ago   Up 5 seconds             redis-node-6
fd9184cd6761   redis:6.0.8   "docker-entrypoint.s…"   7 seconds ago   Up 7 seconds             redis-node-5
44397301e3ac   redis:6.0.8   "docker-entrypoint.s…"   7 seconds ago   Up 7 seconds             redis-node-4
18720ac44b13   redis:6.0.8   "docker-entrypoint.s…"   8 seconds ago   Up 7 seconds             redis-node-3
2b2987704c6d   redis:6.0.8   "docker-entrypoint.s…"   8 seconds ago   Up 8 seconds             redis-node-2
e2304c8acbd6   redis:6.0.8   "docker-entrypoint.s…"   9 seconds ago   Up 8 seconds             redis-node-1

第二步:进入容器redis-node-1并为6台机器构建集群关系

# 进入任何台都行(以redis-node-1为例)
docker exec -it redis-node-1 /bin/bash# 构建主从关系
redis-cli --cluster create 12.114.161.16:6381 12.114.161.16:6382 12.114.161.16:6383 12.114.161.16:6384 12.114.161.16:6385 12.114.161.16:6386 --cluster-replicas 1

--cluster-replicas 1:为每个Master创建一个slave节点

>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 12.114.161.16:6385 to 12.114.161.16:6381
Adding replica 12.114.161.16:6386 to 12.114.161.16:6382
Adding replica 12.114.161.16:6384 to 12.114.161.16:6383
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381slots:[0-5460] (5461 slots) master
M: f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382slots:[5461-10922] (5462 slots) master
M: 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383slots:[10923-16383] (5461 slots) master
S: 0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384replicates f097fec937f54d147d316c1c62e26cb67c9fd059
S: 9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385replicates 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2
S: 4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386replicates 6e961a4765b555189708bebb69badf7dfad25cd5
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 12.114.161.16:6381)
M: 6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386slots: (0 slots) slavereplicates 6e961a4765b555189708bebb69badf7dfad25cd5
M: f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: 0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384slots: (0 slots) slavereplicates f097fec937f54d147d316c1c62e26cb67c9fd059
M: 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385slots: (0 slots) slavereplicates 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.   # 哈希槽16384个全部覆盖

第三步,进入任意容器内部的Redis,查看集群状态
两个重要命令:

# 进入Redis
redis-cli -p 6381
# 查看槽位信息
cluster info
127.0.0.1:6382> cluster info
cluster_state:ok
cluster_slots_assigned:16384   # 16384个哈希槽位
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:2
cluster_stats_messages_ping_sent:62177
cluster_stats_messages_pong_sent:64979
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:127157
cluster_stats_messages_ping_received:64979
cluster_stats_messages_pong_received:62178
cluster_stats_messages_received:127157
# 查看节点信息,尤其主从节点如何分配关系
cluster nodes
127.0.0.1:6381> cluster nodes
4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386@16386 slave 6e961a4765b555189708bebb69badf7dfad25cd5 0 1705242300000 1 connected
f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382@16382 master - 0 1705242299110 2 connected 5461-10922
0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384@16384 slave f097fec937f54d147d316c1c62e26cb67c9fd059 0 1705242300113 2 connected
78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383@16383 master - 0 1705242298000 3 connected 10923-16383
6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381@16381 myself,master - 0 1705242297000 1 connected 0-5460
9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385@16385 slave 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 0 1705242301116 3 connected

可以看到 3主3从构建关系,通过id看出附属那几个从主机
至此,说明创建哈希槽成功!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot+vue图书管理系统(前后端分离)

该项目完全免费 项目技术栈前后端分离: 后端:Springboot Mybatis-plus 前端:Vue ElementUI 数据库: MySQL 项目功能描述 管理员: 登录、个人信息、修改密码、管理后台管理系统所有数据 首页统计:…

Python(37):使用logging的配置文件配置日志

Python(37):使用logging的配置文件配置日志 输出日志到控制台和日志文件方法: 创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容。 方法1:输出日志到文件,文件是固定的 方法2:输出日志到文件&…

【机器学习】机器学习四大类第01课

一、机器学习四大类 有监督学习 (Supervised Learning) 有监督学习是通过已知的输入-输出对(即标记过的训练数据)来学习函数关系的过程。在训练阶段,模型会根据这些示例调整参数以尽可能准确地预测新的、未见过的数据点的输出。 实例&#x…

docker安装 unexpected wsl error

docker unexpected wsl error 问题描述: 很诡异的一个问题 大概现象和这个帖子很像 https://developer.aliyun.com/article/1395485 docker版本4.26.1 系统: windows 10 winR 输入winver可以看见自己的版本号 华为matebook 16s 重装的Win10 解决流程…

代码随想录算法训练营29期|day 23 任务以及具体安排

669. 修剪二叉搜索树 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root null) {return null;}if (root.val < low) {return trimBST(root.right, low, high);}if (root.val > high) {return trimBST(root.left, low, high);}// ro…

农用拖拉机市场调研:预计2029年将达到171亿美元

由于近些年来新兴市场的迅速崛起和技术创新的不断涌现&#xff0c;全球农用拖拉机市场的竞争也日趋激烈。生产商不仅需要提供质量可靠的产品&#xff0c;还需要提供良好的售后服务以赢得客户的信赖。 农业是支撑国民经济建设与发展的基础产业&#xff0c;而农业机械化是建设现代…

2024杭州国际智慧城市,人工智能,安防展览会(杭州智博会)

在智能化浪潮的冲击下&#xff0c;我们的生活与环境正在经历一场深刻的变革。这是一场前所未有的技术革命&#xff0c;它以前所未有的速度和广度&#xff0c;改变着我们的生活方式、工作方式、思维方式和社会结构。在这场变革中&#xff0c;有的人选择激流勇进&#xff0c;拥抱…

ACL实验

一&#xff1a;实验要求 二&#xff1a;实验分析 PC1可以telnet R1但不能ping通R1 PC1可以ping通R2但不能telnet R2 PC2可以ping通R1但不能telnet R1 PCR可以telnet R2但不能ping通R2 三&#xff1a;实验过程 配置IP 配置静态路由 检查是否全网可通 配置Telnet r1创建…

Xshell无法ssh连接虚拟机问题或主机无法ping通虚拟机。

常见报错如下&#xff1a; 1&#xff0c;Could not connect to ‘&#xff1f;&#xff1f;&#xff1f;’ (port 22): Connection failed. 2&#xff0c;卡在To escape to local shell, press ‘CtrlAlt]’. 3&#xff0c;Connection closing…Socket close. Connection clos…

一款轻量级、基于Java语言开发的低代码开发框架,开箱即用!

数字化时代&#xff0c;企业对于灵活、高效和安全的软件开发需求日益旺盛。为了满足这些需求&#xff0c;许多组织转向低代码技术&#xff0c;以寻求更具成本效益和创新性的解决方案。JNPF基础框架正是在这一背景下应运而生&#xff0c;凭借其私有化部署和100%源码交付的特性&a…

Unity之铰链关节和弹簧组件

《今天闪电侠他回来了&#xff0c;这一次他要拿回属于他的一切》 目录 &#x1f4d5;一、铰链关节组件HingeJoint 1. 实例 2. 铰链关节的坐标属性 ​3.铰链关节的马达属性Motor &#x1f4d5;二、弹簧组件 &#x1f4d5;三、杂谈 一、铰链关节组件HingeJoint 1. 实例 说…

【STM32调试】寄存器调试不良问题记录持续版

STM32寄存器调试不良问题记录 NVIC&#xff08;内嵌的中断向量控制器&#xff09;EXTI&#xff08;外部中断/事件&#xff09; 记录一些stm32调试过程中&#xff1a;不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄…

从uptime看linux平均负载

从前遇到系统卡顿只会top。。top看不出来怎么搞呢&#xff1f; Linux系统提供了丰富的命令行工具&#xff0c;以帮助用户和系统管理员监控和分析系统性能。在这些工具中&#xff0c;uptime、mpstat和pidstat是非常有用的命令&#xff0c;它们可以帮助你理解系统的平均负载以及资…

短信系统搭建主要因素|网页短信平台开发源码

短信系统搭建主要因素|网页短信平台开发源码 随着移动互联网的快速发展&#xff0c;短信系统已成为企业和个人进行信息传递的重要工具。建立一个高效可靠的短信系统对于企业来说非常重要。下面我们将介绍一些影响短信系统搭建的主要因素。 1. 平台选择&#xff1a;在搭建短信系…

2018年认证杯SPSSPRO杯数学建模B题(第一阶段)动态模糊图像全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 B题 动态模糊图像 原题再现&#xff1a; 人眼由于存在视觉暂留效应&#xff0c;所以看运动的物体时&#xff0c;看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程&#xff0c;所以这帧画面事实上是模糊的。对电影的截图来说&…

PyQt5零基础入门(五)——QLabel显示图像

QLabel显示图像 前言显示静态图片显示动态图 前言 QLabel是Qt库中的一个部件&#xff0c;通常用于显示文本或富文本文档。然而&#xff0c;QLabel也可以用来显示图像。 一种常见的使用QLabel显示图像的方法是使用QPixmap类。QPixmap可以从文件中接收图片&#xff0c;然后可以…

2024年WebGIS开发三维面试题及答案解析

​前言 简介 面试之前 面试流程 自我介绍 1 面试简介 1 、首先做一个简单的自我介绍 2 、在公司/学习中做了什么样的项目&#xff1f; 在项目中参与哪些模块&#xff1f;重点介绍做了哪些功能? 3 、用户名/密码传输给后台的时候是加密传输还是明文传输 4 、token如何校…

多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线

2024年01月16日&#xff0c;智谱AI首届技术开放日(Zhipu DevDay)在北京中关村国家自主创新示范区展示中心成功举办。现场&#xff0c;智谱AI团队全面展示了其投身于大模型事业三年多来所积累的技术成果&#xff0c;并重磅发布了新一代基座大模型GLM-4。 此次GLM-4的发布及上线&…

C#调用Newtonsoft.Json将bool序列化为int

使用Newtonsoft.Json将数据对象序列化为Json字符串时&#xff0c;如果有布尔类型的属性值时&#xff0c;一般会将bool类型序列化为字符串&#xff0c;true值序列化为true&#xff0c;false值序列化为false。如下面的类型序列化后的结果如下&#xff1a; public class UserInfo…

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…