Redis搭建集群(redis 6.0.8版本)

cluster 参数

参数名 值 说明
cluster-enabled yes
cluster-node-timeout 30000 单位ms
cluster-config-file /etc/redis/node_6379.conf
cluster-require-full-coverage yes
cluster-migration-barrier 1
cluster-replica-no-failover no
cluster-replica-validity-factor 10
cluster-allow-reads-when-down no

1:Port 将每一个配置文件的端口号修改成对应的端口

2:cluster-enabled yes 将值修改成yes 代表当前为集群模式

3:cluster-node-timeout 15000 设置当前节点连接超时毫秒数

4:cluster-config-file node_6381.conf 设置当前节点集群配置文件路径(每个节点在运行过程中,会维护一份集群配置文件。当集群信息发生变化时(如增减节点),集群内所有节点会将最新信息更新到该配置文件。节点重启后,会重新读取该配置文件,获取集群信息,可以方便的重新加入到集群中。也就是说,当 Redis 节点以集群模式启动时,会首先寻找是否有集群配置文件。如果有则使用文件中的配置启动;如果没有,则初始化配置并将配置保存到文件中。集群配置文件由 Redis 节点维护,不需要人工修改。而且你在服务器上执行cluster nodes看到的结果就是改配置文件的内容)

如下图:

在这里插入图片描述

PS: redis 6.0.8的集群搭建模式和传统的有些变革,比如加入集群的方法可以不再通过cluster meet指令去添加,最新的我们可以利用cluster的指令去添加。值得注意的地方是如果你的redis的默认配置文件的端口号不是6379那么你执行的命令行参数需要指定端口号,而且redis6新增的ACL的功能也要确保权限用户的用户名和密码在你所有的node上都保持一致。

默认端口号的命令: redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1 -a 123 (注意这里面是default的用户,同时后面的参数代表分配给每一个主节点几个从节点)

不是默认的端口号命令: redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1 --user test -a 123

举个例子: 如果三个主节点 每个主节点都有一个从节点那么一共需要 3*(1+1) 如果每个主节点有2个从节点那么就是 3*(1+2) 以此类推最终是 3 *(1+n)

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1 -a 123

同时主从是怎么分配的呢?让我们回到我们创建集群的命令上: 可以看到我们create的指令后面跟了6个主机端口号,那么默认的前三个就是主节点而后面的则是从节点。例子中给出的是每一个主节点都有一个从节点所以前三个主节点以后每一个从节点都是对应的第一个第二个第三个的从节点。

比如 6379 是master 而 6382则是6379的从节点,以此类推。而且当主节点下线后与之对应的从节点会晋升为主节点,而之前挂点的主节点重启后会变成从节点。

备注: redis-cli cluster 命令help
在这里插入图片描述

集群
cluster info :打印集群的信息

$ redis-cli cluster nodes
d1861060fe6a534d42d8a19aeb36600e18785e04 127.0.0.1:6379 myself - 0 1318428930 1 connected 0-1364
3886e65cc906bfd9b1f7e7bde468726a052d1dae 127.0.0.1:6380 master - 1318428930 1318428931 2 connected 1365-2729
d289c575dcbc4bdd2931585fd4339089e461a27d 127.0.0.1:6381 master - 1318428931 1318428931 3 connected 2730-4095
In the above listing the different fields are in order: node id, address:port, flags, last ping sent, last pong received, configuration epoch, link state, slots. Details about the above fields will be covered as soon as we talk of specific parts of Redis Cluster.
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
节点
cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点。
cluster replicate <master_node_id> :将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽(slot)
cluster addslots [slot …] :将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot stable :取消对槽 slot 的导入( import)或者迁移( migrate)。

cluster keyslot :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot :返回 count 个 slot 槽中的键

手动搭建集群:

首先启动相应的个数实例。选取其中任意一个实例为原始节点开始创建集群。

例如我在127.0.0.1上启动了6个实例端口号分别为6000 6001 6002 6003 6004 6005

我选取6000为原始节点开始进行创建,登入该主机的6000的端口号的服务,分别运行cluster meet 127.0.0.1 6001 , cluster meet 127.0.0.1 6002, cluster meet 127.0.0.1 6003,cluster meet 127.0.0.1 6004 ,cluster meet 127.0.0.1 6005 ,这个时候已经将所有节点添加入集群,但是因为还没有分配槽位所以该集群状态还不是ok。这个时候选取3个主节点分别进行槽位的分配。在选取的主节点执行 redis-cli -p 6000 -a xxx cluster addslots {0…5461}, redis-cli -p 6001 -a xxx cluster addslots {5461…10922} ,redis-cli -p 6002 -a xxx cluster addslots {10923…16383}

分配槽位后在进行主从的分配: 先运行cluster nodes记住对应的node Id 之后分别登陆剩下的3个节点运行cluster replicate nodeid(你想要的主节点ID) 。 至此主从分配完毕。 之后运行cluster info查看集群状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值