当前位置: 首页 > ai >正文

Redis Cluster 手动部署(小白的“升级打怪”成长之路)

目录

一、环境规划

二、基础环境

1、创建配置目录

2、生成配置文件

3、修改监听端口

4、修改数据目录

5、修改日志目录

6、修改PID文件目录

7、修改保护模式

8、修改进程运行模式

9、修改监听地址

10、生成集群配置

11、启动服务

三、构建集群

1、将其他节点加入集群

2、分配slot

3、建立主从关系

4、集群操作命令

四、故障恢复

1、模式故障

2、故障恢复

3、cluster failover命令

yum安装redis实现Cluster集群案例

1、更改配置文件

2、将其他节点加入集群

3、分配slot

4、建立主从关系

5、查看集群部署情况

6、验证不同节点管理不同槽位

7、模拟主节点出故障,从节点接替管理槽位

8、手动触发主从切换

一、环境规划

主机名IP地址端口描述
redis-master192.168.166.96379redis-master01
6381redis-master02
6383redis-master03
redis-slave192.168.166.96380redis-slave01
6382redis-slave02
6384redis-slave03

二、基础环境

1、创建配置目录

mkdir /etc/redis
​
mv /etc/redis.conf  /etc/redis/6379.conf
​
cd /etc/redis
cat 6379.com
bind 192.168.166.9
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir /var/lib/redis
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.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
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
​

2、生成配置文件

[root@localhost redis]# for i in {6380..6384};do cp ./6379.conf ${i}.conf ;done
[root@localhost redis]# ls
6379.conf  6380.conf  6381.conf  6382.conf  6383.conf  6384.conf

3、修改监听端口

[root@localhost redis]# for i in {6380..6384};do sed -i "s/port 6379/port ${i}/" ./${i}.conf;done
[root@localhost redis]# for i in {6380..6384};do grep "^port" ./${i}.conf;done
port 6380
port 6381
port 6382
port 6383
port 6384

4、修改数据目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#dir /var/lib/redis#dir /var/lib/redis/${i}#" ./${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^di" ./${i}.conf;done
dir /var/lib/redis/6379
dir /var/lib/redis/6380
dir /var/lib/redis/6381
dir /var/lib/redis/6382
dir /var/lib/redis/6383
dir /var/lib/redis/6384

5、修改日志目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#logfile /var/log/redis/redis.log#logfile /var/log/redis/${i}.log#" ./${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^logfile" ./${i}.conf;done
logfile /var/log/redis/6379.log
logfile /var/log/redis/6380.log
logfile /var/log/redis/6381.log
logfile /var/log/redis/6382.log
logfile /var/log/redis/6383.log
logfile /var/log/redis/6384.log

6、修改PID文件目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /var/run/redis/${i}.pid#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^pidfile" ${i}.conf;done
pidfile /var/run/redis/6379.pid
pidfile /var/run/redis/6380.pid
pidfile /var/run/redis/6381.pid
pidfile /var/run/redis/6382.pid
pidfile /var/run/redis/6383.pid
pidfile /var/run/redis/6384.pid

7、修改保护模式

[root@localhost redis]# for i in {6379..6384};do sed -i "s#protected-mode yes#protected-mode no#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^protected-mode" ${i}.conf;done
protected-mode no
protected-mode no
protected-mode no
protected-mode no
protected-mode no
protected-mode no

8、修改进程运行模式

[root@localhost redis]# for i in {6379..6384};do sed -i "s#daemonize no#daemonize yes#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^daemonize" ${i}.conf;done
daemonize yes
daemonize yes
daemonize yes
daemonize yes
daemonize yes
daemonize yes

9、修改监听地址

[root@localhost redis]# for i in {6379..6384};do sed -i "s#bind 127.0.0.1#bind 192.168.166.9#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^bind" ${i}.conf;done
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9

10、生成集群配置

[root@localhost ~]# cd /var/lib/redis/
[root@localhost redis]# mkdir {6379..6384}
[root@localhost redis]# ls
6379  6380  6381  6382  6383  6384
​
[root@localhost ~]# cd /var/run/
[root@localhost run]# mkdir redis
[root@localhost run]# cd /etc/redis
[root@localhost redis]# for i in {6379..6384};do echo -e "cluster-enabled yes\ncluster-config-file nodes-${i}.conf\ncluster-node-timeout 15000" >> ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do tail -3 ${i}.conf;done
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6383.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6384.conf
cluster-node-timeout 15000
​

11、启动服务

[root@localhost redis]# for((i=6379;i<=6384;i++));do redis-server /etc/redis/${i}.conf;done
[root@localhost redis]# netstat -anptu | grep redis
tcp        0      0 192.168.166.9:16380   0.0.0.0:*               LISTEN      3154/redis-server 1 
tcp        0      0 192.168.166.9:16381   0.0.0.0:*               LISTEN      3156/redis-server 1 
tcp        0      0 192.168.166.9:16382   0.0.0.0:*               LISTEN      3160/redis-server 1 
tcp        0      0 192.168.166.9:16383   0.0.0.0:*               LISTEN      3166/redis-server 1 
tcp        0      0 192.168.166.9:16384   0.0.0.0:*               LISTEN      3170/redis-server 1 
tcp        0      0 192.168.166.9:6379    0.0.0.0:*               LISTEN      3150/redis-server 1 
tcp        0      0 192.168.166.9:6380    0.0.0.0:*               LISTEN      3154/redis-server 1 
tcp        0      0 192.168.166.9:6381    0.0.0.0:*               LISTEN      3156/redis-server 1 
tcp        0      0 192.168.166.9:6382    0.0.0.0:*               LISTEN      3160/redis-server 1 
tcp        0      0 192.168.166.9:6383    0.0.0.0:*               LISTEN      3166/redis-server 1 
tcp        0      0 192.168.166.9:6384    0.0.0.0:*               LISTEN      3170/redis-server 1 
tcp        0      0 192.168.166.9:16379   0.0.0.0:*               LISTEN      3150/redis-server 1 

三、构建集群

以下操作需要登录某个节点的redis数据库

1、将其他节点加入集群

[root@localhost redis]# redis-cli  -h 192.168.166.9
​
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6380
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6381
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6382
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6383
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6384
OK
​
########或者终端执行如下指令#####
for i in {6380..6384};do redis-cli -h 192.168.166.9 -p 6379 cluster meet 192.168.166.9 $i;done

2、分配slot

也是在规划谁是master节点

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6379 cluster addslots {0..5461}
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6381 cluster addslots {5462..10922}
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6383 cluster addslots {10923..16383}
OK

3、建立主从关系

查看所有群集节点

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6379 cluster nodes
69ed2c9d99ac83e52851d67e2597927142f47ebf 192.168.166.9:6381 master - 0 1709263044558 5 connected 5462-10922
c3f6d16785ab3de1b88f8ddb8e5bea3e7c6de5d4 192.168.166.9:6382 master - 0 1709263043555 0 connected
a8b96d687e681dd4c606e6959468b2bc1a5b0b1f 192.168.166.9:6379 myself,master - 0 0 2 connected 0-5461
bbdc8d353e2afa87d3d1430eecbbe436206fd213 192.168.166.9:6384 master - 0 1709263042550 4 connected
20a5e5bb03ab273fea553b3ccafeba01e83a6eb2 192.168.166.9:6380 master - 0 1709263043052 1 connected
98fe02fecd9f99d2d220cbf3de921063a9413428 192.168.166.9:6383 master - 0 1709263045565 3 connected 10923-16383
​

查看master节点ID

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6380 cluster replicate a8b96d687e681dd4c606e6959468b2bc1a5b0b1f
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6382 cluster replicate 69ed2c9d99ac83e52851d67e2597927142f47ebf
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6384 cluster replicate 98fe02fecd9f99d2d220cbf3de921063a9413428
OK
​

4、集群操作命令

命令作用
cluster info打印集群的信息
cluster nodes列出集群当前已知的所有节点( node),以及这些节点的相关信息。
cluster meet <ip> <port>将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id>从集群中移除 node_id 指定的节点。
cluster replicate <master_node_id>将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。
cluster saveconfig将节点的配置文件保存到硬盘里面。
cluster addslots <slot> [slot ...]将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots <slot> [slot ...]移除一个或多个槽对当前节点的指派。
cluster flushslots移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot <slot> node <node_id>将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot <slot> migrating <node_id>将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot <slot> importing <node_id>从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot <slot> stable取消对槽 slot 的导入( import)或者迁移( migrate)。
cluster keyslot <key>计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot>返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count>返回 count 个 slot 槽中的键 。
cluster reset重置集群命令

四、故障恢复

1、模式故障

kill -9  PID #杀死其中一个redis进程

2、故障恢复

  1. 启动杀死的redis进程

  2. 通过 cluster nodes查看节点状态

  3. 通过 cluster info 查看集群状态

  4. 登录所有从节点

3、cluster failover命令

Redis Cluster模式下的cluster failover(集群故障转移)的作用是确保Redis集群在主节点(Master)发生故障或不可用的情况下,能够自动将主节点的工作负载转移到备用节点(Slave)上,并使备用节点成为新的主节点,保证Redis集群的高可用性和持续可用性。

当主节点发生故障时,Redis Cluster会自动检测到主节点的不可用,并从备用节点中选出一个合适的备用节点作为新的主节点。该备用节点经过选举后,会接管原主节点的数据和工作负载,并开始对外提供服务。集群的其它节点也会更新集群拓扑信息,以便客户端能够正确地路由请求到新的主节点。

cluster failover的作用主要包括:

  1. 高可用性:当主节点发生故障时,能够及时切换到备用节点,保证Redis集群的继续正常运行,避免因单点故障而导致服务不可用。

  2. 数据保护:在主节点发生故障时,能够将数据从主节点复制到备用节点,并在故障转移时将备用节点提升为新的主节点,从而保证数据的持久性和一致性。

  3. 自动化管理:集群故障转移是自动化过程,无需人工干预,减少了对系统运维的依赖,并提高了系统的可靠性和可维护性。

yum安装redis实现Cluster集群案例

yum安装

准备两台主机(ip分别为192.168.58.180、192.168.58.182、192.168.58.183)

1、更改配置文件

####192.168.58.180
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.180 
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost ~]# ps aux | grep redis
root      548851  0.0  0.2  21992  7804 pts/0    S+   16:36   0:00 grep --color=auto redis
​
##注意要用绝对路径启动服务
[root@localhost ~]# redis-server /etc/redis.conf 
[root@localhost ~]# redis-server /etc/redis_6380.conf 
[root@localhost ~]# !ps
ps aux | grep redis
root      549663  0.1  0.3 154880 12172 ?        Ssl  16:38   0:00 redis-server 192.168.58.180:6379 [cluster]
root      549724  0.2  0.3 154880 12136 ?        Ssl  16:38   0:00 redis-server 192.168.58.180:6380 [cluster]
root      549839  0.0  0.2  21992  7908 pts/0    S+   16:38   0:00 grep --color=auto redis
​
​
####192.168.58.182
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.182
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost redis]# redis-server /etc/redis.conf 
[root@localhost redis]# redis-server /etc/redis_6380.conf  
####192.168.58.183
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.183
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost redis]# redis-server /etc/redis.conf 
[root@localhost redis]# redis-server /etc/redis_6380.conf  

2、将其他节点加入集群

####192.168.58.180
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
83025a16978dbd24bed4d7c4404c247e3b267f43 :6379@16379 myself,master - 0 0 0 connected
​
192.168.58.180:6379> CLUSTER MEET 192.168.58.180 6380
OK
192.168.58.180:6379> cluster nodes
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223123275 0 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 0 1 connected
​
192.168.58.180:6379> CLUSTER MEET 192.168.58.182 6379
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.182 6380
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.183 6379
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.183 6380
OK
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223229129 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223231304 6 connected
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223232466 0 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223228000 1 connected
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223231000 2 connected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223227919 3 connected
192.168.58.180:6379> exit

3、分配slot

####192.168.58.180
##分配slot(也是在规划谁是master节点及管理的槽位)
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6379 cluster addslots {0..5461}
OK
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6381 cluster addslots {5462..10922}
Could not connect to Redis at 192.168.58.182:6381: Connection refused
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6379 cluster addslots {5462..10922}
OK
[root@localhost ~]# redis-cli -h 192.168.58.183 -p 6379 cluster addslots {10923..16383}
OK
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223535303 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223534145 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223533000 7 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223527000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223536464 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223537591 3 connected
192.168.58.180:6379> exit

4、建立主从关系

####192.168.58.180
##用主的节点ID建立一一对应的主从关系
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380 cluster replicate 83025a16978dbd24bed4d7c4404c247e3b267f43
OK
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223782000 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223782076 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752223782428 1 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223765000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223783575 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223784731 3 connected
192.168.58.180:6379> exit
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6380 cluster replicate 0b2ffa9b8510eeebffddbdf242d968b784768891
OK
[root@localhost ~]# redis-cli -h 192.168.58.183 -p 6380 cluster replicate 8b426ac7d752f8f65ecf035b555b8ef9465cd517
OK
​

5、查看集群部署情况

####192.168.58.180
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752223872659 6 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223871510 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752223874577 1 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223874000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223873778 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752223874915 2 connected

6、验证不同节点管理不同槽位

####192.168.58.180
##验证:不同的槽位放在固定的数值,需要进入对应的节点才能设置键值对,否则做出提示让你到对应的节点设置
192.168.58.180:6379> set a 1
(error) MOVED 15495 192.168.58.183:6379
192.168.58.180:6379> exit
​
[root@localhost ~]# redis-cli -h 192.168.58.183
192.168.58.183:6379> set a 1
OK
192.168.58.183:6379> set b 2
(error) MOVED 3300 192.168.58.180:6379
192.168.58.183:6379> exit
​
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> set b 2
OK
192.168.58.180:6379> exit

7、模拟主节点出故障,从节点接替管理槽位

####192.168.58.180
[root@localhost ~]# ps aux | grep redis
root      549663  0.2  0.3 154880 11896 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6379 [cluster]
root      549724  0.2  0.3 154880 11868 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      563007  0.0  0.2  21992  7912 pts/0    S+   17:00   0:00 grep --color=auto redis
[root@localhost ~]# kill 549663
[root@localhost ~]# ps aux | grep redis
root      549724  0.2  0.3 154880 11868 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      563171  0.0  0.2  21992  8012 pts/0    S+   17:00   0:00 grep --color=auto redis
​
[root@localhost ~]# redis-cli -h 192.168.58.180
Could not connect to Redis at 192.168.58.180:6379: Connection refused
not connected> exit
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380
192.168.58.180:6380> cluster nodes
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224473097 2 connected 5462-10922
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 myself,master - 0 1752224417000 8 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224471974 6 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 master,fail - 1752224435167 1752224430704 1 disconnected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224474256 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224470842 6 connected 10923-16383
192.168.58.180:6380> get b
"2"
192.168.58.180:6380> exit
​
​
##等原来的192.168.58.180 6379重新连接上,已经从master变为了slave
[root@localhost ~]# redis-server /etc/redis.conf 
[root@localhost ~]# ps aux | grep redis
root      549724  0.2  0.3 154880 11996 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      564268  0.2  0.3 157952 12048 ?        Ssl  17:02   0:00 redis-server 192.168.58.180:6379 [cluster]
root      564383  0.0  0.2  21992  7912 pts/0    S+   17:02   0:00 grep --color=auto redis
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380
192.168.58.180:6380> cluster nodes
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224565575 2 connected 5462-10922
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 myself,master - 0 1752224558000 8 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224564418 6 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 slave ab9daba33fd7aba28734f3c43734aec5d42944a6 0 1752224563299 8 connected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224565222 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224562181 6 connected 10923-16383
192.168.58.180:6380> exit

8、手动触发主从切换

####192.168.58.180
##在 Redis 集群中使用CLUSTER FAILOVER命令手动触发主从切换
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6379
192.168.58.180:6379> CLUSTER FAILOVER
OK
192.168.58.180:6379> CLUSTER NODES
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752224639970 9 connected
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224642000 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224643000 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224642296 6 connected 10923-16383
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752224639000 9 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224644527 6 connected

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞

http://www.xdnf.cn/news/15140.html

相关文章:

  • Vue》》总结
  • 用YOLOv5系列教程(1)-用YOLOv5轻松实现设备状态智能监控!工业级教程来了
  • 11. JVM中的分代回收
  • C语言习题三
  • 玩转rhel9 Apache
  • 贪心算法题解——划分字母区间【LeetCode】
  • Tom 和 Jerry 的网格迷宫大冒险
  • 深入理解设计模式:原型模式(Prototype Pattern)
  • Spring Boot 应用中,配置的加载优先级
  • 前端MQTT入门指南:从零到实战的完整流程
  • 利用scale实现图片放大案例
  • 家用智能摄像机PRV文件删除的恢复方法
  • 设计模式 - 反转原则:DIP(Dependence Inversion Principle)最佳实践
  • 手机识别数据集,2628张原始图片,支持yolo,coco json,pasical voc xml等格式的标注
  • Nginx 中的负载均衡策略
  • TensorFlow2 study notes[1]
  • NW710NW713美光固态闪存NW719NW720
  • 【每日刷题】回文数
  • c语言中的数组IV
  • 奇哥面试:RabbitMQ工作模式深度剖析与Spring整合MQ
  • Datawhale AI夏令营:基于带货视频评论的用户洞察挑战赛上分全攻略
  • 数据库系统的基础知识(三)
  • 【时时三省】(C语言基础)通过指针引用数组元素
  • Redis 分片集群
  • C++中的智能指针(1):unique_ptr
  • 《汇编语言:基于X86处理器》第7章 整数运算(2)
  • 星云穿越与超光速飞行特效的前端实现原理与实践
  • 上位机知识篇---Linux软硬链接
  • 用 ELK+Filebeat 提高50%问题排查效率,这套方案实测有效!
  • cnpm exec v.s. npx