docker安装redis集群--分布式存储案例(二)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: docker安装redis集群--分布式存储案例

3.新建6个redis容器实例


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 6381
docker 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 6382
docker 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 6383
docker 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 6384
docker 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 6385
docker 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


命令解释:


docker run : 创建并运行docker容器实例

--name redis-node-x : 容器的名称

--net host :使用宿主机的IP和端口

--privileged=true :获取宿主机root用户的权限

-v /data/redis/share/redis-node-x:/data :挂载容器数据卷,宿主机地址:docker内部地址

redis:6.0.8 :redis镜像和版本号

--cluster-enabled yes : 开启redis集群

--appendonly yes : 开启持久化

--port xxxx : 设置redis端口


运行完上面这些命令后,运行docker ps -a 可以查看当前的6个redis容器实例:


c9c9085f1b9f48b98797b14e23ef37d7.png


如果和我一样的话,那就没有问题了。


4.进入容器redis-node-1,并未6台机器构建构建集群关系


其实不一定要进入一号容器,其他几号redis容器也可以。

进入容器:


docker exec -it redis-node-1 /bin/bash


构建主从关系:

注意:进入docker容器后才能执行以下的命令,并且注意自己的真实IP地址。

redis-cli --cluster create \
192.168.172.131:6381 \
192.168.172.131:6382 \
192.168.172.131:6383 \
192.168.172.131:6384 \
192.168.172.131:6385 \
192.168.172.131:6386 \
--cluster-replicas 1


--cluster-replicas 1 表示为每个master创建一个slave节点,集群关联一比一,1主1从对半分。

我们运行后,会有如下显示,会发现哈希槽分区已经帮我们弄好了:


48646e2b72c64ed78042f44e9e341a07.png


之后会让我们选择yes或者no我们选择yes:


b92859927a24407f858db836d0a1b521.png


会看到,redis分配的6381、6382、6383号机为主,而分配6384,6385,8386号机为从。

到这里,如果OK的话,那3主3从就搞定了。


5.链接进入6381作为切入点,查看集群状态


进入6381容器


docker exec -it redis-node-1 /bin/bash


进入redis客户端:


redis-cli -p 6381


然后在redis里面查看集群信息:


cluster info


1cb8c0700ba3446b946084690bf80998.png


查看集群的主从信息,显示各台的主从关系:


cluster nodes


下面显示6381的从服务器为6384。6382的从服务器为6385。6383的从服务器为6386。主从关系非常清晰。


ad5c983015244acea5b2b49af6875187.png


但是这还没有完呢


六.主从容错切换迁移案例


我们上面虽然搭建好了3主3从的redis,但是我们只知道他们名下是怎么挂的,我们还需要学习一下这个集群的数据读写存储和容错切换迁移。我们set一个值以后,集群能不能共享数据?而且我们也知道槽位被分为3段的,这3段代表3个主机,那到底key存进来以后他存在哪里?又怎么在集群里面数据共享呢?我们还要考虑到,如果master1主机宕机了,slave1从机会不会补位?主从架构,主机宕机了,要求从机能够补位。这就是我们的俩个要考虑到的需求。


1.数据读写存储


启动6机构成的集群,并通过exec命令进入(多开几个命令窗口)

docker exec -it redis-node-1 /bin/bash


docker exec -it redis-node-2 /bin/bash


docker exec -it redis-node-3 /bin/bash


docker exec -it redis-node-4 /bin/bash


docker exec -it redis-node-5 /bin/bash


docker exec -it redis-node-6 /bin/bash


2.对6381号机新增2个key

进入6381号redis:


redis-cli -p 6381


并可以看到keys没有任何东西:


87eccb3f882b4f558da307e57aceca08.png


我们参数新增一个key和value:

set name lily

6af26f46c8a74823909dc93b3455eae9.png


会发现它报错了,没有存进去,显示要移动到6382号槽位。这是为什么呢?

因为我们的键name被redis集群计算出的hash对应的是5798,1号槽位存储的hash最大值是5460,超过5460就会被要求移动到2号机或其他号机。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
73 2
基于Redis的高可用分布式锁——RedLock
|
22天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
10天前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
20 2
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
10天前
|
NoSQL Linux Redis
linux之centos安装redis
linux之centos安装redis
|
1月前
|
Linux Docker Windows
Docker配置https证书案例
本文介绍了如何为Docker的Harbor服务配置HTTPS证书,包括安装Docker和Harbor、修改配置文件以使用证书、生成自签名证书、配置证书以及验证配置的步骤。
35 2
Docker配置https证书案例
|
1月前
|
Ubuntu Linux Docker
Ubuntu 18.04 安装Docker实战案例
关于如何在Ubuntu 18.04系统上安装Docker的实战案例,包括安装步骤、配置镜像加速以及下载和运行Docker镜像的过程。
163 3
Ubuntu 18.04 安装Docker实战案例
|
1月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
93 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
5天前
|
NoSQL 安全 关系型数据库
20)用 Redis 实现分布式锁
20)用 Redis 实现分布式锁
15 0
|
1月前
|
NoSQL 关系型数据库 数据库
JumpServer的Docker部署实战案例
JumpServer的Docker部署实战案例,详细介绍了JumpServer的概述、环境准备、基于Docker的快速部署步骤,以及如何访问JumpServer的WebUI。
30 0
下一篇
无影云桌面