部署Redis集群

news2024/11/26 20:24:20

文章目录

  • 部署Redis集群
    • 1. 准备集群主机
    • 2. 启用集群功能
    • 3. 配置管理主机并创建集群
      • 3.1 配置管理主机 192.168.88.57
      • 3.2 创建集群
        • 创建集群命令
        • 创建集群失败解决办法
      • 3.3 查看集群信息
        • 查看集群统计信息
        • 查看集群详细信息
    • 4. **测试集群及集群工作原理**
      • 4.1. 访问集群存取数据
      • 4.2 **在客户端连接集群中的主机**
      • 4.3 **集群存储数据的工作原理**
      • 4.4 测试数据自动备份
      • **4.5 **测试高可用
    • 5. 管理集群
      • 5.1 向集群里添加新服务器
        • 1. 添加master角色的服务器
          • (1) Host58运行redis 服务且启用了集群功能
          • (2) 在管理主机mgm57 如下操作:
        • 2. 添加slave角色的服务器
          • (1) 在host59 主机运行redis服务且启用了集群功能
          • (2) 在管理主机57做如下操作:
      • 5.2 把服务器移除集群
        • 1. 移除slave角色的主机
        • 2. 移除master角色的主机

部署Redis集群

1. 准备集群主机

准备6台Redis服务器

主机名IP地址端口
host51192.168.88.516379
host52192.168.88.526379
Host53192.168.88.536379
Host54192.168.88.546379
Host55192.168.88.556379
Host56192.168.88.566379

说明准备做集群的主机,不允许存储数据、不允许设置连接密码

配置服务器192.168.88.51 (删除已有虚拟机host51 重新创建新虚拟机 做如下配置)
[root@host51 ~]# yum -y install gcc 
[root@host51 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host51 ~]# cd redis-4.0.8/
[root@host51 ~]# make && make install
[root@host51 ~]# ./utils/install_server.sh  遇到提示就回车

 
配置服务器192.168.88.52
[root@host52 ~]# yum -y install gcc 
[root@host52 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host52 ~]# cd redis-4.0.8/
[root@host52 ~]# make && make install
[root@host52 ~]# ./utils/install_server.sh  遇到提示就回车

 
配置服务器192.168.88.53
[root@host53 ~]# yum -y install gcc 
[root@host53 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host53 ~]# cd redis-4.0.8/
[root@host53 ~]# make && make install
[root@host53 ~]# ./utils/install_server.sh  遇到提示就回车


配置服务器192.168.88.54
[root@host54 ~]# yum -y install gcc 
[root@host54 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host54 ~]# cd redis-4.0.8/
[root@host54 ~]# make && make install
[root@host54 ~]# ./utils/install_server.sh  遇到提示就回车

 
配置服务器192.168.88.55
[root@host55 ~]# yum -y install gcc 
[root@host55 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host55 ~]# cd redis-4.0.8/
[root@host55 ~]# make && make install
[root@host55 ~]# ./utils/install_server.sh  遇到提示就回车
    

配置服务器192.168.88.56
[root@host56 ~]# yum -y install gcc 
[root@host56 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host56 ~]# cd redis-4.0.8/
[root@host56 ~]# make && make install
[root@host56 ~]# ./utils/install_server.sh  遇到提示就回车

2. 启用集群功能

1.启用host51主机集群功能
[root@host51 ~]# /etc/init.d/redis_6379  stop
[root@host51 ~]# vim /etc/redis/6379.conf 
bind 192.168.88.51 
port 6379
cluster-enabled yes #启用集群功能
cluster-config-file nodes-6379.conf 保存集群信息的配置文件
cluster-node-timeout 5000  集群中主机的连接超时时间
[root@host51 ~]# 	       
[root@host51 ~]# /etc/init.d/redis_6379  start
[root@host51 ~]# netstat  -utnlp  | grep redis-server
tcp    0   0 192.168.88.51:16379      0.0.0.0:*    LISTEN      4249/redis-server 1 
tcp  0   0 192.168.88.51:6379      0.0.0.0:*  LISTEN      4249/redis-server 1 


2.启用host52主机集群功能
[root@host52 ~]# /etc/init.d/redis_6379  stop
[root@host52 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
bind 192.168.88.52 
port 6379
cluster-enabled yes #启用集群功能
cluster-config-file nodes-6379.conf 保存集群信息的配置文件
cluster-node-timeout 5000  集群中主机的连接超时时间
[root@host52 ~]# 	       
[root@host52 ~]# /etc/init.d/redis_6379  start
[root@host52 ~]# netstat  -utnlp  | grep redis-server
tcp    0   0 192.168.88.52:16379   0.0.0.0:*    LISTEN      4249/redis-server 1 
tcp   0      0 192.168.88.52:6379    0.0.0.0:*     LISTEN      4249/redis-server 1 


3.启用host53主机集群功能
[root@host53 ~]# /etc/init.d/redis_6379  stop
[root@host53 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
bind 192.168.88.53 
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
[root@host53 ~]# 	       
[root@host53 ~]# /etc/init.d/redis_6379  start
[root@host53 ~]# netstat  -utnlp  | grep redis-server
tcp    0   0 192.168.88.53:16379      0.0.0.0:*    LISTEN      4249/redis-server 1 
tcp    0   0 192.168.88.53:6379       0.0.0.0:*    LISTEN      4249/redis-server 1 


4.启用host54主机集群功能
[root@host54 ~]# /etc/init.d/redis_6379  stop
[root@host54 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
bind 192.168.88.54 
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
[root@host54 ~]# 	       
[root@host54 ~]# /etc/init.d/redis_6379  start
[root@host54 ~]# netstat  -utnlp  | grep redis-server
tcp   0  0 192.168.88.54:16379      0.0.0.0:*  LISTEN      4249/redis-server 1 
tcp   0  0 192.168.88.54:6379       0.0.0.0:*  LISTEN      4249/redis-server 1 


5.启用host55主机集群功能
[root@host55 ~]# /etc/init.d/redis_6379  stop
[root@host55 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
bind 192.168.88.55 
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
[root@host55 ~]# 	       
[root@host55 ~]# /etc/init.d/redis_6379  start
[root@host55 ~]# netstat  -utnlp  | grep redis-server
tcp   0 0 192.168.88.55:16379      0.0.0.0:* LISTEN      4249/redis-server 1 
tcp  0   0 192.168.88.55:6379      0.0.0.0:*  LISTEN      4249/redis-server 1 


6.启用host56主机集群功能
[root@host56 ~]# /etc/init.d/redis_6379  stop
[root@host56 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
bind 192.168.88.56 
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
[root@host56 ~]# 	       
[root@host56 ~]# /etc/init.d/redis_6379  start
[root@host56 ~]# netstat  -utnlp  | grep redis-server
tcp     0  0 192.168.88.56:16379      0.0.0.0:* LISTEN      4249/redis-server 1 
tcp   0   0 192.168.88.56:6379       0.0.0.0:*    LISTEN      4249/redis-server 1

3. 配置管理主机并创建集群

准备新虚拟机

主机名IP****地址角色
Mgm57192.168.88.57管理主机

拓扑结构

  • redis服务器:6台
  • 管理主机:1台
  • 客户端:1台

在这里插入图片描述

3.1 配置管理主机 192.168.88.57

 第一步:准备ruby脚本的运行环境 
 第二步:创建脚本
 第三步:查看脚本帮助信息
]#yum  -y  install   rubygems   ruby 
]#gem  install  redis-3.2.1.gem
]#mkdir  /root/bin     			//创建命令检索目录
]#tar -xf redis-4.0.8.tar.gz
]#cp  redis-4.0.8/src/redis-trib.rb   /root/bin/  	
]#chmod  +x   /root/bin/redis-trib.rb  设置执行权限
]#redis-trib.rb   help   (能看到帮助信息为成功)

3.2 创建集群

创建集群命令

说明,创建集群时,会把前3台服务器 配置为主服务器,剩下的其他主机全做从服务器
–replicas 从服务器的台数
redis-trib.rb create --replicas 数字 ip地址:端口 ip地址:端口 ip地址:端口 …
例子

[root@mgm57 ~]# redis-trib.rb create --replicas 1  192.168.88.51:6379  192.168.88.52:6379 192.168.88.53:6379 192.168.88.54:6379 192.168.88.55:6379 192.168.88.56:6379
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.88.51:6379
192.168.88.52:6379
192.168.88.53:6379
Adding replica 192.168.88.55:6379 to 192.168.88.51:6379
Adding replica 192.168.88.56:6379 to 192.168.88.52:6379
Adding replica 192.168.88.54:6379 to 192.168.88.53:6379
M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
   slots:0-5460 (5461 slots) master
M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
   slots:5461-10922 (5462 slots) master
M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
   slots:10923-16383 (5461 slots) master
S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
   replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
   replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
   replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
Can I set the above configuration? (type 'yes' to accept): yes 同意 
....
....
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.  创建成功的提示

创建集群失败解决办法

  • 1 检查7台主机的防火墙和selinux服务是否关闭了
  • 2 在6台Redis服务器 分别执行如下操作:
    停止Redis服务
    清空数据库目录 rm –rf /var/lib/redis/6379/*
    启动Redis服务
  • 3 管理主机创建集群

3.3 查看集群信息

查看集群统计信息

[root@mgm57 ~]# redis-trib.rb info  192.168.4.51:6379
192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@mgm57 ~]# 		

查看集群详细信息

[root@mgm57 ~]# redis-trib.rb check  192.168.88.51:6379
>>> Performing Cluster Check (using node 192.168.88.51:6379)
M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
   slots: (0 slots) slave
   replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
   slots: (0 slots) slave
   replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
   slots: (0 slots) slave
   replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4. 测试集群及集群工作原理

4.1. 访问集群存取数据

命令

-c 连接集群中的主机 使用集群算法存储数据

]# redis-cli  -c   -h redis服务器的ip   -p 端口号

说明:连接集群中的任意一台服务器都可以查询数据和存储数据  

4.2 在客户端连接集群中的主机

说明:

统一在Host51主机演示存储数数据

向集群中的主机存储数据一次只能存储一个变量集群算法每次只有一个计算结果

#存储数据
[root@host51 ~]# redis-cli -c  -h 192.168.88.51
192.168.88.51:6379> keys *
(empty list or set)
192.168.88.51:6379> set name zsj
-> Redirected to slot [5798] located at 192.168.88.52:6379
OK
192.168.88.52:6379> keys *
1) "name"
192.168.88.52:6379> set age 19 
-> Redirected to slot [741] located at 192.168.88.51:6379
OK
192.168.88.51:6379> keys *
1) "age"
192.168.88.51:6379> set school tarena
-> Redirected to slot [8455] located at 192.168.88.52:6379
OK
192.168.88.52:6379> exit

 
#查询数据
root@host51 ~]# redis-cli -c  -h 192.168.88.56
192.168.88.56:6379> keys *
1) "school"
2) "name"
192.168.88.56:6379> get name
-> Redirected to slot [5798] located at 192.168.88.52:6379
"zsj"
192.168.88.52:6379> keys *
1) "name"
2) "school"
192.168.88.52:6379> get age
-> Redirected to slot [741] located at 192.168.88.51:6379
"19"
192.168.88.51:6379> keys 
1) "age"
192.168.88.51:6379> exit

4.3 集群存储数据的工作原理

Redis集群是如何实现数据的分布式存储的?

存储数据和查询数据时 调用集群算法CRC16

集群算法会计算出1个数字, 数字在哪个主服务占用的hash slots范围内 ,就连接对应的主服务器存储数据或查询数据。

在这里插入图片描述

4.4 测试数据自动备份

连接slave角色服务器可以查看到和master角色服务器一样的数据

root@host51 ~]# redis-cli -c  -h 192.168.88.54
> keys  *

root@host51 ~]# redis-cli -c  -h 192.168.88.55
> keys  *

root@host51 ~]# redis-cli -c  -h 192.168.88.56
> keys  *

**4.5 **测试高可用

#停止master角色主机的redis服务
root@host53 ~]# redis-cli -h 192.168.88.53  -p  6379  shutdown

#在管理主机查看集群信息
发现mater角色主机的ip发生了变化
[root@mgm57 ~]# redis-trib.rb info  192.168.88.51:6379

5. 管理集群

环境准备:

  • 创建2台新虚拟机 ip 192.168.88.58 和 192.168.88.59
主机名IP地址端口号
Host58192.168.88.586379
Host59192.168.88.596379
  • 准备redis服务器Host58
  [root@host58 ~]# yum -y install gcc 
  [root@host58 ~]# tar -xf redis-4.0.8.tar.gz 
  [root@host58 ~]# cd redis-4.0.8/
  [root@host58 ~]# make && make install
  [root@host58 ~]# ./utils/install_server.sh  遇到提示就回车
  • 准备redis服务器Host59
  [root@host59 ~]# yum -y install gcc 
  [root@host59 ~]# tar -xf redis-4.0.8.tar.gz 
  [root@host59 ~]# cd redis-4.0.8/
  [root@host59 ~]# make && make install
  [root@host59 ~]# ./utils/install_server.sh  遇到提示就回车

5.1 向集群里添加新服务器

说明:什么情况下需要向集群里添加新主机
扩大内存空间(添加master角色服务器)。
为了保证服务的可靠性(给主服务器添加多个从服务器)

1. 添加master角色的服务器

要求:把新的Redis服务器Host58 添加到集群里做master 服务器

具体配置如下:

(1) Host58运行redis 服务且启用了集群功能
 
[root@host58 ~]# /etc/init.d/redis_6379  stop
[root@host58 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
[root@host58 ~]# vim /etc/redis/6379.conf 
bind 192.168.88.58 
port 6379
cluster-enabled yes #启用集群功能
cluster-config-file nodes-6379.conf #保存集群信息的配置文件
cluster-node-timeout 5000  #集群中主机的连接超时时间
	       
[root@host58 ~]# /etc/init.d/redis_6379  restart
[root@host58 ~]# netstat  -utnlp  | grep redis-server
tcp   0      0 192.168.88.58:16379   0.0.0.0:*   LISTEN      4249/redis-server 1 
tcp  0    0 192.168.88.58:6379      0.0.0.0:*   LISTEN      4249/redis-server 1 
(2) 在管理主机mgm57 如下操作:
2.1 把host58主机添加到集群里
命令
redis-trib.rb add-node 新主机Ip:端口  集群中已有主机的ip:端口
[root@mgm57 ~]# redis-trib.rb add-node 192.168.88.58:6379 192.168.88.51:6379
.....
.....
[OK] All nodes agree about slots configuration.
> > > Check for open slots...
> > > Check slots coverage...
> > > [OK] All 16384 slots covered.
> > > Send CLUSTER MEET to node 192.168.88.58:6379 to make it join the cluster.
> > > [OK] New node added correctly.  添加成功的提示
> > > [root@mgm57 ~]#

#新添加的master角色主机没有hash slots

[root@mgm57 ~]# redis-trib.rb info  192.168.88.51:6379
192.168.88.51:6379 (0eb3b7aa...) -> 2 keys | 5461 slots | 1 slaves.
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 3 keys | 5462 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 0 keys | 0 slots | 0 slaves.   零个hash slots 
[OK] 6 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]# 		



2.2 分配hast slots 
master角色的服务器没有hast slots得不到存储数据机会
命令						
redis-trib.rb   reshard  集群中已有主机的ip:端口
[root@mgm57 ~]# redis-trib.rb reshard  192.168.88.56:6379

第1个问题 移除多少个hast slots
How many slots do you want to move (from 1 to 16384)? 4096
第2个问题 把4096个槽给哪台主数据库服务器 (host58主机的id) 
What is the receiving node ID?87cc1c128166e08a16cc294758611453bbc71437 
第3个问题 提供4096个槽 主机的id (all 表示当前所有主服务器一起提供4096个槽给host58)
Source node #1:all
第4个问题 确认前3步的配置 yes 同意 no  退出
Do you want to proceed with the proposed reshard plan (yes/no)? yes  



2.3 查看集群信息 (查看到多新的主服务器且有hast slots 为成功)
[root@mgm57 ~]# redis-trib.rb info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 2 keys | 4096 slots | 0 slaves.
[OK] 6 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]# 
						#具体查看host58 占用4096个槽的范围
[root@mgm57 ~]# redis-trib.rb check  192.168.88.56:6379
....
....						
M: 87cc1c128166e08a16cc294758611453bbc71437 192.168.88.58:6379
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)	

2. 添加slave角色的服务器

说明:从角色服务器的数据是master服务器同步过来的数据
所以slave角色的服务器不需要分配hash slots
只要把主机添加到集群了做slave服务器就可以了。
命令

[root@mgm57 ~]# redis-trib.rb  add-node   --slave  新主机Ip:端口  集群中已有主机的ip:端口

要求: 把Redis服务器host59 添加到集群里做host58 的slave 服务器

具体操作如下:

(1) 在host59 主机运行redis服务且启用了集群功能
[root@host59 ~]# /etc/init.d/redis_6379  stop
[root@host59 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf 
[root@host59 ~]# vim /etc/redis/6379.conf 
bind 192.168.88.59 
port 6379
cluster-enabled yes #启用集群功能
cluster-config-file nodes-6379.conf 保存集群信息的配置文件
cluster-node-timeout 5000  集群中主机的连接超时时间
	       
[root@host59 ~]# /etc/init.d/redis_6379  restart
[root@host59 ~]# netstat  -utnlp  | grep redis-server
tcp        0      0 192.168.88.59:16379      0.0.0.0:*               LISTEN      4249/redis-server 1 
tcp        0      0 192.168.88.59:6379      0.0.0.0:*               LISTEN      4249/redis-server 1 
(2) 在管理主机57做如下操作:
  • 2.1 把host59 添加到集群里 做slave服务器
  • 2.2 查看集群统计信息 (发现host58 有一个slave服务器)
  • 2.3 连接host59 查看数据 (会自动同步主服务器host58 的数据)

!!!!会自动做从服务器个数最少的 master服务器的从服务器。!!!

[root@mgm57 ~]# redis-trib.rb add-node --slave 192.168.88.59:6379  192.168.88.56:6379
....
....
[OK] All 16384 slots covered.
Automatically selected master 192.168.88.58:6379

> > > Send CLUSTER MEET to node 192.168.88.59:6379 to make it join the cluster.
> > > Waiting for the cluster to join.
> > > Configure node as replica of 192.168.88.58:6379.
> > > [OK] New node added correctly.
> > > [root@mgm57 ~]# 

[root@mgm57 ~]# redis-trib.rb info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 2 keys | 4096 slots | 1 slaves.  host58主机的从
[OK] 6 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#	

#查看详细信息
[root@mgm57 ~]# redis-trib.rb check  192.168.88.56:6379
....
.....
S: d50aa7c1acebe69af0834f1838c8b17b2348472e 192.168.88.59:6379
   slots: (0 slots) slave
   replicates 87cc1c128166e08a16cc294758611453bbc71437    主服务器的id 



#连接host59 查看数据     
[root@host56 ~]# redis-cli  -c  -h 192.168.88.59 -p 6379  
192.168.88.59:6379> keys *
1) "name"
2) "age"
192.168.88.59:6379>	

5.2 把服务器移除集群

1. 移除slave角色的主机

命令
[root@mgm57 ~]# redis-trib.rb del-node 集群中任意主机的Ip:端口 被移除主机的id
说明: slave角色的主机的没有hash slots 直接移除即可
主机被移除集群后redis服务会自动停止

诉求: 把Host59 slave 服务器移除集群,在管理主机做如下操作
- 1查看host59主机的id , 执行移除主机host59的命令

		 -  2 查看集群信息 (发现host58 主机slave 服务个数是 0台)	

**具体操作如下 :** 			
没删除之前查看信息
root@mgm57 ~]# redis-trib.rb  info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 6 keys in 4 masters.
0.00 keys per slot on average.


查看详细信息				  
[root@mgm57 ~]# redis-trib.rb  check   192.168.88.56:6379 | grep 192.168.88.59
S: d50aa7c1acebe69af0834f1838c8b17b2348472e 192.168.4.59:6379
					

移除slave角色主机
[root@mgm57 ~]# redis-trib.rb  del-node 192.168.88.56:6379 d50aa7c1acebe69af0834f1838c8b17b2348472e
Removing node d50aa7c1acebe69af0834f1838c8b17b2348472e from cluster 192.168.88.56:6379
Sending CLUSTER FORGET messages to the cluster...
SHUTDOWN the node. 把服务给停止了 


查看集群信息
[root@mgm57 ~]# redis-trib.rb  info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 2 keys | 4096 slots | 0 slaves.  零台从服务器
[OK] 6 keys in 4 masters.
0.00 keys per slot on average.


#host59主机查看Redis状态 (看不到了)
主机被移除集群后redis服务会自动停止
[root@host59 ~]# netstat  -utnalp  | grep redis-server

2. 移除master角色的主机

**说明:**master角色的服务器会占用hash slots
要先释放hash slots 再执行移除主机的命令

具体操作步骤:

  • 第一步:释放 hash slots (再次执行reshard命令)
  • 第二步:移除主机 (执行删除主机的命令)

诉求:把master角色 主机 host58移除集群,
在管理主机mgm57 做如下操作:

#释放 hash slots (再次执行reshard命令)
[root@mgm57 ~]# redis-trib.rb  reshard  192.168.88.56:6379
		
第1个问题:释放hash slots 的个数
How many slots do you want to move (from 1 to 16384)? 4096  (host58主机占用hash slots 的个数)

第2个问题:接收4096的个hash slots的主数据库服务器的ID (随便给那个主服务器都可以) 
What is the receiving node ID?0eb3b7aa0493a19189cba35b0c658202cc20884b   
(host51主机的id ,就是把释放的4096个hash slots给主数据库服务器host51)

第3个问题:从那台主服务器移除4096个hash slots 
Source node #1:87cc1c128166e08a16cc294758611453bbc71437  (host58主机的id)
Source node #2:done 结束指定
第4个问题:确认配置 yes同意  no 退出		
Do you want to proceed with the proposed reshard plan (yes/no)? yes  同意



查看集群信息(发现host51 主服务器hash slots变多了 )
[root@mgm57 ~]# redis-trib.rb  info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 3 keys | 8192 slots | 1 slaves. 槽多了 
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
192.168.88.58:6379 (87cc1c12...) -> 0 keys | 0 slots | 0 slaves. 一个槽也没有了 
[OK] 6 keys in 4 masters. 
0.00 keys per slot on average.


查看host58主机的id 然后删除主机 Host58				
[root@mgm57 ~]# redis-trib.rb  check  192.168.88.56:6379 | grep  192.168.88.58
M: 87cc1c128166e08a16cc294758611453bbc71437 192.168.4.58:6379
[root@mgm57 ~]# 
[root@mgm57 ~]# redis-trib.rb  del-node   192.168.88.56:6379  87cc1c128166e08a16cc294758611453bbc71437				
Removing node 87cc1c128166e08a16cc294758611453bbc71437 from cluster 192.168.88.56:6379
Sending CLUSTER FORGET messages to the cluster...
SHUTDOWN the node.



再次查看集群信息 (没有host58 主机了 )
[root@mgm57 ~]# redis-trib.rb  info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 3 keys | 8192 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 6 keys in 3 masters.
0.00 keys per slot on average.

128166e08a16cc294758611453bbc71437 192.168.4.58:6379
[root@mgm57 ~]# 
[root@mgm57 ~]# redis-trib.rb  del-node   192.168.88.56:6379  87cc1c128166e08a16cc294758611453bbc71437				
Removing node 87cc1c128166e08a16cc294758611453bbc71437 from cluster 192.168.88.56:6379
Sending CLUSTER FORGET messages to the cluster...
SHUTDOWN the node.



再次查看集群信息 (没有host58 主机了 )
[root@mgm57 ~]# redis-trib.rb  info  192.168.88.56:6379
192.168.88.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 3 keys | 8192 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 6 keys in 3 masters.
0.00 keys per slot on average.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter进阶使用指南-使用参数化

Apache JMeter是一个广泛使用的开源负载和性能测试工具。在进行性能测试时,我们经常需要模拟不同的用户行为和数据,这时候,参数化就显得尤为重要。此文主要介绍如何在JMeter中使用参数化。 什么是参数化? 参数化是一种将静态值替…

OpenCV之ellipse函数

ellipse函数用来在图片中绘制椭圆、扇形,有两个重载函数。 函数原型1: void cv::ellipse( InputOutputArray img,Point center,Size axes,double angle,double startAngle,double …

ORB-SLAM2算法14之局部建图线程Local Mapping

文章目录 0 引言1 概述2 处理队列中的关键帧3 剔除坏的地图点4 创建新地图点5 融合当前关键帧和其共视帧的地图点6 局部BA优化7 剔除冗余关键帧 0 引言 ORB-SLAM2算法7详细了解了System主类和多线程、ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成、ORB-SLAM2算法…

如何使用SpringCloud Eureka 创建单机Eureka Server-注册中心

😀前言 本篇博文是关于使用SpringCloud Eureka 创建单机Eureka Server-注册中心,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家&…

Jenkins实现基础CD操作

操作截图 在Jenkins里面设置通过标签进行构建 在Jenkins中进入项目,配置以下 将execute shell换到invoke top-level maven targets之前 在gitlab中配置标签 代码迭代新的版本 项目代码迭代 修改docker-compose.yml 提交新版本的代码 在Jenkins中追加新…

Java调用Web Service接口

方法1. 用IDEA生成相关代码调用方法。 在IDEA插件商店下载插件 然后新建一个Java项目 创建一个包来存放生成的代码,(点击一下)选中这个包,点击Tools 填入接口url,记住后面拼接“?wsdl”,选择生成方法,然后OK即可生…

如何重构大数据时代中小企业的信用评价指标体系?

在大数据时代,中小企业信用评价具有重要的意义。中小企业是经济社会发展的重要力量,他们对就业、经济增长和创新发挥着重要作用。然而,中小企业信用评价面临各种挑战,比如,中小企业融资难的原因就在于信用评价难&#…

nginx-QPS限制

漏桶算法: 通过nginx配置实现QPS限速。 #设置请求并发量 qps1,不设置burst,会同时处理并发的请求,但是由于我们只设置了1个qps,所以同一时间内的请求,只有一个是正常的,其他都是失败的。 http配…

andriod studio 手机模拟器中的文件导出方法

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录 阅读前请看一下:我是…

让你的编程之路更加顺畅——推荐一款前端编程神器

引子:在当今的数字化时代,编程已经成为一种不可或缺的技能。而前端开发,作为整个应用程序的“门面”,更是需要开发人员具备优秀的网页设计和编程能力。今天,我要向大家推荐一款专门为前端开发者打造的APP,它…

leetcode LCR 007 mid. 三数之和。对撞指针解法

题目 算法 对撞指针。双指针的一种&#xff0c;特点是一前一后&#xff0c;相向而行&#xff0c;两个指针相遇时为终点 code var threeSum function(nums) {let len nums.lengthnums.sort((a,b) > a-b)// 元素不足3个, 或 最小值>0 或 最大值<0&#xff0c;不会出…

插件_创蓝图文滑动验证码

目录 [1] 准备工作[2]使用1(1) 引入验证码js(2) 定义button引入js(3)在恰当的时机调起验证图(4) 校验之后的回调 [3] 使用2(1) 引入验证码js(2) 定义Captcha构造函数引入js(3)在恰当的时机调起验证图(4) 校验之后的回调 在进行低价秒杀时需要做一个人机校验防止机器抢购&#x…

切分支解决切不走因为未合并的路径如何解决

改代码的时候改做分支了&#xff0c;本来是在另一个分支上面改代码&#xff0c;结果改到另一个放置上面&#xff0c;然后想着使用git stash进行保存&#xff0c;然后切到另外一个分支再pop&#xff0c;结果不行。 报这个错误&#xff0c;导致切不过去&#xff0c;因为我这边pop…

SpringMVC常用注解、参数传递、返回值

目录 前言 一、常用注解 二、参数传递 ​编辑 1. 基础类型String类型 2. 复杂类型 3. RequestParam 4. PathVariable 5.RequestBody 6. RequestHeader 三、方法返回值 一&#xff1a;void 二&#xff1a;String 三&#xff1a;Stringmodel 四&#xff1a;ModelAndVi…

【HCIE】01.IGP高级特性

高级特性&#xff1a;一条命令解决一个问题 OSPF快速收敛机制 发生故障重新计算拓扑的过程叫做收敛&#xff0c;设备现在本身就是PRC算法和I-SPF算法 PRC&#xff08;针对叶子节点&#xff0c;叶子代表路由&#xff09; 不需要命令配置&#xff0c;就是ospf的特性&#xff…

我国智慧燃气建设应用过程中,有哪些关键问题?

关键词&#xff1a;智慧燃气、智慧燃气系统、智能燃气、燃气智能管控、数字孪生、智慧燃气平台 国内智慧燃气建设应用过程中需要解决以下4个关键问题&#xff1a; 01 广泛生产单元的感知能力建设方面的问题 智慧燃气的核心特征是“智慧”&#xff0c;具备“三个实现”即实现…

【AI Agent】Agent的原理介绍与应用发展思考

文章目录 Agent是什么&#xff1f;最直观的公式Agent决策流程 Agent 大爆发人是如何做事的&#xff1f;如何让LLM替代人去做事?来自斯坦福的虚拟小镇架构记忆&#xff08;Memory&#xff09;反思&#xff08;Reflection&#xff09;计划&#xff08;Plan&#xff09; 类 LangC…

pycharm创建py文件时自动添加基础信息--模板

在图片中加入下面基本信息&#xff0c;这些基本信息可以自己定义&#xff1a; #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : ${DATE} ${TIME} # Author : supermps # File : ${NAME}.py # Software : ${PRODUCT_NAME} import logging import math import w…

【群智能算法改进】一种改进的鹈鹕优化算法 IPOA算法[1]【Matlab代码#57】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始POA算法2. 改进后的IPOA算法2.1 Sine映射种群初始化2.2 融合改进的正余弦策略2.3 Levy飞行策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始POA算法 此…

MySQL中分区与分表的区别

MySQL中分区与分表的区别 一、分区与分表的区别 分区和分表是在处理大规模数据时的两种技术手段&#xff0c;尽管它们的目标都是提升系统的性能和数据管理的效率&#xff0c;但它们的实现方式和应用场景略有不同。 1. 分区 分区是将一个大表分割为多个更小的子表&#xff0c…