集群-cluster 集群搭建|学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习集群-cluster 集群搭建

开发者学堂课程【Redis 入门到精通(进阶篇)集群-cluster集群搭建】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13468


集群-cluster 集群搭建

 

内容介绍:

一、配置文件

二、如何构建 cluster 集群

 

一、配置文件

接下来来操作,可以看到目前已经创建了很多个窗口,先来介绍作用。我们要配一个三主三从的结构,为了看到日志的效果,创建了三个 master 客户端界面,三个slave 启动后的日志界面。之后有主命令操作客户端,将放置大量客户端操作。master1 客户端连前面的 master1,slave1 客户端连前面的 slave1,其余的master2、slave2 等使用机动客户端。

整体上使用主命令操作客户端进行操作,其余都用来显示信息

image.png

为了不影响后续操作,已经清空了 data 数据。输入 cd data 结果显示 total 0

再回到 conf,输入 cd conf

ll

显示 Conf 里只剩下了一个文件 redis.conf

需要将 redis.conf 复制成六个,通过这样的形式来快速变成其它的几个配置文件

先来查看服务器里的内容:

image.png

以上配置都不需要修改,只需要在最后加上 cluster 对应的配置,只有加上配置才能成为 cluster 集群中的一个节点。一共有三种配置,一个是启动 cluster,配置的名称是 enabled,在后面加上 yes 就是一个 cluster 节点。即添加 cluster-enabled yes

还需要配置:每个 cluster 都有一个启动的配置文件,如果不加这个文件默认的配置文件名会产生冲突,所以要区分开。但如果放在不同目录里就不会存在这种情况。

先来写名称 cluster-config-file,为了区分需要在文件名后加上端口号 nodes-6379.conf这是一个配置文件

最后再来设定一个 cluster 的下线时间,当该节点超时时,就会显示该时间,注意在企业开发时,该时间不会设置太短,但是目前做实验希望快速看到效果,现在设置为10秒。输入 cluster-node-timeout 10000,一旦下线10s后就会收到反馈。

配置完成后退出

接下来复制六个文件。先来查看当前文件,输入

cat redis.conf

再输入cat redis.conf > redis-6379.conf

ll

再来查看新文件是否满足要求,输入cat redis-6379.conf

结果显示

port 6379

daemonize no

dir /redis-4.0.0/data

dbfilename dump-6379.rdb

rdbcompression yes

save 10 2

appendonly yes

appendfsync always

appendfilename appendonly-6379.aof

bind 127.0.0.1

databases 16

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 10000

接着再输入

sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf

sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf

sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf

sed "s/6379/6383/g" redis-6379.conf > redis-6383.conf

sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf

sed "s/6379/6385/g" redis-6379.conf > redis-6385.conf

全部复制出后可以查看,现在查看6383,输入

cat redis-6383.conf

观察显示结果中是否修改:

port 6383

dbfilename dump-6383.rdb

appendfilename appendonly-6383.aof

cluster-config-file nodes-6383.conf

接下来再查看6385,输入

cat redis-6385.conf

结果也都修改成6385

接下来启动服务器,输入

redis-server /redis-4.0.0/conf/redis-6379.conf,如图启动

image.png

看不到区别不同,再来在master2中启动,输入

redis-server /redis-4.0.0/conf/redis-6380.conf

依然最后结果是等待最后连接

继续启动完6384

再回到主命令操作客户端查看是否启动完,输入

ps -ef | grep redis

可以看到显示都正在启动,与之前启动不同的是最后都有[cluster],这就是与之前单机的不同,现在都是以一个个的cluster节点呈现

接着需要把他们连接到一起,这里需要用到redis开发的一个命令,可以输入cd.. cd src进行查询

再过滤输入 ll |grep redis-

显示结果中存在一个 redis-trib.rb,这个指令想要执行的话需要下载 ruby 和 ruby gem。每个人的版本不同,当启用时会提示,例如输入 ruby -v 会显示当前版本为2.3,再输入gem -v,显示2.7.7 。

 

二、如何构建cluster集群?

构建 cluster 集群需要使用 redis-trib.rb 执行 ruby 的脚本,但现在执行是无法识别的该命令只在当前目录下有效,可以通过在指令前加./来避免这种情况。输入./redis-trib.rb 后想要创建这个集群继续输入 create,然后输入--replicas 来指定集群内部结构,后面加上IP地址按数量识别 master

./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

运行完毕后结果中弹了一组信息:

Using 3 masters:

127.0.0.1:6379

127.0.0.1:6380

127.0.0.1:6381

Adding replica 127.0.0.1:6382 to 127.0.0.1:6379

Adding replica 127.0.0.1:6383 to 127.0.0.1:6380

Adding replica 127.0.0.1:6384 to 127.0.0.1:6381

接着标记了前三个是主,标记为M,后三个是从,标记为 S,例如

M:8bd87b4d5fc269f286d95c55dfa676b74720a9bd 127.0.0.1:6379 slots:0-5460(5461 slots)master

显示出了对应的 id 号,6379分了0-5460个槽,一共是5461,是平均分。到这里,这组信息已经分配完。另外主有槽,从没有,需要复制主的槽

最下面显示是否要继续生成配置:

Can I set the above configuration?(type’yes’to accept):

输入 yes

再往下之前,先来看一下配置文件,在机动客户端中输入

cd redis-4.0.0/

cd data

ll

如图,已经生成了配置文件

image.png

现在来查看一个,输入

cat nodes-6379.conf

结果显示

8bd87b4d5fc269f286d95c55dfa676b74720a9bd :0@0 myself,master -0 0 0 connected

vars currentEpoch 0 lastVoteEpoch 0

最初在创建时内容非常少,并没有连接到一起,只有结点的信息

再来查看6384,输入

cat nodes-6384.conf

结果都类似,显示了自己的id信息

之后再来看主命令操作端中覆盖配置文件后的结果:

结果显示现在所有的节点已经全部加入,所有的槽已经覆盖完毕。

之后再来查看覆盖后的配置文件有何变化,在机动客户端中输入

cat nodes-6379.conf

内容发生变化,显示6381中对应的槽连接10923-16383

还有 slave 的信息、master 信息,6380分的是5461-10922这些槽,而自己分的是0-5460的槽

可以看到分配完毕的信息分配到了配置文件中。

再来看6380,输入 cat nodes-6380.conf,结果区别不同的是,myself 是自身6380

再来看6384,输入 cat nodes-6384.conf

可以看到每个中记录的信息都不同

再回到主命令操作客户端中,现在 cluster 集群已经搭建完毕。

再来查看前面的客户端有什么变化,例如 master1,在搭建集群前,到 Ready to accept connections 结束,而现在显示

配置了一个cluster的配置文件 configEpoch set to 1 via CLUSTER SET-CONFIG-EPOCH 和 ip 地址更新等信息

还显示cluster状态改变ok,Cluster state changed :ok,即开始启动时的cluster没有连接上,此时连接上

接着显示6382的结点请求同步:Slave 127.0.0.1:6382 asks for synchronization

然后执行后台的 BGSAVE,然后后台存储,存储完后保存好后进行传输,因为现在没有内容,所以数据为空,接着完成操作进行同步

通过日志文件可以看到 cluster 已经连接成功,slave 的节点请求保持一致,后续开始正常运行。

相关实践学习
基于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
相关文章
|
Kubernetes 网络协议 开发工具
Kubernetes搭建Master HA
先按node的方式初始化master1节点,使用 kubeadm join 命令 拷贝master上的配置到master1上 [root@master1 ~]scp root@192.168.0.
1527 0
|
7月前
|
存储 运维 Kubernetes
Kubernetes学习-集群搭建篇(一) 搭建Master结点
Kubernetes学习-集群搭建篇(一) 搭建Master结点
|
缓存 Kubernetes 数据安全/隐私保护
安装kubernetes1.17.3多master节点的高可用集群(上)
安装kubernetes1.17.3多master节点的高可用集群
|
7月前
|
Shell Docker 容器
2. 搭建 Etcd 单节点和集群
2. 搭建 Etcd 单节点和集群
|
7月前
|
存储 NoSQL Redis
redis集群cluster
redis集群cluster
59 0
|
Kubernetes 监控 前端开发
安装kubernetes1.17.3多master节点的高可用集群(下)
安装kubernetes1.17.3多master节点的高可用集群
|
Kubernetes Docker 容器
k8s--集群搭建,使用 kubeadm 搭建 1.23.5 的集群(一)
k8s--集群搭建,使用 kubeadm 搭建 1.23.5 的集群
|
Kubernetes Perl 容器
k8s--集群搭建,使用 kubeadm 搭建 1.23.5 的集群(二)
k8s--集群搭建,使用 kubeadm 搭建 1.23.5 的集群
|
存储 负载均衡 NoSQL
分布式部署:第一章:zookeeper集群和solrcloud及redisCluster集群搭建
分布式部署:第一章:zookeeper集群和solrcloud及redisCluster集群搭建
264 0
|
NoSQL Redis 算法
搭建Redis高可用Cluster集群环境
首先搭建单机版 Redis 环境
215 0
搭建Redis高可用Cluster集群环境