Redis-集群的简单搭建

因为Redis要求每个集群最少要有3台服务器才能正常运行,所以接下来搭建一个3主3从的集群。

3主3从代表着要有6个redis服务实例,这里先预设6个实例的端口为6380~6385,先创建这6个redis实例相关的配置文件redis-xxx.conf,可以先copy redis.conf文件然后重命名,新建一个redis-cluster文件夹来存放集群相关文件,最后redis-cluster文件夹中有如下6个文件:
Redis-集群的简单搭建_第1张图片

修改以上每个配置文件中的内容,参考如下:

#端口改为服务实例相关的端口号,这里以6380端口实例为例
port 6380

#开启后台启动
daemonize yes

#修改pid文件名,避免和其它redis进程冲突,这里以6380端口实例为例
pidfile /var/run/redis_6380.pid

#rdb操作对应的文件名,这里以6380端口实例为例
dbfilename dump_6380.rdb

#开启集群相关配置,改为yes
cluster-enabled yes

#该选项指定的文件是用来存储当前节点记录的集群状态的,所以不能重名,不然会启动失败,这里以6380端口实例为例
cluster-config-file nodes-6380.conf

然后在同一目录下,编写一个启动脚本,用来统一启动6个实例,输入vim startCluster.sh,编辑内容如下:

redis-server redis-6380.conf
redis-server redis-6381.conf
redis-server redis-6382.conf
redis-server redis-6383.conf
redis-server redis-6384.conf
redis-server redis-6385.conf

再写一个关闭脚本,用来统一关闭6个实例,安全退出集群,输入vim shutdownCluster.sh 如下:

redis-cli -p 6380 shutdown
redis-cli -p 6381 shutdown
redis-cli -p 6382 shutdown
redis-cli -p 6383 shutdown
redis-cli -p 6384 shutdown
redis-cli -p 6385 shutdown

redis-cluster文件夹下运行启动脚本,结果如下:
Redis-集群的简单搭建_第2张图片
接着随便进入一个实例的客户端模式,输入info cluster命令,结果如下:在这里插入图片描述
cluster_enabled结果为1表示集群正常启用了。

再输入CLUSTER INFO查看节点状态,如下:Redis-集群的简单搭建_第3张图片
可以发现此时的集群状态是fail。

此时每个节点都是完全独立的,现在要将它们加入到同一个集群,由于使用的redis版本是5.0.5,所以建议使用redis-cli来创建集群。

redis-cli创建集群的基本语法如下:

redis-cli --cluster  create host1:port1 ... hostN:portN  --cluster-replicas <arg>

<arg> 参数表示每个主数据库拥有的从数据库个数

运行redis-cli --cluster create 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 127.0.0.1:6385 --cluster-replicas 1 命令,该命令表示以哪些ip和端口的redis实例构建集群,同时每个主数据库要有一个从数据库,这样就形成3主3从的集群系统了,运行后结果如下:Redis-集群的简单搭建_第4张图片
从以上输出的内容可以看出集群大致的分配方案,比如插槽是怎么分配的,哪两个redis数据库形成了主从等,输入yes表示同意这个方案,那么就会创建出相应的集群了,结果如下:Redis-集群的简单搭建_第5张图片
出现如上图的信息,表明所有槽都已经分配到节点上了,因为Redis集群中就内置了16384个哈希槽。

再通过CLUSTER INFO命令查看此时节点状态,如下:Redis-集群的简单搭建_第6张图片

可以发现集群状态变为了ok。

随意连接一个节点客户端输入CLUSTER NODES命令看下结果,如下:在这里插入图片描述
从上图中可以看到所有节点的运行ID、ip地址和端口、角色、状态以及负责的插槽等信息。

测试下集群的效果

这时候因为要在集群中设置数据,那么肯定涉及到数据的重定向,所以进入客户端的命令要加个-c的参数,让节点之间可以自动跳转,如下:在这里插入图片描述
接着进入端口为6380的主数据库客户端,尝试着设值,如下:在这里插入图片描述
发现提示,数据被重定向到6382端口实例的12539插槽中了,去6382端口的redis实例去查看搜索下key,结果如下:在这里插入图片描述
6382端口实例能够正常查到结果。

总结

Redis的简单集群搭建完成。

你可能感兴趣的:(#,Redis)