基于Redis6.2.6版本部署Redis
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Redis6.2.6版本部署Redis Cluster 集群的问题
⽬录
1.Redis6.
2.6简介以及环境规划
2.⼆进制安装Redis 程序
2.1.⼆进制安装redis6.2.6
2.2.创建Reids Cluster 集群⽬录
3.配置Redis Cluster 三主三从交叉复制集群
3.1.准备六个节点的redis 配置⽂件
3.2.将六个节点全部启动
3.3.配置集群节点之间相互发现
3.4.为集群中的充当Master 的节点分配槽位
3.5.配置三主三从交叉复制模式
4.快速搭建Redis Cluster 集群
1.Redis6.
2.6简介以及环境规划
在Redis6.x 版本中主要增加了多线程的新特性,多线性对于⾼并发场景是⾮常有必要的。
多线程IO 重新设计了客户端缓存功能
RESP3协议
⽀持SSL
ACL 权限控制
提升了RDB ⽇志加载速度
发布官⽅的Redis 集群代理模块 Redis Cluster proxy
Redis Cluster 集群原理可以查看之前发布的⽂章。
IP 主机名端⼝号
节点192.168.20.10redis-cluster 6701master
192.168.20.10redis-cluster 6702slave—>6705的master
192.168.20.10redis-cluster 6703master
192.168.20.10redis-cluster 6704slave—>6701的master
192.168.20.10redis-cluster 6705master
192.168.20.10redis-cluster 6706
slave—>6703的master Reids 集群采⽤三主三从交叉复制架构,由于服务器数量有限,在⼀台机器中模拟出集群的效果,在实际⽣产环境中,需要准备三台机器,每台机器中分别部署两台Redis 节点,⼀主⼀
从,交叉备份。
2.⼆进制安装Redis 程序
2.1.⼆进制安装redis6.2.6
123456
1.下载reids [root@k8s-master1 /data/]# wget https://download.redis.io/releases/redis-6.
2.6.tar.gz 2.解压并安装redis
[root@k8s-master1 /data/]# tar xf redis-6.2.6.tar.gz
[root@k8s-master1 /data/]# cd redis-6.2.6
[root@k8s-master1 /data/redis-6.2.6]# make 2.2.创建Reids Cluster 集群⽬录
1
2345678910111.创建Redis Cluster 各集群节点的配置⽂件存放路径[root@k8s-master ~]# mkdir /data/redis-6.2.6-cluster/{bin,conf,data,var,logs} -p [root@k8s-master ~]# ll /data/redis-6.2.6-cluster/
总⽤量 0
drwxr-xr-x 2 root root 6 3⽉ 31 15:36 bin #可执⾏⽂件
drwxr-xr-x 2 root root 6 3⽉ 31 15:36 conf #配置⽂件drwxr-xr-x 2 root root 6 3⽉ 31 15:36 data #数据⽂件drwxr-xr-x 2 root root 6 3⽉ 31 15:36 log #⽇志⽂件drwxr-xr-x 2 root root 6 3⽉ 31 15:36 var #pid ⽂件
2.准备redis 可执⾏命令
[root@k8s-master1 /data/redis-6.2.6]# cp src/redis-benchmark /data/redis-6.2.6-cluster/bin
121314151617
[root@k8s-master1 /data/redis-6.2.6]# cp src/redis-check-aof /data/redis-6.2.6-cluster/bin
[root@k8s-master1 /data/redis-6.2.6]# cp src/redis-check-rdb /data/redis-6.2.6-cluster/bin
[root@k8s-master1 /data/redis-6.2.6]# cp src/redis-cli /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-sentinel /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-server /data/redis-6.2.6-cluster/bin
[root@k8s-master1 /data/redis-6.2.6]# cp src/redis-trib.rb /data/redis-6.2.6-cluster/bin
3.配置Redis Cluster 三主三从交叉复制集群
3.1.准备六个节点的redis 配置⽂件
redis6.2.6版本配置⽂件所有内容如下,主要配置带注释的⾏。
1
2
3
4
5
6
78910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
68
69
70
71
72bind 0.0.0.0protected-mode no #关闭保护模式
port 6701 #端⼝号
tcp-backlog 511
timeout 0tcp-keepalive 300daemonize yes #后台运⾏pidfile /data/redis-6.2.6-cluster/var/redis_6701.pid #pid 存放
loglevel notice
logfile /data/redis-6.2.6-cluster/logs/redis_6701.log #⽇志存放路径
databases 16always-show-logo yes #是否显⽰总⽇志set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}"stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes dbfilename redis_6701.rdb #持久化数据⽂件名称rdb-del-sync-files no dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no oom-score-adj-values 0 200 800disable-thp yes appendonly no
appendfilename "appendonly.aof"
appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes lua-time-limit 5000cluster-enabled yes #开启集群模式cluster-config-file nodes_6701.conf #集群模式配置⽂件名称cluster-node-timeout 15000 #集群超时时间slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100activerehashing yes client-output-buffer-limit normal 0 0 0client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
123456789101112
[root@k8s-master conf]# vim redis_6701.conf bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式port 6701 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6701.pid #pid 存放路径
logfile /data/redis-6.2.6-cluster/logs/redis_6701.log #⽇志存放路径
always-show-logo yes #是否显⽰总⽇志dbfilename redis_6701.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6701.conf #集群模式配置⽂件名称cluster-node-timeout 15000 #集群超时时间
1
23456789101112
[root@k8s-master conf]# vim redis_6702.conf
bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式port 6702 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6702.pid #pid 存放路径
logfile /data/redis-6.2.6-cluster/logs/redis_6702.log #⽇志存放路径
always-show-logo yes #是否显⽰总⽇志dbfilename redis_6702.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6702.conf #集群模式配置⽂件名称cluster-node-timeout 15000 #集群超时时间
12345678910
1112[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式port 6703 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6703.pid #pid 存放路径
logfile /data/redis-6.2.6-cluster/logs/redis_6703.log #⽇志存放路径
always-show-logo yes #是否显⽰总⽇志dbfilename redis_6703.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6703.conf #集群模式配置⽂件名称cluster-node-timeout 15000
12345678910
111213
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式
port 6704 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6704.pid #pid 存放路径logfile /data/redis-6.2.6-cluster/logs/redis_6704.log #⽇志存放路径always-show-logo yes #是否显⽰总⽇志dbfilename redis_6704.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6704.conf #集群模式配置⽂件名称cluster-node-timeout 15000
12345678910111213
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式port 6705 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6705.pid #pid 存放路径
logfile /data/redis-6.2.6-cluster/logs/redis_6705.log #⽇志存放路径
always-show-logo yes #是否显⽰总⽇志dbfilename redis_6705.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6705.conf #集群模式配置⽂件名称cluster-node-timeout 15000
123456789101112
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #监听地址protected-mode no #关闭保护模式port 6706 #端⼝号
daemonize yes #后台运⾏
pidfile /data/redis-6.2.6-cluster/var/redis_6706.pid #pid 存放路径
logfile /data/redis-6.2.6-cluster/logs/redis_6706.log #⽇志存放路径
always-show-logo yes
#是否显⽰总⽇志
dbfilename redis_6706.rdb #持久化数据⽂件名称dir /data/redis-6.2.6-cluster/data #持久化数据⽂件存放路径cluster-enabled yes #开启集群模式cluster-config-file nodes_6706.conf #集群模式配置⽂件名称cluster-node-timeout 15000 3.2.将六个节点全部启动
1234
5[root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6701.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6702.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6703.conf
[root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6704.conf
[root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6705.conf
[root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6706.conf
123456[root@k8s-master ~]# ps aux | grep redis
root 22166 0.2 0.0 164964 3208 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6701 [cluster]
root 22179 0.2 0.0 164964 3212 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6702 [cluster]
root 22235 0.2 0.0 164964 3216 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6703 [cluster]
root 23748 0.1 0.0 164964 3220 ? Ssl 16:18 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6704 [cluster]
root 24093 0.1 0.0 164964 3224 ? Ssl 16:19 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6705 [cluster]
0.0.0.0:6706 [cluster]
3.3.配置集群节点之间相互发现
在任意⼀个节点中操作即可。
1
2345678910111213[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6702OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6703
OK
127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6704OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6705OK
127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6706
OK
127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 master - 0 1648715495901 1 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 master - 0 1648715494000 0 connected
14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 master - 0 1648715494894 5 connected
141516
7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648715494000 2 connected
b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648715494000 3 connected
c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648715494000 4 connected 操作完成后会同步各节点的集群配置⽂件中。
3.4.为集群中的充当Master 的节点分配槽位
12345
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 cluster addslots {0..5461}OK [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6703 cluster addslots {5462..10922}
OK
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6705 cluster addslots {10923..16383}
OK 分配完槽位之后集群的状态就会处于ok 。
1
234567891011121314151617
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701127.0.0.1:6701> CLUSTER INFO cluster_state:ok cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:2
cluster_stats_messages_ping_sent:248cluster_stats_messages_pong_sent:246cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:499
cluster_stats_messages_ping_received:246
cluster_stats_messages_pong_received:253
cluster_stats_messages_received:499虽然现在槽位已经分配完毕,但是当下集群中所有的节点都处于Master ⾓⾊,还是⽆法使⽤。
123456127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 master - 0 1648715802089 1 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 master - 0 1648715802000 0 connected 14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 master - 0 1648715802000 5 connected
7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648715803000 2 connected 0-5461
b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648715803095 3 connected 5462-10922c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648715804100 4 connected 10923-16383接下来去配置三主三从交叉复制模式,让没有槽位的节点复制有槽位的节点,也就是主从关系。
3.5.配置三主三从交叉复制模式
12
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 cluster nodes | egrep '6701|6703|6705' | awk '{print $1,$2}'
7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701
b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703
1
234567891011
1.配置6702节点复制6705节点,充当6705 master 节点的slave
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6702
127.0.0.1:6702> CLUSTER REPLICATE c502c900224a0ae6173631746de92d012bd43da3
OK 2.配置6704节点复制6701节点,充当
6701 master 节点的slave [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6704
127.0.0.1:6704> CLUSTER REPLICATE 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc
OK
3.配置6706节点复制6703节点,充当6703 master 节点的slave [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6706127.0.0.1:6706> CLUSTER REPLICATE b7e93e3f3925c6db664afc59cb08c2abced2933d
OK
已经是三主三从交叉复制集群模式了。
1
234
56
7[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701
127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 slave c502c900224a0ae6173631746de92d012bd43da3 0 1648716239215 4 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 slave 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 0 1648716236175 2 connected
14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 slave b7e93e3f3925c6db664afc59cb08c2abced2933d 0 1648716238000 3 connected
7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648716237000 2 connected 0-5461
b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648716238192 3 connected 5462-10922c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648716237184 4 connected 10923-163834.快速搭建Redis Cluster 集群
前提条件需要先将
6个节点搭建起来,再使⽤下⾯的命令快速将三主三从集群部署起来。
123[***************************.6-cluster]#/data/redis-6.2.6-cluster/bin/redis-cli--clustercreate192.168.20.10:6701192.168.20.10:6702192.168.20.10:6703192.168.20.10:6704192.168.20.10:6705192.168.20.10:6706--cluster-replicas 1Can I set the above configuration? (type 'yes' to accept): yes 从输出信息中我们清晰的看到主从的复制关系以及分配的槽位。
123456>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383
Adding replica 192.168.20.10:6705 to 192.168.20.10:6701
Adding replica 192.168.20.10:6706 to 192.168.20.10:6702
Adding replica 192.168.20.10:6704 to 192.168.20.10:6703
6701、6702、6703节点为主节点,6704、6705、6706节点为从节点。
6704复制6703的主节点、6705复制6701的主节点、6706复制6702的主节点。
架构图如下:
到此这篇关于基于Redis6.2.6版本部署Redis Cluster集群的⽂章就介绍到这了,更多相关Redis Cluster集群部署内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。