redis docker 集群搭建

news2024/11/24 20:57:24

redis docker 集群搭建

1. 安装镜像

docker pull redis:latest

2. 创建conf模板和脚本

# 创建模板目录
mkdir /data/redis_conf

# 创建实际映射目录
mkdir /data/redis_data

# 在/data/redis_conf创建conf模板
touch redis_cluster.conf.template

# 编写redis_cluster.conf.template文件
vi redis_cluster.conf.template
port ${PORT}
requirepass 1234
masterauth 1234
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.112.136
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

cluster-announce-port:此端口为redis提供服务端口,用于应用客户端连接
cluster-announce-bus-port:此端口用于redis集群进行故障检测、配置更新、故障转移授权和内部通讯使用,不用于应用客户端连接使用
cluster-enabled:是否启动集群,选值:yes 、no
cluster-config-file 配置文件.conf :指定节点信息,自动生成
cluster-node-timeout 毫秒值: 配置节点连接超时时间
appendonly:是否开启持久化,选值:yes、no

也可使用官方conf进行修改
redis中文官方网站:http://www.redis.cn/download.html

在这里插入图片描述
在这里插入图片描述
根据此文件按如上修改即可

3. 创建6个redis实例的数据目录,配置文件目录和配置文件脚本

for port in `seq 6380 6385`
do 
  mkdir -p /data/redis_data/${port}/conf \
  && PORT=${port} envsubst < /data/redis_conf/redis_cluster.conf.template > /data/redis_data/${port}/conf/redis.conf \
  && mkdir -p /data/redis_data/${port}/data;\
done

# 查看创建目录
tree /data/redis_data
redis_data/
|-- 6380
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 6381
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 6382
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 6383
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 6384
|   |-- conf
|   |   `-- redis.conf
|   `-- data
`-- 6385
    |-- conf
    |   `-- redis.conf
    `-- data

18 directories, 6 files

4. 批量创建容器脚本

for port in $(seq 6380 6385); do \
  docker run -d -it -p ${port}:${port} -p 1${port}:1${port} --restart always --name redis-${port} \
  -v /data/redis_data/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /data/redis_data/${port}/data:/data \
  -e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
  redis:latest redis-server /usr/local/etc/redis/redis.conf; \
done

5. 查看容器运行状态

docker ps

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS
                                                                                     NAMES
006b561fde27   redis:latest                "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:6385->6385/tcp, 6379/tcp, 0.0.0.0:16385->16385/tcp                                              redis-6385
583d5ee68dbe   redis:latest                "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:6384->6384/tcp, 6379/tcp, 0.0.0.0:16384->16384/tcp                                              redis-6384
f958ac78f9e4   redis:latest                "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:6383->6383/tcp, 6379/tcp, 0.0.0.0:16383->16383/tcp                                              redis-6383
65fa57516a49   redis:latest                "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:6382->6382/tcp, 6379/tcp, 0.0.0.0:16382->16382/tcp                                              redis-6382
e5d85bb5fca2   redis:latest                "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:6381->6381/tcp, 6379/tcp, 0.0.0.0:16381->16381/tcp                                              redis-6381
ac5eb8a0d40d   redis:latest                "docker-entrypoint.s…"   43 minutes ago   Up 43 minutes   0.0.0.0:6380->6380/tcp, 6379/tcp, 0.0.0.0:16380->16380/tcp                                              redis-6380

6个redis容器创建好之后,选择其中的一个容器进入,进行redis-cluster集群创建

docker exec -it redis-6380 /bin/bash

# 执行组件集群的命令
# redis-cli -a wangl  --cluster create 192.168.1.5:6380 192.168.1.5:6381 192.168.1.5:6382 192.168.1.5:6383 192.168.1.5:6384 192.168.1.5:6385 --cluster-replicas 1
root@ac5eb8a0d40d:/data# redis-cli -a 1234  --cluster create 192.168.1.5:6380 192.168.1.5:6381 192.168.1.5:6382 192.168.1.5:6383 192.168.1.5:6384 192.168.1.5:6385 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.5:6384 to 192.168.1.5:6380
Adding replica 192.168.1.5:6385 to 192.168.1.5:6381
Adding replica 192.168.1.5:6383 to 192.168.1.5:6382
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c 192.168.1.5:6380
   slots:[0-5460] (5461 slots) master
M: 53ae5eb45c6e975844be09e4265974d7c5dd5897 192.168.1.5:6381
   slots:[5461-10922] (5462 slots) master
M: ea8d4b455c69084b84c80177f42b327af37988e0 192.168.1.5:6382
   slots:[10923-16383] (5461 slots) master
S: 652c6abcbfe3229b5bf42b6e8879d7543744c2aa 192.168.1.5:6383
   replicates 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c
S: aef42b280ab14f22d426e954d8b1b81dae0e9913 192.168.1.5:6384
   replicates 53ae5eb45c6e975844be09e4265974d7c5dd5897
S: 7a3ed1d545c7b27ad5e1fe9984119a6ebd1da440 192.168.1.5:6385
   replicates ea8d4b455c69084b84c80177f42b327af37988e0
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 192.168.1.5:6380)
M: 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c 192.168.1.5:6380
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: aef42b280ab14f22d426e954d8b1b81dae0e9913 192.168.1.5:6384
   slots: (0 slots) slave
   replicates 53ae5eb45c6e975844be09e4265974d7c5dd5897
S: 7a3ed1d545c7b27ad5e1fe9984119a6ebd1da440 192.168.1.5:6385
   slots: (0 slots) slave
   replicates ea8d4b455c69084b84c80177f42b327af37988e0
M: ea8d4b455c69084b84c80177f42b327af37988e0 192.168.1.5:6382
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 652c6abcbfe3229b5bf42b6e8879d7543744c2aa 192.168.1.5:6383
   slots: (0 slots) slave
   replicates 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c
M: 53ae5eb45c6e975844be09e4265974d7c5dd5897 192.168.1.5:6381
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

– cluster-replicas 1,参数后面的数字表示的是主从比例,比如这里的 1 表示的是主从比例是 1:1
如果 --cluster-replicas 2 那么主从比例就是 1:2,也就是 1 个主节点对于应 2 个从节点。
即:3(master) + 6(slave) = 9个 Redis 实例。

6. 查看集群状态

root@ac5eb8a0d40d:/data# redis-cli -a 1234 --cluster check 192.168.1.5:6380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.5:6380 (9053ff2d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.1.5:6382 (ea8d4b45...) -> 0 keys | 5461 slots | 1 slaves.
192.168.1.5:6381 (53ae5eb4...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.1.5:6380)
M: 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c 192.168.1.5:6380
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: aef42b280ab14f22d426e954d8b1b81dae0e9913 192.168.1.5:6384
   slots: (0 slots) slave
   replicates 53ae5eb45c6e975844be09e4265974d7c5dd5897
S: 7a3ed1d545c7b27ad5e1fe9984119a6ebd1da440 192.168.1.5:6385
   slots: (0 slots) slave
   replicates ea8d4b455c69084b84c80177f42b327af37988e0
M: ea8d4b455c69084b84c80177f42b327af37988e0 192.168.1.5:6382
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 652c6abcbfe3229b5bf42b6e8879d7543744c2aa 192.168.1.5:6383
   slots: (0 slots) slave
   replicates 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c
M: 53ae5eb45c6e975844be09e4265974d7c5dd5897 192.168.1.5:6381
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

7. 检查redis集群节点信息


root@ac5eb8a0d40d:/data# redis-cli -c -a wangl -h 192.168.1.5 -p 6381
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.5:6381> cluster nodes
7a3ed1d545c7b27ad5e1fe9984119a6ebd1da440 192.168.1.5:6385@16385 slave ea8d4b455c69084b84c80177f42b327af37988e0 0 1681459069195 3 connected
53ae5eb45c6e975844be09e4265974d7c5dd5897 192.168.1.5:6381@16381 myself,master - 0 1681459068000 2 connected 5461-10922
aef42b280ab14f22d426e954d8b1b81dae0e9913 192.168.1.5:6384@16384 slave 53ae5eb45c6e975844be09e4265974d7c5dd5897 0 1681459070104 2 connected
ea8d4b455c69084b84c80177f42b327af37988e0 192.168.1.5:6382@16382 master - 0 1681459069095 3 connected 10923-16383
652c6abcbfe3229b5bf42b6e8879d7543744c2aa 192.168.1.5:6383@16383 slave 9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c 0 1681459070508 1 connected
9053ff2d691ac1e11dceeb6e11b1d0f950e26a8c 192.168.1.5:6380@16380 master - 0 1681459069000 1 connected 0-5460
192.168.1.5:6381>

8. 测试

# 在 6385 端口下添加数据
root@ac5eb8a0d40d:/data# redis-cli -c -a wangl -h 192.168.1.5 -p 6385
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.5:6385> set testkey testvalue
-> Redirected to slot [4757] located at 192.168.1.5:6380
OK
192.168.1.5:6380> get testkey
"testvalue"
192.168.1.5:6380> exit

# 在 6382 端口下查询数据
root@ac5eb8a0d40d:/data# redis-cli -c -a wangl -h 192.168.1.5 -p 6382
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.5:6382> get testkey
-> Redirected to slot [4757] located at 192.168.1.5:6380
"testvalue"

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

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

相关文章

详解TCP协议与模拟实现TCP版本的字典翻译客户端与服务器

文章目录TCP协议前言1.TCP协议介绍2. TCP协议的特点3. TCP协议的机制3.1 确认应答机制3.2 超时重传机制3.3 连接管理机制3.3.1 三次握手3.3.2 四次挥手3.4 滑动窗口3.5 流量控制3.6 拥塞控制3.7 延时应答机制3.8 捎带应答机制3.9 面向字节流3.10 异常处理4.TCP socket的介绍5.实…

SureX 全新投资矩阵推出,引领理财新潮流!

前言—— 随着加密货币市场的崛起&#xff0c;越来越多的投资者开始关注这个领域。但是&#xff0c;对于新手投资者来说&#xff0c;加密货币市场充满了各种不确定性和风险。如何在这个市场上游刃有余&#xff1f;SureX 零操作理财产品来袭&#xff0c;为新手投资者提供了一种…

[SWPUCTF] 2021新生赛之(NSSCTF)刷题记录 ①

[SWPUCTF] 2021 新生赛&#xff08;NSSCTF刷题记录wp&#xff09;[SWPUCTF 2021 新生赛]gift_F12[第五空间 2021]签到题[SWPUCTF 2021 新生赛]jicao[SWPUCTF 2021 新生赛]easy_md5[SWPUCTF 2021 新生赛]caidao[SWPUCTF 2021 新生赛]include[SWPUCTF 2021 新生赛]easyrce[SWPUCT…

机器人提示词工程师 Robotics Prompt Engineer

还没毕业&#xff0c;在校学习的各项技能都已经没用了&#xff0c;也别急着焦虑和忧伤&#xff0c;工业时代到信息时代&#xff0c;信息时代到智能时代&#xff0c;换代对每个普通人都是非常具有挑战性的&#xff0c;也是新一轮洗牌的开始。 机器人提示词工程师的核心竞争力包括…

【音视频第14天】webRTC协议(1)

目录协议ICESTUNNATTURNSDPSDP结构Signaling and ConnectingSignaling: How peers find each other in WebRTCConnecting and NAT Traversal with STUN/TURNSignalingsdp协议WebRTC如何使用sdpWebRTC会话示例Connecting为什么WebRTC需要一个专用的子系统来连接?Networking rea…

配置 Zabbix Server 监控 Kafka 集群

目录 第一章.环境安装部署 第一章.环境安装部署 1.1安装卡夫卡集群跟zabbix 第二章操作步骤 2.1.记录集群 Zabbix 监控节点地址 2.2.在kafka三个节点安装安装 zabbix-agent2 2.3在 Web 页面中添加 agent 主机 第一章.环境安装部署 1.1安装卡夫卡集群跟zabbix systemctl…

2023年想学习编程语言,该选哪种?

2023年想学习编程语言&#xff0c;该选哪种&#xff1f;在计算机广泛运用于社会的各个行业领域乃至生活日常每个角落的今天&#xff0c;选择学习一门计算机语言真的很不错&#xff0c;它会让你的生活从此与众不同&#xff0c;拥有另一番光景的未来。 根据最新的编程语言排行榜…

聚焦运营商信创运维,美信时代监控易四大亮点值得一试!

2021年11月《“十四五”信息通信行业发展规划》提出&#xff0c;到2025年&#xff0c;我国将建立高速泛在、集成互联、智能绿色、安全可靠的新型数字基础设施体系。 此《规划》让我国运营商信创进一步加速&#xff0c;中国移动、中国电信、中国联通等都先后加入信创大军&#x…

尚硅谷大数据技术Scala教程-笔记05【模式匹配、异常、隐式转换、泛型、scala总结】

视频地址&#xff1a;尚硅谷大数据技术之Scala入门到精通教程&#xff08;小白快速上手scala&#xff09;_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01【Scala课程简介、Scala入门、变量和数据类型、运算符、流程控制】尚硅谷大数据技术Scala教程-笔记02【函数式编程】…

性能测试简介

性能测试是通过模拟真实的用户&#xff0c;对软件或系统进行操作&#xff0c;查看其响应时间、响应速度、负载能力等。并分析在不同的业务需求下&#xff0c;系统的负载情况是否满足要求。 性能测试主要从两个方面进行&#xff1a;一方面是性能测试本身&#xff0c;包括压力测试…

【Vue-cli】前端工程化环境准备

一、知识点整理 1、Vue-cli 是Vue官方提供的一个脚手架&#xff0c;用于快速生成一个 Vue 的项目模板。 2、Vue-cli提供了如下功能: 1&#xff09;统一的目录结构 2&#xff09;本地调试 3&#xff09;热部署 4&#xff09;单元测试 5&#xff09;集成打包上线 3、需安装依赖…

2023年最新网络安全渗透工程师面试题汇总!不看亏大了!

技术面试问题 CTF 说一个印象深刻的CTF的题目 Padding Oracle->CBC->密码学(RSA/AES/DSA/SM) CRC32 反序列化漏洞 sql二次注入 第一次进行数据库插入数据的时候&#xff0c;仅仅只是使用了 addslashes 或者是借助get_magic_quotes_gpc 对其中的特殊字符进行了转义&…

Java中的文件操作

Java中通过java.io.File类对一个文件&#xff08;包含目录&#xff09;进行抽象的描述。注意有File对象&#xff0c;并不代表真实存在该文件。 1.File概述 我们先看看File类中的常见属性、构造方法和方法 1.1属性 修饰符及类型属性说明static StringpathSeparator依赖系统的…

利用ffmpeg源码安装+vscode开发环境搭建详解

前言&#xff1a; 大家好&#xff0c;今天给大家分享一篇ffmpeg开发环境的搭建&#xff0c;我在很早之前也给搭建过ffmpeg源码的安装&#xff0c;但是并没有给大家去搭建开发环境&#xff0c;而且当时的版本也比较老&#xff0c;很多细节问题没有给大家展示如何解决&#xff01…

win11破解以开启多用户同时登陆

1、简述 背景就是有一台电脑&#xff0c;windows11的专业版&#xff0c;上面有一套软件&#xff0c;但是这台电脑还有人需要用。电脑配置还不错&#xff0c;所以就想在创建一个账户&#xff0c;让需要用那套软件的人远程登陆使用。 步骤还不少&#xff0c;有一丢丢啰嗦。 2、首…

IP-GUARD如何通过设备管控策略单独禁用或启用笔记本插SD卡?

sd卡可以通过外置读卡器或者笔记本自带的sd卡槽进行插入使用,我们可以通过设备控制策略禁止sd插入的设备来实现控制; 在控制台-策略-设备控制: 动作:禁止/允许 设备描述:读卡器的设备描述(查看方法参考问题 2 ) 读卡器的描述信息可以在控制面板-设备管理中,usb相关的设…

springcloud-openFeign简单梳理

OpenFeign openFeign是springcloud中&#xff0c;服务间进行调用的常用方式。了解它&#xff0c;可以更好的处理服务间调用问题。 EnableFeignClients Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Documented Import(FeignClientsRegistrar.class) public …

LTC6268-10 4GHz 超低偏置电流 FET 输入运算放大器

LTC6268-10是一个运算放大器 具有低输入偏置电流和低输入电容。它还具有低输入参考电流噪声和电压噪声。这使得它成为高速跨组放大器和高阻抗传感器放大电路的理想选择。其为去补偿型运放&#xff0c;具有数值为 10 的稳定增益。 该器件工作在 3.1V 至 5.25V 电源&#xff0c;每…

Android View的坐标获取详解以及动画坐标分析

1、介绍 在平面图形中&#xff0c;图形都是由点坐标确定的。同样&#xff0c;Android的设备屏幕也是一个&#xff0c;如果非3D图形&#xff0c;正常的view就是一个二维坐标 参考View屏幕的左上角的坐标A(0,0),如果屏幕的宽为:width,高&#xff1a;height 那么右下角的坐标是D(…

【C/C++】使用C++和Direct3D (d3d)获取屏幕截图并根据传入分辨率进行缩放图片大小

目录 一&#xff0c;函数清单 1.Direct3DCreate9 函数 2.IDirect3D9::CreateDevice 方法 3.IDirect3DDevice9::GetDisplayMode 方法 4.IDirect3DDevice9::CreateOffscreenPlainSurface 方法 5.IDirect3DDevice9::GetFrontBufferData 方法 6.IDirect3DDevice9::D3DXLoadS…