【架构】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.hqwc.cn/news/411439.html

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

相关文章

VSCode编写 C/C++ 程序

VSCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并…

深度学习记录--梯度检验

数值逼近 为了对梯度进行检验,需要计算近似误差值来接近梯度 对于单边误差和双边误差公式,其中双边误差与真实梯度相差更小,故一般采用双边误差公式 双边误差 公式: 梯度检验(gradient checking) 对于成本函数,求出…

canvas绘制美队盾牌

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

记一次 .NET某道闸收费系统 内存溢出分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析。 二&…

力扣1929.数组串联

前言 虽然力扣对我来说很难,但只要每天刷一点,就会慢慢增强能力,总有一天刷动力扣的难题,所以说,今天也是刷力扣的一天。 😆😆 /** * Note: The returned array must be malloced, assume call…

全新商业版SEO关键词按日计费系统/关键词排名优化+会员/网站/关键词管理+搭建教程

源码简介: 全新商业版SEO关键词按日计费系统,它不仅有关键词排名优化功能,还有会员管理、网站管理、关键词管理、关键词查价、公众号查询、财务管理和在线充值等功能,并且附带了搭建教程。 系统不仅具备关键词排名优化功能&…

STM32WLE5JC介绍

32位 ARM Cotrex-M4 CPU 32MHz晶体振荡器 32 kHz RTC振荡器与校准 20x32位备份寄存器 引导程序支持USART和SPI接口 介绍 STM32WLE5/E4xx远程无线和超低功耗器件嵌入了强大的超低功耗LPWAN兼容无线电解决方案,支持以下调制:LoRa,&#xff08…

Zookeeper启动报错常见问题以及常用zk命令

Zk常规启动的命令如下 sh bin/zkServer.sh start 启动过程如果存在失败,是没办法直接看出什么问题,只会报出来 Starting zookeeper … FAILED TO START 可以用如下命令启动,便于查看zk启动过程中的详细错误 sh bin/zkServer.sh start-for…

鸿蒙开发-ArkUI框架实战【日历应用 】

对于刚刚接触OpenHarmony应用开发的开发者,最快的入门方式就是开发一个简单的应用,下面记录了一个日历应用的开发过程,通过日历应用的开发,来熟悉基本图形的绘制,ArkUI的组件的使用,UI组件生命周期&#xf…

pg数据库计算两个时间戳相差的天数

需要使用DATE_PART函数,关于DATE_PART的相关描述,可以参考这里进行学习。 select DATE_PART(day,timestamp1 - timestamp2) as days_difference from tablename;

YOLOv5改进 | 二次创新篇 | 升级版本Dyhead检测头替换DCNv3 实现完美升级(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是在DynamicHead上替换DCNv3模块,其中DynamicHead的核心为DCNv2,但是今年新更新了DCNv3其作为v2的升级版效果肯定是更好的,所以我将其中的核心机制替换为DCNv3给Dyhead相当于做了一个升级,效果也比之前的普通版本要好,这个机制我认…

Pixels:重新定义游戏体验的区块链农场游戏

数据源:Pixels Dashboard 作者:lesleyfootprint.network 最近,Pixels 通过从 Polygon 转移到 Sky Mavis 旗下的 Ronin 网络,完成了一次战略性的转变。 Pixels 每日交易量 Pixels 在 Ronin 网络上的受欢迎程度急剧上升&#xf…