首先,本篇要基于单实例的安装,你的机器上已经有一个Redis 请看上篇https://blog.csdn.net/xingxincsdn/article/details/102535723
为了节省机器,我们直接把6个Redis实例安装在同一台机器上(3主3从),只是使用不同的端口号。 机器IP 192.168.115.232
创建6个节点目录cd /usr/local/soft/redis-5.0.5
mkdir redis-cluster
cd redis-cluster
mkdir 7291 7292 7293 7294 7295 7296
复制redis配置文件到7291目录
cp /usr/local/soft/redis-5.0.5/redis.conf /usr/local/soft/redis-5.0.5/redis-cluster/7291
修改7291的配置文件
把./7219/redis.config的对应属性修改成以下内容
port 7291
dir /usr/local/soft/redis-5.0.5/redis-cluster/7291/
cluster-enabled yes
cluster-config-file nodes-7291.conf
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_7291.pid
把7291下的redis.conf复制到其他5个目录
cd /usr/local/soft/redis-5.0.5/redis-cluster/7291
cp redis.conf ../7292
cp redis.conf ../7293
cp redis.conf ../7294
cp redis.conf ../7295
cp redis.conf ../7296
批量替换内容
cd /usr/local/soft/redis-5.0.5/redis-cluster
sed -i 's/7291/7292/g' 7292/redis.conf
sed -i 's/7291/7293/g' 7293/redis.conf
sed -i 's/7291/7294/g' 7294/redis.conf
sed -i 's/7291/7295/g' 7295/redis.conf
sed -i 's/7291/7296/g' 7296/redis.conf
安装ruby依赖、rubygems依赖、gem-redis依赖
yum install ruby -y
yum install rubygems -y
gem install redis -v 3.0.7
启动6个Redis节点
cd /usr/local/soft/redis-5.0.5/
./src/redis-server redis-cluster/7291/redis.conf
./src/redis-server redis-cluster/7292/redis.conf
./src/redis-server redis-cluster/7293/redis.conf
./src/redis-server redis-cluster/7294/redis.conf
./src/redis-server redis-cluster/7295/redis.conf
./src/redis-server redis-cluster/7296/redis.conf
是否启动了6个进程
ps -ef|grep redis
创建集群
旧版本中的redis-trib.rb已经废弃了,直接用–cluster命令 注意用绝对IP,不要用127.0.0.1
cd /usr/local/soft/redis-5.0.5/src/
redis-cli --cluster create 192.168.115.232:7291 192.168.115.232:7292 192.168.115.232:7293 192.168.115.232:7294 192.168.115.232:7295 192.168.115.232:7296 --cluster-replicas 1
Redis会给出一个预计的方案,对6个节点分配3主3从,如果认为没有问题,输入yes确认
例如输出的结果
>>> 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.115.232:7295 to 192.168.115.232:7291
Adding replica 192.168.115.232:7296 to 192.168.115.232:7292
Adding replica 192.168.115.232:7294 to 192.168.115.232:7293
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: fe931de6e5403fc649068cbe0d8e1acfdec37446 192.168.115.232:7291
slots:[0-5460] (5461 slots) master
M: d802a27ee9fd638df85dcc2c9d3cdc52ac8eae81 192.168.115.232:7292
slots:[5461-10922] (5462 slots) master
M: 119453b04c41d3db6c0bf3e55cc3d17316baddde 192.168.115.232:7293
slots:[10923-16383] (5461 slots) master
S: 319e720674e53cd4d627ecdbca0db861426ad9e3 192.168.115.232:7294
replicates 119453b04c41d3db6c0bf3e55cc3d17316baddde
S: 54069d7d51c11eb5a26a7a7ae0bea0ff0b7b8836 192.168.115.232:7295
replicates fe931de6e5403fc649068cbe0d8e1acfdec37446
S: e3df8b8b36d18659e98f2866c9aa67a6fa22d58c 192.168.115.232:7296
replicates d802a27ee9fd638df85dcc2c9d3cdc52ac8eae81
Can I set the above configuration? (type 'yes' to accept): yes
注意看slot的分布 ··· 7291 [0-5460] (5461个槽) 7292 [5461-10922] (5462个槽) 7293 [10923-16383] (5461个槽) ···
集群创建完成,输出结果如下
>>> 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.115.232:7291)
M: fe931de6e5403fc649068cbe0d8e1acfdec37446 192.168.115.232:7291
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: e3df8b8b36d18659e98f2866c9aa67a6fa22d58c 192.168.115.232:7296
slots: (0 slots) slave
replicates d802a27ee9fd638df85dcc2c9d3cdc52ac8eae81
M: d802a27ee9fd638df85dcc2c9d3cdc52ac8eae81 192.168.115.232:7292
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 119453b04c41d3db6c0bf3e55cc3d17316baddde 192.168.115.232:7293
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 54069d7d51c11eb5a26a7a7ae0bea0ff0b7b8836 192.168.115.232:7295
slots: (0 slots) slave
replicates fe931de6e5403fc649068cbe0d8e1acfdec37446
S: 319e720674e53cd4d627ecdbca0db861426ad9e3 192.168.115.232:7294
slots: (0 slots) slave
replicates 119453b04c41d3db6c0bf3e55cc3d17316baddde
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
连接到客户端
连接到客户端
redis-cli -p 7291
redis-cli -p 7292
redis-cli -p 7293
批量写入值
cd /usr/local/soft/redis-5.0.5/redis-cluster/
vim setkey.sh
脚本内容
#!/bin/bash
for ((i=0;i>redis.log
done
chmod +x setkey.sh
./setkey.sh
每个节点分布的数据
127.0.0.1:7292> dbsize
(integer) 6683
127.0.0.1:7293> dbsize
(integer) 6665
127.0.0.1:7291> dbsize
(integer) 6652
附录:
集群命令 cluster info :打印集群的信息 cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。 cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 cluster forget :从集群中移除 node_id 指定的节点(保证空槽道)。 cluster replicate :将当前节点设置为 node_id 指定的节点的从节点。 cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽slot命令 cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。 cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。 cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 cluster setslot node :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 cluster setslot migrating :将本节点的槽 slot 迁移到 node_id 指定的节点中。 cluster setslot importing :从 node_id 指定的节点中导入槽 slot 到本节点。 cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。
键命令 cluster keyslot :计算键 key 应该被放置在哪个槽上。 cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。 cluster getkeysinslot :返回 count 个 slot 槽中的键
原文章地址:https://gper.club/articles/7e7e7f7ff7g5egc7g6d