环境介绍
系统:rocky9.2
硬件配置:2核2G 80G硬盘
IP地址:172.16.5.101-172.16.5.106
已做免密认证
1.0批量安装redis
[root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i yum install redis -y; done
返回结果:
上次元数据过期检查:2:28:55 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 1.6 MB/s | 1.3 MB 00:00
--------------------------------------------------------------------------------
总计 633 kB/s | 1.3 MB 00:02
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
上次元数据过期检查:2:28:59 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00
--------------------------------------------------------------------------------
总计 710 kB/s | 1.3 MB 00:01
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
上次元数据过期检查:2:29:02 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 1.8 MB/s | 1.3 MB 00:00
--------------------------------------------------------------------------------
总计 713 kB/s | 1.3 MB 00:01
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
上次元数据过期检查:2:29:06 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00
--------------------------------------------------------------------------------
总计 267 kB/s | 1.3 MB 00:04
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
上次元数据过期检查:2:29:12 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00
--------------------------------------------------------------------------------
总计 269 kB/s | 1.3 MB 00:04
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
上次元数据过期检查:2:29:19 前,执行于 2023年10月18日 星期三 00时33分20秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
redis x86_64 6.2.7-1.el9 appstream 1.3 M
事务概要
================================================================================
安装 1 软件包
总下载:1.3 M
安装大小:4.7 M
下载软件包:
redis-6.2.7-1.el9.x86_64.rpm 347 kB/s | 1.3 MB 00:03
--------------------------------------------------------------------------------
总计 269 kB/s | 1.3 MB 00:04
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
安装 : redis-6.2.7-1.el9.x86_64 1/1
运行脚本: redis-6.2.7-1.el9.x86_64 1/1
验证 : redis-6.2.7-1.el9.x86_64 1/1
已安装:
redis-6.2.7-1.el9.x86_64
完毕!
2.0修改默认的配置文件
2.1修改默认的监听地址,默认是127.0.0.1修改成0.0.0.0
[root@redis-1 ~]# vim /etc/redis/redis.conf
原内容
#bind 0.0.0.0 -::1
改后
bind 0.0.0.0
2.2修改cluster-enabled 选项的值为 yes 表示将 Redis 实例设置成集群节点而不是单机服务器
默认所有节点都是主节点
[root@redis-1 ~]# vim /etc/redis/redis.conf
原内容
# cluster-enabled yes
改后
cluster-enabled yes
[root@redis-1 ~]# vim /etc/redis/redis.conf
默认所有节点都是主节点
原内容
# cluster-config-file nodes-6379.conf
改后
cluster-config-file cluster_info_6379.conf
2.3拷贝redis配置文件到其他主机上面
[root@redis-1 ~]# for i in {1..6}; do scp -q /etc/redis/redis.conf 172.16.5.10$i:/etc/redis/; done
2.4启动所有的服务,并设置为开机自启动
[root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i systemctl enable redis --now; done
返回结果:
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
2.5查看所有节点是不是都是master节点
[root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i cat /var/lib/redis/cluster_info_6379.conf ; done
返回结果:
0556318499e4cd701d4bfbd9cd70fc40fd92281b :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
88afd0f6125f64b0165b63ed65a6ca6596aebc2a :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
bc65ceb59df276b878fc13eaccd05af3fa21e73c :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
5c591b2c62244cd0183afa78f22d1ccc8bcfc794 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
24b4608c219e77187b758fc5a2bd9e85614b95ed :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
2.6创建集群命令帮助
[root@redis-1 ~]# redis-cli --cluster help
create
创建结群
check
检查集群
info
查看集群的详细信息
fix
集群修复
reshard
分片
rebalance
让集群一比一存储,雨露均沾
add-node
添加节点
del-node
删除节点
2.7创建一主一从,也就是6台主机里面3台是主的3台是从的
[root@redis-1 ~]# echo yes | redis-cli --cluster create 172.16.5.101:6379 172.16.5.102:6379 172.16.5.103:6379 172.16.5.104:6379 172.16.5.105:6379 172.16.5.106:6379 --cluster-replicas 1
返回结果:
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.16.5.105:6379 to 172.16.5.101:6379
Adding replica 172.16.5.106:6379 to 172.16.5.102:6379
Adding replica 172.16.5.104:6379 to 172.16.5.103:6379
M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379
slots:[0-5460] (5461 slots) master
M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379
slots:[5461-10922] (5462 slots) master
M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379
slots:[10923-16383] (5461 slots) master
S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379
replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c
S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379
replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b
S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379
replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a
Can I set the above configuration? (type 'yes' to accept): >>> 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 172.16.5.101:6379)
M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379
slots: (0 slots) slave
replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b
M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379
slots: (0 slots) slave
replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c
S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379
slots: (0 slots) slave
replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
解释:
Master[0] -> Slots 0 - 5460
0-5460存到第一个master节点
Master[1] -> Slots 5461 - 10922
5461-10922存到第二个master节点
Master[2] -> Slots 10923 - 16383
10923-16383存到三个master节点
Adding replica 172.16.5.105:6379 to 172.16.5.101:6379
172.16.5.105为主master
172.16.5.101为slave
Adding replica 172.16.5.106:6379 to 172.16.5.102:6379
172.16.5.106为master
172.16.5.105为slave
Adding replica 172.16.5.104:6379 to 172.16.5.103:6379
172.16.5.104为master
172.16.5.103为slave
2.8查看集群详细信息。集群中的任何一个节点都可以
[root@redis-1 ~]# redis-cli --cluster info 172.16.5.101:6379
172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves.
172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves.
172.16.5.103:6379 (bc65ceb5...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
2.9查看集群状态信息
[root@redis-1 ~]# redis-cli --cluster check 172.16.5.101:6379
返回结果:
172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves.
172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves.
172.16.5.103:6379 (bc65ceb5...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 172.16.5.101:6379)
M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379
slots: (0 slots) slave
replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b
M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379
slots: (0 slots) slave
replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c
S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379
slots: (0 slots) slave
replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
2.10查看集群状态是否为ok,如果为ok说明服务正常启动
[root@redis-1 ~]# redis-cli -c -h 172.16.5.102 -p 6379 CLUSTER INFO |grep cluster_state
cluster_state:ok
2.11查看每秒的读写请求数
[root@redis-1 ~]# redis-cli -c -h 172.16.5.102 -p 6379 info | grep instantaneous_ops_per_sec:
instantaneous_ops_per_sec:0
3.0写入key测试
3.1单条数据插入
[root@redis-1 ~]# echo 'hello_word' |redis-cli -c -p 6379 -h 172.16.5.105 -x set mykey
OK
3.2查看数据是否写入成功
[root@redis-1 ~]# redis-cli -c -p 6379 -h 172.16.5.105 get mykey
"hello_word\n"
3.3查看刚才写入的key写到哪台服务器上面去了
[root@redis-1 ~]# redis-cli --cluster info 172.16.5.105:6379
172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves.
172.16.5.103:6379 (bc65ceb5...) -> 1 keys | 5461 slots | 1 slaves.
172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
解释:
172.16.5.103:6379 (bc65ceb5...) -> 1 keys | 5461 slots | 1 slaves.
这里可以看到,我往105写入的key,写到到103上面去了
3.3写入一万条数据,做测试
[root@redis-1 ~]# for i in `seq 1 10000`; do echo "helo_word_$i" | redis-cli -c -p 6379 -h 172.16.5.105 -x set "demo_$i"; done
查看数据分布情况
[root@redis-1 ~]# redis-cli --cluster info 172.16.5.105:6379
172.16.5.101:6379 (05563184...) -> 3346 keys | 5461 slots | 1 slaves.
172.16.5.103:6379 (bc65ceb5...) -> 3333 keys | 5461 slots | 1 slaves.
172.16.5.102:6379 (88afd0f6...) -> 3322 keys | 5462 slots | 1 slaves.
[OK] 10001 keys in 3 masters.
0.61 keys per slot on average.