redis集群模式

今天学习 redis的集群,怎么装redis不再介绍,这里默认已经安装好了
  • 1:先创建6个文件夹,分别叫 redis6380,redis6381,redis6382,redis6383,redis6384,redis6385 命令: mkdir redis6380
  • 2:创建完成之后,将配置文件复制进去6个文件夹 命令: cp /myfile/redis-5.0.7/redis.conf redis6380
  • 3:进入6380,修改配置文件
    • 首先修改bind 为本机ip,192.168.0.1的格式
    • 修改port 为6380
    • 修改 daemonize 为 yes,以守护线程运行
    • 修改pidfile /var/run/redis_6380.pid
    • 修改logfile “/myfile/redis6380/6380.log”
    • 修改dbfilename dump6380.rdb
    • 修改dir /myfile/redis6380/
    • 修改 appendonly 为 yes
    • 修改 appendfilename “appendonly6380.aof”
    • 修改 # cluster-enabled yes,将这一行注释去掉 这里表示开启 cluster集群
    • 修改 cluster-config-file 为 nodes-6380.conf
    • 去掉注释 cluster-node-timeout 15000 这里是配置超时时间
    • 去掉注释 cluster-replica-validity-factor 10
    • 去掉注释 cluster-migration-barrier 1
    • 去掉注释 cluster-require-full-coverage yes
    • 去掉注释 cluster-replica-no-failover no
  • 返回上一级,使用命令 sed ‘s/6380/6381/g’ redis6380/redis.conf >redis6381/redis.conf 将刚才配置的文件中的所有的6380 替换为6381,并覆盖原文件;执行之后一定要进到6381的配置文件确认一下,剩下的也替换了
  • 使用 redis-server /myfile/redis6380/redis.conf 启动6个redis
  • 使用 ps -ef | grep redis 命令,查看是否启动成功(查看的时候,末尾带有 cluster)
  • 使用redis客户端配置主从,命令: redis-cli --cluster create 192.168.0.1:6380 (把所有节点填入,中间加空格) 192.168.0.1:6385 --cluster-replicas 1, 这一行命令的意思是 将这6个ip集群,最后的1表示 1主1从,生产环境要求越高,这个数字就越大,比如写3,就是让redis给我们配置成1主3从的意思;
  • 可以使用redis-cli -h 192.168.0.1 -p 6380 -c 进入6380的redis,进入之后,查看节点信息:cluster nodes
  • 可用使用 redis-cli --cluster help 查看集群相关的命令
到这里,配置集群就已经完成且可用了,下面是 线上扩容模式;
  • 线上有些时候会突然增加并发,我们可以实时扩容,命令在 redis-cli --cluster help 也可以看到
  • 首先,按照上面的步骤,新增2个 redis,并启动,假设我们 新启动的端口为6386和6387;使用命令 redis-cli --cluster add-node 192.168.0.1:6386 注意这里有空格 192.168.0.1:6380 这里写已经在集群的随意哪个端口都可以 这样6386就会默认以 主节点加入集群,6387可以 在后面增加参数 --cluster-slave --cluster-master-id 主节点id 这个主节点id需要在进入redis客户端之后,使用cluster nodes 来查看6386 的node id;
  • 重新分配槽位:上面没有提这个东西,这里说一下,redis默认有个16384长度的数组,每当我们储存数据时,会对键hash出一个1-16384的值,当我们搭建3主3从时,每个主节点默认持有三分之一的槽位,大约是5462个,然后根据hash的值来确定存入哪个节点中,现在我们新增了第四个主从节点,就需要重新分配槽位,以及将数据迁移;
  • 使用命令:redis-cli cluste reshard 192.168.0.1:6380 redis会让你输入一个数字,是问你需要分配出去多少槽位,填完之后会问你,接受这些槽位的node id是哪个;这里我要给新加入的6386分配槽位,分配16384/4的槽位,就是当我分配完成之后,这4个节点,每个都持有四分之一的节点;那么我可以 在 提示我分配多少槽位时 输入 16384/4 = 4096 ;然后接受的id 写上 6386的node id,回车之后他会提示你,可以输入all 或者 你要将哪个节点的槽位分配出去;这里直接输入all;如果你想 分配出去1000个槽位给 6386,可以在他提示你分配多少槽位时,输入1000,在他提示你将哪个 节点的槽位分配出去时,输入你想降低压力的节点id;
  • 至于缩容 我这里就不写了…自己搜吧~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值