redis集群搭建管理入门

redis集群入门

192.168.1.11-16

[root@test ~]# rpm -q gcc || yum -y install gcc
[root@test ~]# tar -zxvf redis-4.0.8.tar.gz   	#上传
[root@test ~]# cd redis-4.0.8/
[root@test redis-4.0.8]#  make && make install
[root@test redis-4.0.8]# ./utils/install_server.sh   //初始化,一路enter
[root@test ~]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@test ~]# vim /etc/redis/6379.conf
70   bind  192.168.1.11
93   port  6379
[root@test ~]# /etc/init.d/redis_6379  start 
[root@test ~]# ss -ntulp | grep 6379
tcp    LISTEN     0      128    192.168.1.11:6379  *:*    users:(("redis-server",..
[root@test ~]# vim +43 /etc/init.d/redis_6379
	$CLIEXEC -h 192.168.1.11 -p 6379  shutdown
[root@test ~]# /etc/init.d/redis_6379    stop
Stopping ...
Redis stopped

配置集群配置信息11-16

[root@test ~]# vim /etc/redis/6379.conf				#集群配置
70   bind  192.168.1.11
93   port  6379
815  cluster-enabled yes				#启用集群功能
823  cluster-config-file nodes-6379.conf		#存储集群信息文件
829  cluster-node-timeout 5000			#超时时间(单位毫秒)
[root@test ~]# /etc/init.d/redis_6379  start 
[root@test ~]# ss -ntulp | grep 6379
tcp LISTEN   0 128 192.168.1.11:16379 *:* 	# 集群端口=默认端口+10000               
tcp LISTEN   0 128 192.168.1.11:6379  *:*  
[root@test ~]# redis-cli -h 192.168.1.11 -p 6379
192.168.1.11:6379> cluster info				#查看集群信息 
cluster_state:fail

2、配置管理主机57
1)管理机57创建管理集群脚本redis-trib.rb

[root@admin ~]# yum -y install rubygems ruby      #gem 环境
[root@admin ~]# gem install redis-3.2.1.gem				#上传,gem命令安装
[root@admin ~]# mkdir /root/bin
[root@admin ~]# tar -xf redis-4.0.8.tar.gz				#上传
[root@admin ~]# cp /root/redis-4.0.8/src/redis-trib.rb  /root/bin    #创建管理集群脚本
[root@admin ~]# chmod +x /root/bin/redis-trib.rb
[root@admin ~]# redis-trib.rb  help					#查看命令帮助,能查看ok

2)ruby脚本常用命令格式

redis-trib.rb  <command> <options> <arguments..…>
create							#	创建集群 	
check							#	检查集群 
info							#查看集群信息 						
reshard						#重新分片 
del-node						#删除主机 					
add-node --slave			#添加slave主机 
add-node					#添加master主机 			
rebalance					#平均分配hash slots

3)集群的工作过程(理论)

集群设置16384个槽,范围0-16383。创建集群时会平均的分片给3台主服务器
51				52 			53  
0-5460、5461-10922、10923-16383
向集群中存储数据或查询数据会自动调用集群算法crc16,通过算法计算后得到一个计算结果根据计算结果存储数据。
set  school  tarena    -->   CRC16  -->  槽段号23   -->51主机槽范围
槽段号23随机,可重复槽段。值对于存储位置有影响。原则上内存大,存储key不限个数,集群中slot范围越大的主机 存储数据的概率就越大,

3、创建集群: redis-trib.rb create --replicas

默认选定前3个做主服务器,从服务器可定义,总台数是3的倍数 redis-trib.rb create --replicas 1 代表每个主设置的从服务器个数

[root@admin ~]# redis-trib.rb  create  --replicas 1 192.168.1.11:6379 192.168.1.12:6379 192.168.1.13:6379 192.168.1.14:6379 192.168.1.15:6379 192.168.1.16:6379
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.11:6379
192.168.1.12:6379
...
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.				#集群创建完成提示
若集群搭建失败,或错误,
6台机器停服务,删除数据,rm  -rf   /var/lib/redis/6379/*
起redis服务,重新执行redis-trib.rb命令搭建redis集群

4、在管理主机查看集群统计信息

[root@admin ~]# redis-trib.rb  info  192.168.1.11:6379  #集群中任意主机:端口
192.168.1.11:6379 (6802ec5f...) -> 0 keys | 5461 slots | 1 slaves.
192.168.1.12:6379 (fe8a729b...) -> 0 keys | 5462 slots | 1 slaves.
192.168.1.13:6379 (4425a88c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
[root@admin ~]# redis-trib.rb check 192.168.1.11:6379  #集群详细信息 主 从 id slots 

5、在Redis服务器本机查看集群信息|

[root@rd1 ~]# redis-cli  -h 192.168.1.11 -p 6379
192.168.1.11:6379> cluster info
cluster_state:ok				
cluster_known_nodes:6	
cluster_size:3				
192.168.1.11:6379> cluster nodes			
192.168.1.11:6379> info replication			#查看主机主从关系

6、客户端访问集群、测试
在客户端可以连接集群中任意一台redis服务器

[root@admin ~]# redis-cli  -h 192.168.1.11 -p 6379
192.168.1.11:6379> set school tarena  #登陆本机存储数据,不提示
OK
192.168.1.11:6379> set name tarena
-> Redirected to slot [5798] located at 192.168.1.12:6379  #存储提示
OK

[root@rd2 ~]# redis-cli  -h 192.168.1.12 -p 6379
192.168.1.12:6379> keys *
1) "name"

7、测试集群的高可用功能
把任意1台mater角色的服务器的redis服务停止,对应的slave服务器会自动升级为master,并接管 hash slots,服务启动后会自动加入集群,并自动同步宕机期间的数据。master宕机后对应的slave自动被选举为master原master启动后会自动配置为当前master的slave

[root@admin ~]# redis-trib.rb  info   192.168.1.11:6379 #查看集群信息
[root@rd3 ~]# redis-cli -c -h 192.168.1.13 -p 6379 shutdown 
5000毫秒后,53的从自动升级为主,继承hash槽
[root@rd3 ~]# ss -utnlp | grep redis-server
[root@admin ~]# redis-trib.rb  info  192.168.1.:6379  #集群中任意主机:端口
192.168.1.11:6379 (6802ec5f...) -> 0 keys | 5461 slots | 1 slaves.
192.168.1.12:6379 (fe8a729b...) -> 0 keys | 5462 slots | 1 slaves.
192.168.1.14:6379 (4425a88c...) -> 0 keys | 5461 slots | 0 slaves.
[root@rd2 ~]# redis-cli  -h 192.168.1.12 -p 6379
192.168.1.12:6379> CLUSTER NODES
192.168.1.13:6379 disconnected

[root@rd3 ~]# /etc/init.d/redis_6379 start
[root@rd2 ~]# redis-cli  -h 192.168.1.12 -p 6379
192.168.1.12:6379> CLUSTER NODES
192.168.1.13:6379 connected

管理集群(新增节点)
基础安装redis服务,基础配置集群配置

[root@rd8 ~]# redis-cli -h 192.168.1.18 -p 6379
192.168.1.18:6379> cluster info
cluster_state:fail

1、添加master主机步骤
添加时不指定主机角色,默认新主机被选为master。添加的master主机,需手动分配solts(槽)才能使用
分配hash槽(slots)重新分片,流程如下
移出hash槽的个数,接收hash槽主机ID,移出hash槽主机ID,同意配置 #初次分槽(有0slots机器)需均分

添加master节点

[root@admin ~]# redis-trib.rb  add-node 192.168.1.18:6379 192.168.1.11:6379
[OK] New node added correctly.
[root@admin ~]# redis-trib.rb  info 192.168.1.11:6379
192.168.1.18:6379 (49f58436...) -> 0 keys | 0 slots | 0 slaves.   没有slots
[OK] 3 keys in 4 masters.

重新分槽

[root@admin ~]# redis-trib.rb  reshard 192.168.1.11:6379   #集群中的任意主机
...
M: 49f584368bac1370383b6ba063546dd3a37834fa 192.168.1.18:6379  slots: (0 slots) master
...#49f5843...是18nodeID
How many slots do you want to move (from 1 to 16384)?  4096   #分4096个
What is the receiving node ID? 49f584368bac1370383b6ba063546dd3a37834fa  #这里是18nodeID
Source node #1:all  		#从所有的集群取slots
Do you want to proceed with the proposed reshard plan (yes/no)? yes
[root@admin ~]# redis-trib.rb  info 192.168.1.11:6379
192.168.1.18:6379 (49f58436...) -> 1 keys | 4096 slots | 0 slaves.   

再次分槽:从12上拿1000个槽给18

[root@admin ~]# redis-trib.rb  reshard 192.168.1.11:6379  
How many slots do you want to move (from 1 to 16384)?  1000
What is the receiving node ID? 49f584368bac1370383b6ba063546dd3a37834fa  #58接收
Source node #1:52的 id  
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes

添加slave角色的Redis服务器

[root@admin ~]# redis-trib.rb  info 192.168.1.11:6379
192.168.1.18:6379 (49f58436...) -> 1 keys | 4096 slots | 0 slaves.   #无从
[root@admin ~]# redis-trib.rb  check 192.168.4.51:6351
M: 49f584368bac1370383b6ba063546dd3a37834fa 192.168.1.18:6379  #查看58的id
[root@admin ~]# redis-trib.rb  add-node --slave --master-id 49f584368bac1370383b6ba063546dd3a37834fa 192.168.1.19:6379 192.168.1.18:6379      
#指定主服务器的id,否则自动添加到从最少的主服务器
OK] New node added correctly.

3、删除集群中已有的master角色Redis服务器

1、释放占用的hash槽
移出hash槽个数,接收hash槽主机ID,移出hash槽主机ID,同意配置yes

[root@admin ~]# redis-trib.rb  del-node 192.168.1.11:6379
[ERR] Node 192.168.4.51:6351 is not empty! Reshard data away and try again.
[root@admin ~]# redis-trib.rb  info 192.168.1.11:6379
192.168.1.11:6379 (6802ec5f...) -> 0 keys | 4096 slots | 0 slaves.  #4096个槽
[root@admin ~]# redis-trib.rb  reshard 192.168.1.11:6379   #重分移槽
M: 6802ec5fedc2e95c5e59b3038aa88ab538683ab7 192.168.1.11:6379
M: fe8a729bcf3160e1f39a7e15dfa487001c0e5c92 192.168.1.12:6379
How many slots do you want to move (from 1 to 16384)? 4096    
What is the receiving node ID? fe8a729bcf3160e1f39a7e15dfa487001c0e5c92  #1.12ID
Source node #1:6802ec5fedc2e95c5e59b3038aa88ab538683ab7
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes
[root@admin ~]# redis-trib.rb  info 192.168.1.11:6379
192.168.1.11:6379 (6802ec5f...) -> 0 keys | 0 slots | 0 slaves.  #确认无slots

2、移除主机
从服务器没有hash槽,直接移除即可。 移除时指定从服务器id值

[root@admin ~]# redis-trib.rb  del-node 192.168.1.11:6379
S:  495f49905fc71cc3932e0fc7d6319d79c7d319ed  192.168.1.15:6379
[root@admin ~]# redis-trib.rb  del-node 192.168.1.11:6379 495f49905fc71c....  #ID
>>> Removing node 495f49905fc71cc3932e0fc7d6319d79c7d319ed from cluster 192.168.1.15:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.     #会停止移除主机的redis服务
[root@admin ~]# redis-trib.rb  check  192.168.1.15:6379   #55已不在集群里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值