创建集群,管理集群

1.创建集群
1.1 部署管理主机
- 也可以在任意一台redis服务器上
- 部署ruby脚本运行环境
- 创建管理集群脚本

[student@room9pc01 ~]$ scp /linux-soft/03/redis/redis-3.2.1.gem root@192.168.4.57:/root
[student@room9pc01 ~]$ scp /linux-soft/03/redis/redis-4.0.8.tar.gz root@192.168.4.57:/root

[root@mysql57 ~]# yum -y install rubygems	
[root@mysql57 ~]# gem install redis-3.2.1.gem   

[root@mysql57 ~]# echo $PATH
[root@mysql57 ~]# mkdir /root/bin
[root@mysql57 ~]# tar -xf redis-4.0.8.tar.gz
[root@mysql57 ~]# cd redis-4.0.8/src
[root@mysql57 src]# cp redis-trib.rb /root/bin/
[root@mysql57 src]# chmod +x /root/bin/redis-trib.rb
[root@mysql57 ~]# redis-trib.rb help

1.2 配置redis服务器
- redis集群存取数据工作原理。
当客户端存储数据到集群主机时,获取变量名与CRC16算法做hash计算,然后用计算结果与16384做取余运算,再根据余数值,把数据存储到对应的master 服务器。

[root@mysql51 ~]# vim /etc/redis/6379.conf
	815 cluster-enabled yes					#启用集群功能
	823 cluster-config-file nodes-6379.conf		#存储集群信息文件
	829 cluster-node-timeout 5000				#连接超时时间单位毫秒
:wq

[root@mysql51 ~]# /etc/init.d/redis_6379 stop
[root@mysql51 ~]# rm -rf /var/lib/redis/6379/*
[root@mysql51 ~]# ls /var/lib/redis/6379/
[root@mysql51 ~]# /etc/init.d/redis_6379 start
[root@mysql51 ~]# netstat -ntlup | grep redis-server
tcp        0      0 192.168.4.51:16351      0.0.0.0:*               LISTEN      2404/redis-server 1 
								#集群通信端口默认服务端口+10000
tcp        0      0 192.168.4.51:6351       0.0.0.0:*               LISTEN      2404/redis-server 1 	
[root@mysql51 ~]# cat /var/lib/redis/6379/nodes-6379.conf
[root@mysql51 ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> CLUSTER INFO			#查看集群信息
	cluster_state:fail
	cluster_known_nodes:1
192.168.4.51:6351> CLUSTER NODES			#查看集群节点信息
	a364e456d9479745e5f7b0250b22bd997168165e :6351@16351 myself,master - 0 0 0 connected

1.3 创建集群

[root@mysql57 ~]# redis-trib.rb create --replicas 1 192.168.4.51:6351 192.168.4.52:6352 				     192.168.4.53:6353 192.168.4.54:6354 192.168.4.55:6355 192.168.4.56:6356		
									#定义每台主库从库个数
[root@mysql51 ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> CLUSTER INFO
cluster_state:ok
cluster_known_nodes:6

1.4 查看集群
- 在管理主机查看

[root@mysql57 ~]# redis-trib.rb info 192.168.4.51:6351			#查看集群信息
[root@mysql57 ~]# redis-trib.rb check 192.168.4.51:6351			#检查集群主机角色

1.5 访问集群存取数据
命令格式: redis-cli -c -h IP地址 -p 端口 #-c集群模式

[root@mysql50 ~]# redis-cli -c -h 192.168.4.52 -p 6352
192.168.4.52:6352> set name iboy				#存数据
192.168.4.52:6352> set age 19
-> Redirected to slot [741] located at 192.168.4.51:6351	
OK
192.168.4.51:6351> set sex boy
OK
192.168.4.51:6351> set school EDG
-> Redirected to slot [8455] located at 192.168.4.52:6352
OK
192.168.4.52:6352> keys *
1) "name"
2) "school"
192.168.4.52:6352> get age					#取数据
-> Redirected to slot [741] located at 192.168.4.51:6351	
"19"
192.168.4.51:6351> keys *
1) "sex"
2) "age"

2.管理集群
2.1 向集群中添加新主机
2.1.1 添加master角色主机
要求:把Ip192.168.4.58 的redis服务器添加到集群里做主服务器 操作步骤:
1. 运行redis服务且支持集群功能
2.添加master角色的主机(192.168.4.57)
- 添加主机到集群

[root@mysql57 ~]# redis-trib.rb add-node 192.168.4.58:6358 192.168.4.52:6352
  • 分配hash slots 槽

    [root@mysql57 ~]# redis-trib.rb reshard 192.168.4.51:6351  	#重新分片
     How many slots do you want to move (from 1 to 16384)?4096   												#拿出4096个hash 槽给主机192.168.4.58
     What is the receiving node ID?  c5e0da48f335c46a2ec199faa99b830f537dd8a0   
       									#主机192.168.4.58的id值
     Source node #1:all     												#从当前所有master服务器获取hash槽
     Do you want to proceed with the proposed reshard plan (yes/no)?yes 												#同意以上配置
    
  • 查看集群信息

    [root@mysql57 ~]# redis-trib.rb info 192.168.4.58:6358
    [root@mysql57 ~]# redis-trib.rb check 192.168.4.58:6358
    
  • 访问集群存取数据

    [root@mysql50 ~]# redis-cli -c -h 192.168.4.58 -p 6358
    

    2.2.2 添加slave角色主机
    要求:把Ip192.168.4.59 的redis服务器添加到集群里做主服务器 操作步骤:
    1. 运行redis服务且支持集群功能
    2.添加slave角色的主机(192.168.4.57)
    命令格式: redis-trib.rb add-node --slave [–master-id id值] IP地址:端口 任意集群IP地址:端口
    #如果不指定主节点的Ip的话,会把新节点随机添加为从节点最少的主库

    [root@mysql57 ~]# redis-trib.rb add-node --slave 192.168.4.59:6359 192.168.4.51:6351
    

2.2 把主机移除集群
2.2.1 移除slave角色主机(192.168.4.59)
- 从服务器没有hash槽,直接移除即可
- 移除时指定从服务器id值
命令格式:redis-trib.rb del-node 任意集群Ip地址:端口 要移除的id值

[root@mysql57 ~]# redis-trib.rb del-node 192.168.4.52:6352 40a05cae93074408aecb73fdbdec0654a326635d
>>> Removing node 40a05cae93074408aecb73fdbdec0654a326635d from cluster 192.168.4.52:6352
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node. 					#会停止移除主机的redis服务

2.2.2 移除master角色主机(192.168.4.58)
1. 释放占用的hash值

[root@mgm57 ~]# redis-trib.rb  reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 
						      	    #移除4096个数槽
What is the receiving node ID?  bc5c4e082a5a3391b634cf433a6486c867cfc44b 
								   #要移动给谁的id即目标主机(这里可以随机写一个master的ID)  
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
							       #从谁那移动即源主机(这里写4.58的ID)  
Source node #2: done   		       #设置完毕
...
Do you want to proceed with the proposed reshard plan (yes/no)?yes 		#提交

2.移除主机

[root@mysql57 ~]# redis-trib.rb del-node 192.168.4.53:6353 313684a861610a61ee97af40c920c4b890e45404	

2.3 把移除的主机再次添加到集群里(master/slave)

[root@mysql58 ~]# /etc/init.d/redis_6379 start
[root@mysql58 ~]# redis-cli -h 192.168.4.58 -p 6358
192.168.4.58:6358> CLUSTER RESET				#重置集群
192.168.4.58:6358> CLUSTER INFO
cluster_state:fail
192.168.4.58:6358> exit

[root@mysql57 ~]# redis-trib.rb add-node [--slave] 192.168.4.58:6358 192.168.4.55:6355
[root@mysql57 ~]# redis-trib.rb info 192.168.4.55:6355

2.4 让1台主服务有2个从服务(让192.168.4.59做192.168.4.55的从)

[root@mysql59 ~]# /etc/init.d/redis_6379 start
[root@mysql59 ~]# redis-cli -h 192.168.4.59 -p 6359
192.168.4.59:6359> CLUSTER RESET
192.168.4.59:6359> CLUSTER INFO
cluster_state:fail
192.168.4.59:6359> exit

[root@mysql57 ~]# redis-trib.rb add-node --slave --master-id fc6f39badd672c5b79869d813fe10d0858b52833 	192.168.4.59:6359 192.168.4.51:6351
[root@mysql57 ~]# redis-trib.rb info 192.168.4.55:6355
192.168.4.55:6355 (fc6f39ba...) -> 2 keys | 4096 slots | 2 slaves.	

2.5 测试

[root@mysql55 ~]# /etc/init.d/redis_6379 stop
[root@mysql57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.51:6351 (a364e456...) -> 2 keys | 4096 slots | 1 slaves.
  1. 还原

    [root@mysql51 ~]# /etc/init.d/redis_6379 stop
    [root@mysql51 ~]# rm -rf /var/lib/redis/6379/*
    
    [root@mysql51 ~]# vim /etc/redis/6379.conf 
     #cluster-enabled yes
     #cluster-config-file nodes-6379.conf
     #cluster-node-timeout 5000
    [root@mysql51 ~]# /etc/init.d/redis_6379 start
    [root@mysql51 ~]# netstat -ntlup | grep redis
    tcp        0      0 192.168.4.51:6351       0.0.0.0:*               LISTEN      2564/redis-server 1 
    
    [root@mysql51 ~]# redis-cli  -h 192.168.4.51 -p 6351
    192.168.4.51:6351> keys *
    (empty list or set)
    192.168.4.51:6351> CLUSTER INFO
    ERR This instance has cluster support disabled
    192.168.4.51:6351>exit
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值