Linux-2台服务器-Redis-集群模式安装配置
1、两个节点同样操作
[root@o-0034 setup]# yum install tcl
或者:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz -C /home/test01/setup
/home/test01/setup/tcl8.6.1/unix
./configure
make
make install
[test ~/setup]$ tar -zxvf redis-6.2.7.tar.gz
[test ~]$ cd redis-6.2.7/
[test ~/redis-6.2.7]$
[test redis-6.2.7]$ make
[test redis-6.2.7]$ make test
[test redis-6.2.7]$ make install PREFIX=/home/test01/redis_6.2.7
2、配置每个节点
在server-1上:
[test redis_6.2.7]# mkdir -p /home/test01/redis_6.2.7/redis-cluster/{8001,8002,8003}
[test redis_6.2.7]# cp redis.conf /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# vim /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
bind 192.168.1.2 #本机IP
port 8001 #改为设定的端口
daemonize yes #后台启动
cluster-enabled yes #启动集群模式
cluster-config-file nodes-8001.conf #集群内部配置文件,改掉端口号
cluster-node-timeout 15000 #节点超时时间,单位:毫秒
protected-mode: #由于配置了密码登录,这里将 protected-mode 设置为 no 关闭保护模式。
requirepass: #表示登录该 Redis 实例所需的密码
masterauth: #由于每个节点都开启了密码认证,因此又增加 masterauth 配置,使得从机可以登录到主机上。
dbfilename dump.rdb #单独配置不要共用rdb
[test ~/redis_6.2.7/redis-cluster/8001]$ cat /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8001
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8001.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8001.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8001.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8001.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8001.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/redis_6.2.7/redis-cluster/8001]$
[test redis_6.2.7]# cp redis.conf /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# vim /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
bind 192.168.1.2 #本机IP
port 8002 #改为设定的端口
daemonize yes #后台启动
cluster-enabled yes #启动集群模式
cluster-config-file nodes-8002.conf #集群内部配置文件,改掉端口号
cluster-node-timeout 15000 #节点超时时间,单位:毫秒
dbfilename dump_6641.rdb #单独配置不要共用rdb
[test ~/setup/redis-6.2.7]$ cat /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8002
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8002.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8002.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8002.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8002.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8002.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/setup/redis-6.2.7]$
[test ~/redis_6.2.7]$ cat /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8003
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8003.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8003.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8003.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8003.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8003.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/redis_6.2.7]$
[test ~]$ scp -r redis_6.2.7 test02@192.168.1.3:/home/test01/
3. 启动每个节点
在server-1上:
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf
在server-2上:
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf
[test ~/redis_6.2.7]$ ps -ef | grep redis
test02 161779 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8001 [cluster]
test02 161832 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8002 [cluster]
test02 161885 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8003 [cluster]
test02 161944 160842 0 12:01 pts/0 00:00:00 grep --color=auto redis
[test ~/redis_6.2.7]$
防火墙添加
systemctl status firewalld
systemctl restart firewalld
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --zone=public --add-port=8002/tcp --permanent
firewall-cmd --zone=public --add-port=8003/tcp --permanent
firewall-cmd --zone=public --add-port=18001/tcp --permanent
firewall-cmd --zone=public --add-port=18002/tcp --permanent
firewall-cmd --zone=public --add-port=18003/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
firewall-cmd --list-ports
4. 创建集群
[test02@zyzx-2026-05 ~/redis_6.2.7/bin]$ /home/test01/redis_6.2.7/bin/./redis-cli --cluster create 192.168.1.2:8001 192.168.1.2:8002 192.168.1.2:8003 192.168.1.3:8001 192.168.1.3:8002 192.168.1.3:8003 --cluster-replicas 1 -a Redis!2026
[test ~/redis_6.2.7]$ /home/test01/redis_6.2.7/bin/./redis-cli --cluster create 192.168.1.2:8001 192.168.1.2:8002 192.168.1.2:8003 192.168.1.3:8001 192.168.1.3:8002 192.168.1.3:8003 --cluster-replicas 1 -a Redis!2026
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> 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.1.3:8003 to 192.168.1.2:8001
Adding replica 192.168.1.2:8003 to 192.168.1.3:8001
Adding replica 192.168.1.3:8002 to 192.168.1.2:8002
M: 05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001
slots:[0-5460] (5461 slots) master
M: 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002
slots:[10923-16383] (5461 slots) master
S: 7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003
replicates ef1187cd548d432b76b1175a40c8bc3fc746e30e
M: ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001
slots:[5461-10922] (5462 slots) master
S: 32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002
replicates 115e6907742b45fc2b3b191fdb85816a7f7f5cf1
S: 20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003
replicates 05f22b64d24e4f040df2d5af6ae28847e685ebbf
Can I set the above configuration? (type 'yes' to accept): yes
>>> 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.1.2:8001)
M: 05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002
slots: (0 slots) slave
replicates 115e6907742b45fc2b3b191fdb85816a7f7f5cf1
M: 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003
slots: (0 slots) slave
replicates ef1187cd548d432b76b1175a40c8bc3fc746e30e
S: 20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003
slots: (0 slots) slave
replicates 05f22b64d24e4f040df2d5af6ae28847e685ebbf
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[test ~/redis_6.2.7]$
2. 确认配置
执行后输入yes,等待集群创建完成(出现[OK] All nodes agree about slots configuration.即为成功)
七、集群验证
1. 连接集群
/home/test01/redis_6.2.7/bin/./redis-cli -c -h 192.168.1.2 -p 8001
[test ~]$ /home/test01/redis_6.2.7/bin/./redis-cli -c -h 192.168.1.2 -p 8001
192.168.1.2:8001> auth Redis!2026
OK
192.168.1.2:8001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:176
cluster_stats_messages_pong_sent:178
cluster_stats_messages_sent:354
cluster_stats_messages_ping_received:173
cluster_stats_messages_pong_received:176
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:354
192.168.1.2:8001> cluster nodes
ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001@18001 master - 0 1780286759711 4 connected 5461-10922
32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002@18002 slave 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 0 1780286758707 2 connected
115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002@18002 master - 0 1780286760000 2 connected 10923-16383
7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003@18003 slave ef1187cd548d432b76b1175a40c8bc3fc746e30e 0 1780286760713 4 connected
05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001@18001 myself,master - 0 1780286759000 1 connected 0-5460
20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003@18003 slave 05f22b64d24e4f040df2d5af6ae28847e685ebbf 0 1780286757704 1 connected
192.168.1.2:8001>
2. 查看集群状态
# 集群信息
cluster info
# 节点列表
cluster nodes
# 测试数据(自动分片)
set test 123
get test
八、集群启停脚本(可选,方便管理)
1. 启动脚本(两台服务器都创建)
cat > /home/test01/redis_6.2.7/start.sh << EOF
#!/bin/bash
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/conf/redis.conf
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/conf/redis.conf
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/conf/redis.conf
EOF
chmod +x /home/test01/redis_6.2.7/start.sh
2. 停止脚本
cat > /home/test01/redis_6.2.7/stop.sh << EOF
#!/bin/bash
/home/test01/redis_6.2.7/bin/./redis-cli -p 8001 shutdown
/home/test01/redis_6.2.7/bin/./redis-cli -p 8002 shutdown
/home/test01/redis_6.2.7/bin/./redis-cli -p 8003 shutdown
EOF
chmod +x /home/test01/redis_6.2.7/stop.sh
[root@o-0034 setup]# yum install tcl
或者:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz -C /home/test01/setup
/home/test01/setup/tcl8.6.1/unix
./configure
make
make install
[test ~/setup]$ tar -zxvf redis-6.2.7.tar.gz
[test ~]$ cd redis-6.2.7/
[test ~/redis-6.2.7]$
[test redis-6.2.7]$ make
[test redis-6.2.7]$ make test
[test redis-6.2.7]$ make install PREFIX=/home/test01/redis_6.2.7
2、配置每个节点
在server-1上:
[test redis_6.2.7]# mkdir -p /home/test01/redis_6.2.7/redis-cluster/{8001,8002,8003}
[test redis_6.2.7]# cp redis.conf /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# vim /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
bind 192.168.1.2 #本机IP
port 8001 #改为设定的端口
daemonize yes #后台启动
cluster-enabled yes #启动集群模式
cluster-config-file nodes-8001.conf #集群内部配置文件,改掉端口号
cluster-node-timeout 15000 #节点超时时间,单位:毫秒
protected-mode: #由于配置了密码登录,这里将 protected-mode 设置为 no 关闭保护模式。
requirepass: #表示登录该 Redis 实例所需的密码
masterauth: #由于每个节点都开启了密码认证,因此又增加 masterauth 配置,使得从机可以登录到主机上。
dbfilename dump.rdb #单独配置不要共用rdb
[test ~/redis_6.2.7/redis-cluster/8001]$ cat /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8001
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8001.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8001.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8001.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8001.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8001.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/redis_6.2.7/redis-cluster/8001]$
[test redis_6.2.7]# cp redis.conf /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# vim /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
bind 192.168.1.2 #本机IP
port 8002 #改为设定的端口
daemonize yes #后台启动
cluster-enabled yes #启动集群模式
cluster-config-file nodes-8002.conf #集群内部配置文件,改掉端口号
cluster-node-timeout 15000 #节点超时时间,单位:毫秒
dbfilename dump_6641.rdb #单独配置不要共用rdb
[test ~/setup/redis-6.2.7]$ cat /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8002
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8002.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8002.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8002.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8002.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8002.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/setup/redis-6.2.7]$
[test ~/redis_6.2.7]$ cat /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf |grep -v ^# |grep -v ^$
bind 192.168.1.2
protected-mode yes
port 8003
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
masterauth Redis!2026
requirepass Redis!2026
pidfile /home/test01/redis_6.2.7/redis_8003.pid
loglevel notice
logfile "/home/test01/redis_6.2.7/redis_8003.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_8003.rdb
rdb-del-sync-files no
dir /home/test01/redis_6.2.7
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 800
disable-thp yes
appendonly no
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly_8003.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-8003.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 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-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
[test ~/redis_6.2.7]$
[test ~]$ scp -r redis_6.2.7 test02@192.168.1.3:/home/test01/
3. 启动每个节点
在server-1上:
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf
在server-2上:
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/redis-8001.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/redis-8002.conf
[test redis_6.2.7]# /home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/redis-8003.conf
[test ~/redis_6.2.7]$ ps -ef | grep redis
test02 161779 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8001 [cluster]
test02 161832 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8002 [cluster]
test02 161885 1 0 12:01 ? 00:00:00 /home/test01/redis_6.2.7/bin/./redis-server 192.168.1.2:8003 [cluster]
test02 161944 160842 0 12:01 pts/0 00:00:00 grep --color=auto redis
[test ~/redis_6.2.7]$
防火墙添加
systemctl status firewalld
systemctl restart firewalld
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --zone=public --add-port=8002/tcp --permanent
firewall-cmd --zone=public --add-port=8003/tcp --permanent
firewall-cmd --zone=public --add-port=18001/tcp --permanent
firewall-cmd --zone=public --add-port=18002/tcp --permanent
firewall-cmd --zone=public --add-port=18003/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
firewall-cmd --list-ports
4. 创建集群
[test02@zyzx-2026-05 ~/redis_6.2.7/bin]$ /home/test01/redis_6.2.7/bin/./redis-cli --cluster create 192.168.1.2:8001 192.168.1.2:8002 192.168.1.2:8003 192.168.1.3:8001 192.168.1.3:8002 192.168.1.3:8003 --cluster-replicas 1 -a Redis!2026
[test ~/redis_6.2.7]$ /home/test01/redis_6.2.7/bin/./redis-cli --cluster create 192.168.1.2:8001 192.168.1.2:8002 192.168.1.2:8003 192.168.1.3:8001 192.168.1.3:8002 192.168.1.3:8003 --cluster-replicas 1 -a Redis!2026
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> 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.1.3:8003 to 192.168.1.2:8001
Adding replica 192.168.1.2:8003 to 192.168.1.3:8001
Adding replica 192.168.1.3:8002 to 192.168.1.2:8002
M: 05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001
slots:[0-5460] (5461 slots) master
M: 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002
slots:[10923-16383] (5461 slots) master
S: 7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003
replicates ef1187cd548d432b76b1175a40c8bc3fc746e30e
M: ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001
slots:[5461-10922] (5462 slots) master
S: 32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002
replicates 115e6907742b45fc2b3b191fdb85816a7f7f5cf1
S: 20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003
replicates 05f22b64d24e4f040df2d5af6ae28847e685ebbf
Can I set the above configuration? (type 'yes' to accept): yes
>>> 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.1.2:8001)
M: 05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002
slots: (0 slots) slave
replicates 115e6907742b45fc2b3b191fdb85816a7f7f5cf1
M: 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003
slots: (0 slots) slave
replicates ef1187cd548d432b76b1175a40c8bc3fc746e30e
S: 20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003
slots: (0 slots) slave
replicates 05f22b64d24e4f040df2d5af6ae28847e685ebbf
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[test ~/redis_6.2.7]$
2. 确认配置
执行后输入yes,等待集群创建完成(出现[OK] All nodes agree about slots configuration.即为成功)
七、集群验证
1. 连接集群
/home/test01/redis_6.2.7/bin/./redis-cli -c -h 192.168.1.2 -p 8001
[test ~]$ /home/test01/redis_6.2.7/bin/./redis-cli -c -h 192.168.1.2 -p 8001
192.168.1.2:8001> auth Redis!2026
OK
192.168.1.2:8001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:176
cluster_stats_messages_pong_sent:178
cluster_stats_messages_sent:354
cluster_stats_messages_ping_received:173
cluster_stats_messages_pong_received:176
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:354
192.168.1.2:8001> cluster nodes
ef1187cd548d432b76b1175a40c8bc3fc746e30e 192.168.1.3:8001@18001 master - 0 1780286759711 4 connected 5461-10922
32792014e131edcd7e2edcbdc31d4a3325cbefd7 192.168.1.3:8002@18002 slave 115e6907742b45fc2b3b191fdb85816a7f7f5cf1 0 1780286758707 2 connected
115e6907742b45fc2b3b191fdb85816a7f7f5cf1 192.168.1.2:8002@18002 master - 0 1780286760000 2 connected 10923-16383
7f3bf0d048c557d011f8e1c5fd4ba0c1ce1c9eac 192.168.1.2:8003@18003 slave ef1187cd548d432b76b1175a40c8bc3fc746e30e 0 1780286760713 4 connected
05f22b64d24e4f040df2d5af6ae28847e685ebbf 192.168.1.2:8001@18001 myself,master - 0 1780286759000 1 connected 0-5460
20068cf83bdbeb991c6efd01f36514c5b63adbcc 192.168.1.3:8003@18003 slave 05f22b64d24e4f040df2d5af6ae28847e685ebbf 0 1780286757704 1 connected
192.168.1.2:8001>
2. 查看集群状态
# 集群信息
cluster info
# 节点列表
cluster nodes
# 测试数据(自动分片)
set test 123
get test
八、集群启停脚本(可选,方便管理)
1. 启动脚本(两台服务器都创建)
cat > /home/test01/redis_6.2.7/start.sh << EOF
#!/bin/bash
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8001/conf/redis.conf
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8002/conf/redis.conf
/home/test01/redis_6.2.7/bin/./redis-server /home/test01/redis_6.2.7/redis-cluster/8003/conf/redis.conf
EOF
chmod +x /home/test01/redis_6.2.7/start.sh
2. 停止脚本
cat > /home/test01/redis_6.2.7/stop.sh << EOF
#!/bin/bash
/home/test01/redis_6.2.7/bin/./redis-cli -p 8001 shutdown
/home/test01/redis_6.2.7/bin/./redis-cli -p 8002 shutdown
/home/test01/redis_6.2.7/bin/./redis-cli -p 8003 shutdown
EOF
chmod +x /home/test01/redis_6.2.7/stop.sh

浙公网安备 33010602011771号