docker Redis集群

在这里插入图片描述

文章目录

            • 1. 创建redis网卡
            • 2. 创建redis配置
            • 3. 启动redis集群
            • 4. 创建集群
            • 5. 记录与调试
            • 6. 故障转移

1. 创建redis网卡
# 删除容器
docker rm -f ${docker ps -aq}# 创建redis网卡
docker network create redis --subnet 172.38.0.0/16# 删除redis网卡
docker network rm redis# 查看docker网络
docker network ls# 查看具体信息
docker network  inspect redis
2. 创建redis配置
# 通过脚本创建6个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /app/mydata/redis/node-${port}/conf
touch /app/mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/app/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
3. 启动redis集群
  • redis-1
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /app/mydata/redis/node-1/data:/data \
-v /app/mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
  • redis-2
docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v /app/mydata/redis/node-2/data:/data \
-v /app/mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
  • redis-3
docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /app/mydata/redis/node-3/data:/data \
-v /app/mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
  • redis-4
docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /app/mydata/redis/node-4/data:/data \
-v /app/mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
  • redis-5
docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v /app/mydata/redis/node-5/data:/data \
-v /app/mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
  • redis-6
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /app/mydata/redis/node-6/data:/data \
-v /app/mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
4. 创建集群

进入任意一个redis容器,这里演示redis-1

docker exec -it redis-1 /bin/sh

创建集群

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
5. 记录与调试
[root@localhost node-1]# docker exec -it redis-1 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-rep
licas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 9487301023ddb4d28fc0ae6fdb9f1f5a165a1532 172.38.0.11:6379slots:[0-5460] (5461 slots) master
M: 7ae515caa00ad54517756fbb6f8a5bfab271a787 172.38.0.12:6379slots:[5461-10922] (5462 slots) master
M: b9e57a5d66e08e163bc41d71ef28070b4f20ce02 172.38.0.13:6379slots:[10923-16383] (5461 slots) master
S: a23ba18c346a75e8eb106bcab760fdfb6789a256 172.38.0.14:6379replicates b9e57a5d66e08e163bc41d71ef28070b4f20ce02
S: abac69c275d92b85a1f55bd9455dd7a123caa6d5 172.38.0.15:6379replicates 9487301023ddb4d28fc0ae6fdb9f1f5a165a1532
S: 674ae1ba47f19c68d79e90986d432914d436010e 172.38.0.16:6379replicates 7ae515caa00ad54517756fbb6f8a5bfab271a787
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 172.38.0.11:6379)
M: 9487301023ddb4d28fc0ae6fdb9f1f5a165a1532 172.38.0.11:6379slots:[0-5460] (5461 slots) master1 additional replica(s)
M: b9e57a5d66e08e163bc41d71ef28070b4f20ce02 172.38.0.13:6379slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: abac69c275d92b85a1f55bd9455dd7a123caa6d5 172.38.0.15:6379slots: (0 slots) slavereplicates 9487301023ddb4d28fc0ae6fdb9f1f5a165a1532
S: 674ae1ba47f19c68d79e90986d432914d436010e 172.38.0.16:6379slots: (0 slots) slavereplicates 7ae515caa00ad54517756fbb6f8a5bfab271a787
M: 7ae515caa00ad54517756fbb6f8a5bfab271a787 172.38.0.12:6379slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: a23ba18c346a75e8eb106bcab760fdfb6789a256 172.38.0.14:6379slots: (0 slots) slavereplicates b9e57a5d66e08e163bc41d71ef28070b4f20ce02
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
/data # # 客户端测试
/data # redis-cli -c
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned: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:1
cluster_stats_messages_ping_sent:289
cluster_stats_messages_pong_sent:294
cluster_stats_messages_sent:583
cluster_stats_messages_ping_received:289
cluster_stats_messages_pong_received:289
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:583
127.0.0.1:6379> # 查看集群节点信息
127.0.0.1:6379> cluster nodes
b9e57a5d66e08e163bc41d71ef28070b4f20ce02 172.38.0.13:6379@16379 master - 0 1643181809583 3 connected 10923-16383
abac69c275d92b85a1f55bd9455dd7a123caa6d5 172.38.0.15:6379@16379 slave 9487301023ddb4d28fc0ae6fdb9f1f5a165a1532 0 1643181809583 5 connected
674ae1ba47f19c68d79e90986d432914d436010e 172.38.0.16:6379@16379 slave 7ae515caa00ad54517756fbb6f8a5bfab271a787 0 1643181808569 6 connected
7ae515caa00ad54517756fbb6f8a5bfab271a787 172.38.0.12:6379@16379 master - 0 1643181809000 2 connected 5461-10922
a23ba18c346a75e8eb106bcab760fdfb6789a256 172.38.0.14:6379@16379 slave b9e57a5d66e08e163bc41d71ef28070b4f20ce02 0 1643181809583 4 connected
9487301023ddb4d28fc0ae6fdb9f1f5a165a1532 172.38.0.11:6379@16379 myself,master - 0 1643181807000 1 connected 0-5460
127.0.0.1:6379> # 设置值
127.0.0.1:6379> set a b
-> Redirected to slot [15495] located at 172.38.0.13:6379
OK
172.38.0.13:6379>
6. 故障转移

再开一个窗口
思路:停止172.38.0.13对应的master节点,然后,再获取a的值,

  • 停止a key存储主节点的docker容器

  • 获取a的值

get a

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

VBA 用 Environ 获取系统环境变量

目录 1. VBA Environ系统环境变量:2. 利用 VBA 获得系统所有环境变量1. VBA Environ系统环境变量: 返回 Windows 目录: Environ ("Windir") 返回应用程序文件夹: Environ ("ProgramFiles") 返回用户配置文件目录:

关于 VBA Erase() 函数清空数组

目录 1. 关于 Erase() 函数1.1 作用1.2 语法1.3 说明1.4 示例1.4.1 示例一1.4.2 示例二1. 关于 Erase() 函数 1.1 作用 重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。它的行为取决于数组的类型(见 1.3 )。 1.2 语法 Erase arraylist所需的 arraylist 参…

centos 6.8 安装telnet-server服务

检查是否安装了telnet服务 [rootlocalhost app]# rpm -qa | grep telnet若返回为空&#xff0c;则证明没有安装 YUM 安装 [rootlocalhost app]# yum -y install telnet telnet-server启动telnet服务 编辑/etc/xinetd.d/telnet文件&#xff0c;将disable 改为no [rootlocalho…

Excel 表单控件之 CheckBox 集合事件响应

示例代码: Sub CheckClick()Dim check As CheckBoxSet check = Sheet1.CheckBoxes(Application.Caller)If check.Value = 1 ThenSheet1.Range("a1").Value =

centos6.x redhat6.x 升级openssh8.7

文章目录1. 安装telnet2. 上传openssh安装包3. 安装依赖包4. 卸载现在的openssh5. 解压赋予权限6. 开始安装1. 安装telnet 安装telnet&#xff0c;防止意外ssh无法登录 centos 6.8 安装telnet-server服务 yum -y install xinetd验证 rpm -qa | grep telnet记录&#xff1a; …

VBA 自制 TreeView 树视图,附加控件 TreeView 最优替代方案

目录 一. Treeview Demo1.1 概述1.2 按钮说明1.3 TreeView 事件说明二. Instructions - 使用说明2.1 Excel 用户2.1.1 常规使用2.1.2 开发大型 TreeView 的技巧2.2 Word 和 Access 用户2.2.1 Access 实现三. 类模块3.1 类模块一:clsTreeView3.2 类模块二:clsNode三. 版本历史…

centos7.x redhat7.x 升级openssh8.7

文章目录1. 安装telnet2. 上传openssh安装包3. 安装依赖包4. 卸载现在的openssh5. 解压赋予权限6. 开始安装1. 安装telnet rpm -qa | grep telnet rpm -qa | grep xinetd yum -y install telnet telnet-server yum -y install xinetd验证 rpm -qa | grep telnet rpm -qa | gr…

VBA 精选示例代码库

目录 1. 厘米&英寸&像素&Point 的转换2. 固定滚动区域3. 按特定数量的行、列或页滚动3.1 `Window.SmallScroll` 方法:按行或按列滚动窗口内容3.2 `Window.LargeScroll` 方法:按页滚动窗口内容4. 工作簿 VBA 属性和操作4.1 按名称引用工作簿4.2 按状态引用工作簿4…

Excel 宏工作簿 VBAProject 工程保护 - 代码不可查看

目录 一. VBAProject 工程保护二. VBA工程不可查看一. VBAProject 工程保护 该功能由 Excel 官方提供,用于对 VBA 代码加以密码保护,具体设置方法如下动态图所示: 但是这个方法的缺点非常明显,随便一个工具就能轻松消除密码或免密查看。 二. VBA工程不可查看 接触 VBA 比…

解决ssh正常登录sftp不能登录的问题

vim /etc/ssh/sshd_config将Subsystem sftp /usr/libexec/openssh/sftp-server 注释 替换为 Subsystem sftp /usr/libexec/sftp-server重启sshd服务 /etc/init.d/sshd restart

比较 Excel 中两列的差异,并用箭头标识和指向匹配结果

目录 1. 简介 - 比较两个 Excel 列2. 示例 - 比较两个列3. 绘制比较结果箭头标识3.1 绘制箭头的宏3.2 清除表格中的箭头的宏3.3 绘制箭头过程调用1. 简介 - 比较两个 Excel 列 查找两个 excel 列之间的差异。 通过遍历未知长度和未知顺序的列,将较长的列表与较短的列表进行比…

SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】 服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473)【原理扫描】

netstat -apn | grep 41148 ps -ef | grep 2376 netstat -apn | grep 41148二、Linux 1、查询8080端口是否被占用&#xff0c;并可以查看pid/程序名 netstat -apn | grep 8080Q2、查看详细信息 ps -ef | grep PID3、终止该进程kill -9 PID

漂亮的带分步说明的 VBA 自制进度条

目录 一. 介绍二. 设计进度条2.1 添加用户窗体(UserForm)2.2 进度条属性设置2.3 设计 UserForm三. 添加进度条代码3.1 隐藏标题栏3.2 将代码添加到进度条窗体四. 显示进度条五. 如果我没有循环怎么办?六. 如果进度条没有更新怎么办?七. 结语一. 介绍 本文将引导您了解如何…

Refusing to install package with name “vue-i18n“ under a package

npm install vue-i18n时出现标题的报错&#xff0c;原因&#xff1a;vue create vue-i18n创建的项目名称为vue-i18n和要安装的包vue-i18n冲突了&#xff0c;修改项目名称即可解决

使用Istio进行多集群部署管理:单控制平面 Gateway 连接拓扑

作者 | 王夕宁 阿里巴巴高级技术专家 导读&#xff1a;本文摘自于由阿里云高级技术专家王夕宁撰写的《Istio 服务网格技术解析与实践》一书&#xff0c;讲述了如何使用 Istio 进行多集群部署管理来阐述服务网格对多云环境、多集群即混合部署的支持能力。 前文详情&#xff1a;…

如何轻松学习 Kubernetes?

作者 | 声东 阿里巴巴技术专家 <关注阿里巴巴云原生公众号&#xff0c;回复 排查 即可下载电子书> 导读&#xff1a;《深入浅出 Kubernetes》一书共汇集 12 篇技术文章&#xff0c;帮助你一次搞懂 6 个核心原理&#xff0c;吃透基础理论&#xff0c;一次学会 6 个典型问…

JavaScript 常用代码整理

目录 1.获取浏览器Cookie的值2. 颜色RGB转十六进制3. 复制到剪贴板4. 检查日期是否合法5. 查找日期位于一年中的第几天6. 英文字符串首字母大写7. 计算2个日期之间相差多少天8. 清除全部Cookie9. 生成随机十六进制颜色10. 数组去重11. 从 URL 获取查询参数12. 时间处理13. 校验…

《阿里云互联网多媒体存储解决方案蓝皮书》震撼上线!

前言 中国互联网从1994年正式接入国际网络至今&#xff0c;以非凡的力量改变了世界&#xff0c;重新塑造了商业、政治、社会&#xff0c;甚至改变了全球几十亿的人的生活。 中国互联网络信息中心&#xff08;CNNIC&#xff09;第45次《中国互联网络发展状况统计报告》中显示&a…

都在说实时数据架构,你了解多少?

作者&#xff1a;刘大龙唯品会 随着互联网的发展进入下半场&#xff0c;数据的时效性对企业的精细化运营越来越重要&#xff0c; 商场如战场&#xff0c;在每天产生的海量数据中&#xff0c;如何能实时有效的挖掘出有价值的信息&#xff0c; 对企业的决策运营策略调整有很大帮…