04redis集群搭建

1.搭建步骤

  1. 搭建集群至少需要三个master和三个slave
    a. 按照之前创建的虚拟机,再完整克隆几个
    b. 将所有/usr/local/redis/etc/redis.conf 文件进行修改
    这里写图片描述
    c. 下载ruby : yum install ruby 和 yum install rubygems 和gem install redis (安装redis和ruby的接口)
    d. 创建集群:
    /usr/local/redis-3.0.0/src/redis-trib.rb create –replicas 1 192.168.137.3:7003 192.168.137.4:7004 192.168.137.5:7005 192.168.137.6:7006 192.168.137.7:7007 192.168.137.8:7008
    e. 查看集群信息
    netstat -tunpl | grep redis
    –replicas 1 : 配置参数,1是主节点和从节点的比例:主节点 / 从节点 = 1
    f. 连接任意客户端
    /usr/local/redis/bin/redis-cli -c -h 192.168.137.3 -p 7003 (-c表示集群模式,-p指定端口号)
    cluster info (查看集群信息) cluster nodes (查看列表)
    集群需要逐个关闭:./redis-cli -c -h 192.168.137.3 -p 7003 shutdown
    g. 补充
    当集群无法启动时,删除临时的数据文件,再次重新启动每个redis,重新构造集群环境
  1. 数据不一定存储3个主节点中的哪一个节点,但是不论在哪个主节点都会访问到你想指定的数据
  2. 取消集群的时候:将所有 etc/ 下的nodes-7001.conf 删除,之后就可以重新创建集群

2.添加节点

1.添加主节点

  1. 添加主节点
    克隆一个主节点机器,并将redis.conf像之前那样进行修改,然后启动服务并查看
  2. 使用redis-trib命令
    使用add-node,前面是新增节点,后面是已有节点
    /usr/local/redis3.0/src/redis-trib.rb add-node 192.168.1.171:7007 192.168.1.171:7001
  3. 查看集群状态
    /usr/local/redis/bin/redis-cli -c -h 192.168.1.171 -p 7001
    192.168.1.171:7001> cluster nodes
    注意:当添加节点成功以后,新增的节点不会有任何数据,因为它没有分配任何的slot(hash槽)。我们需要为新节点手工分配slot
  4. 新主节点分配slot槽(从7001主节点分配一些出来,给新的主节点)
    使用redis-trib命令,/usr/local/redis3.0/src/redis-trib.rb reshard 192.168.1.171:7001
    a. 提示一:How many slots do you want to move (from 1 to 16384)? 200
    b. 提示二:What is the receiving node ID? 382634a4025778c040b7213453fd42a709f79e28(输入心新节点的ID,好知道槽分配到哪个节点)
    c. 提示三:Do you want to proceed with the proposed reshard plan (yes/no)? yes

2. 添加从节点

  1. 还是需要执行add-node命令
    /usr/local/redis3.0/src/redis-trib.rb add-node 192.168.1.171:7008 192.168.1.171:7001
    提示添加成功后我们继续看一下集群的状态,但还是一个master节点,没有被分配任何的slot槽
  2. 执行replicate命令来指定当前节点(从节点)的主节点id为哪个
    a. 首先需要登录新加的7008节点的客户端,然后使用集群命令进行操作,把当前的7008(slave)节点指定到一个主节点下
    b. /usr/local/redis/bin/redis-cli -c -h 192.168.1.171 -p 7008
    c. cluster replicate 382634a4025778c040b7213453fd42a709f79e28 (主节点ID)
    d. OK(提示OK则操作成功)
    相当于水平扩容,数据库依旧可以使用,不会影响性能

3.删除节点

1. 删除从节点

  1. 删除从节点7008,输入del-node命令,指定删除节点ip和端口,以及节点id
    /usr/local/redis3.0/src/redis-trib.rb del-node 192.168.1.171:7008 97b0e0115326833724eb0ffe1d0574ee34618e9f
  2. 再次查看一下集群状态,如下图所示,我们已经成功的移除了7008 slave节点,另外我们发现移除一个节点以后,当前节点的服务进程也会随之销毁。可以使用ps命令查看当前的服务(ps -el | grep redis),发现少了一个运行的server,也就是刚移除的7008从节点

2.删除主节点

删除这个步骤会相对比较麻烦一些,因为主节点的里面是有分配了slot槽的,所以我们这里必须先把7007里的slot槽放入到其他的可用主节点中去,然后再进行移除节点操作才行,不然会出现数据丢失问题
1. 删除7007(master)节点之前,我们需要先把其全部的数据(slot槽)移动到其他节点上去(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能)
/usr/local/redis3.0/src/redis-trib.rb reshard 192.168.1.171:7007
a. 提示一:How many slots do you want to move (from 1 to 16384)? 199(注释:这里不会是正好200个槽)
b. 提示二:What is the receiving node ID? 614d0def75663f2620b6402a017014b57c912dad(这里是需要把数据移动到哪?7001的主节点id)
c. 提示三:Source node #1:382634a4025778c040b7213453fd42a709f79e28(这里是需要数据源,也就是我们要删除的7007节点id)
d. 提示四:Source node #2:done(这里直接输入done 开始生成迁移计划)
e. 提示五:Do you want to proceed with the proposed reshard plan (yes/no)? Yes
到此为止我们已经成功的把7007主节点的数据迁移到7001上去了,我们可以看一下现在的集群状态如下图,你会发现7007下面已经没有任何数据(slot)槽了,证明迁移成功
2. 直接使用del-node命令删除7007主节点即可
a. /usr/local/redis3.0/src/redis-trib.rb del-node 192.168.1.171:7007 382634a4025778c040b7213453fd42a709f79e28
3. 最后,我们查看集群状态,一切还原为最初始状态啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值