windows下redis cluster的搭建和使用

一.准备工作

1.下载redis,我这里使用的是windows 64位的redis-3.0.504。需要下载Source code (zip)和Redis-x64-3.0.504.zip这两个文件。
2.Redis-x64-3.0.504.zip是redis编译好的exe可执行文件

文件 说明
redis-benchmark.exe 测试redis性能工具
redis-check-aof.exe 检查aof文件工具
redis-check-dump.exe 检查rdb文件工具
redis-cli.exe 命令行窗口工具
redis-server.exe redis服务器

3.Source code (zip)是redis源码文件,这个文件主要是使用其中src文件下的redis-trib.rb文件
4.redis-trib.rb文件是用ruby写的redis cluster的工具,redis集群的所有操作都可以通过该工具来完成
5.对bat文件的编写要有一定的了解

二.开始搭建

1. redis.conf配置(只写出我修改了的属性)

属性 说明
port 7001 端口为7001
save 300 10 300秒有10条记录改变了,则将数据保存入dump.rdb
dir ./data .rdb、.aof、nodes.conf文件存放地址为与redis-server同级下的data文件夹
masterauth 123456 slave连接主的密码
repl-backlog-size 64mb repl-backlog-size过小,会导致主从节点拉复制失败,因为全量复制的时候,父节点的更新(应用更新,主动过期删除等)会临时存放在backlog中待全量复制完成后增量发到子节点,必须为此保留足够的空间。
repl-timeout 180 slave和master之间的复制超时时间,默认为60s, 推荐设置为180s
requirepass 123456 redis访问密码,masterauth要与这个设置一致
appendonly yes 开启aof文件保存
cluster-enabled yes 开启redis集群
cluster-config-file nodes.conf cluster节点配置文件
cluster-node-timeout 15000 集群中的节点能够失联的最大时间,超过这个时间,该节点就会被认为故障。
client-output-buffer-limit (class) (hard limit) (soft limit) (soft seconds) class : 客户端种类,normal、slave、pubsub。
– mormal:普通的客户端
– slave: 从库的复制客户端
– pub/sub: 发布与订阅的客户端的
hard limit: 缓冲区大小的硬性限制。
soft limit: 缓冲去大小的软性限制。
soft seconds: 缓冲区大小达到了(超过)soft limit值的持续时间。
限制分配的缓冲区的大小,防止内存无节制的分配。参数的默认值都为0,意思是不做任何限制。

2. 创建redis集群文件夹

1.先创建一个主文件夹,然后以端口号为名称创建6个文件夹,官方文档中提到过

强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

2.我的目录结构如图(cmd中执行 tree /f 出现当前文件的目录结构)

└─redis cluster
    │  master-ip-port.properties--------主要配置文件
    │  node-add.bat---------------------调用redis-trib.rb的add-node命令创建redis cluster扩展cluster
    │  node-check.bat-------------------调用redis-trib.rb的check命令检查redis cluster
    │  node-del.bat---------------------调用redis-trib.rb的del-node命令删除redis cluster节点
    │  node-fix.bat---------------------调用redis-trib.rb的del-node命令检查redis cluster
    │  node-reshard.bat-----------------调用redis-trib.rb的reshard命令重新分片redis cluster的slots(槽点)
    │  node-slave-add.bat---------------调用redis-trib.rb的add-node命令添加master的slave
    │  remove-data-conf.bat-------------删除当前文件夹中所有以"master-"为前缀命名的文件夹中启动配置文件和data文件夹下文件的命令文件
    │  startup-allmaster.bat------------启动当前文件夹中所有以"master-"为前缀命名的文件夹中的redis实例的命令文件
    │  startup-cluster.bat--------------调用redis-trib.rb的create命令创建redis cluster
    │
    ├─master-7001
    │  │  redis-server.exe
    │  │  redis.conf--------------------启动配置文件
    │  │  startup-master.bat------------单个启动redis实例文件
    │  │
    │  ├─conf
    │  │      redis.conf----------------原始配置文件
    │  │
    │  └─data
    │          dump.rdb  
    │          nodes.conf
    │
    ├─master-7002
    │  。。。。。
    ├─master-7003
    │  。。。。。
    ├─master-8001
    │  。。。。。
    ├─master-8002
    │  。。。。。
    ├─master-8003
    │  。。。。。
    ├─redis-stat-------------------------监控redis状态的工具
    │      help.bat
    │      master-ip-port.properties-----监控配置文件,可以直接复制主配置文件替换
    │      redis-stat-0.4.14.jar---------监控工具jar包
    │      startup-monitor.bat-----------启动文件
    │
    ├─Redis-x64-3.0.504------------------备用的redis可执行文件文件
    │  。。。。。
    ├─Ruby24-x64-------------------------ruby安装文件,redis-trib.rb放在其中的bin文件夹下,免去安装ruby的步骤
    │  。。。。。

3. 使用方法

1.master-ip-port.properties配置文件参数说明

参数 说明 使用该参数的bat文件
master* 各redis实例的ip和port startup-cluster.bat
node-slave-add.bat
node-del.bat
node-check.bat
node-add.bat
replicas 调用redis-trib.rb的create命令的replicas参数,即每个master的slave个数 startup-cluster.bat
add-node* 扩展redis cluster时的主节点的ip和port node-add.bat
add-slave-node* 从节点的ip、port和主节点的node-id node-slave-add.bat
del-node-id* 要删除的节点的node-id node-del.bat

有*的参数表示可以配置多个,当执行bat文件时会循环参数执行命令

2.redis cluster启动执行顺序

  • 修改master-ip-port.properties中master*
  • remove-data-conf.bat(第一次启动可以不执行此文件)
  • startup-allmaster.bat
  • startup-cluster.bat

3.增加节点执行顺序

  • 修改master-ip-port.properties中add-node*
  • node-add.bat
  • 修改master-ip-port.properties中add-slave-node*
  • node-slave-add.bat
  • node-reshard.bat

node-reshard.bat执行增加时输入参数

  • 第一个:要为添加节点的添加多少个slots
  • 第二个:添加节点的node-id
  • 第三个:all或者目标节点的node-id

在执行添加重新分片时必须注意事项

  • 分片的slots很少,官方举例在写负载情况下只分片了100个slots
  • 分片的slots很多时,需要redis中没有值时才会成功,题主实践过分片2000,在有值情况下会报如下错误


    windows下redis cluster的搭建和使用_第1张图片

在被重新分片的节点的slots时,在某些时候会少分配一个slots,这个问题感觉时redis-trib.rb脚本问题

3.删除节点执行顺序

  • 修改master-ip-port.properties中reshard-node*,改为要删除节点的ip和port
  • node-reshard.bat
  • 修改master-ip-port.properties中del-node-id*
  • node-del.bat

node-reshard.bat执行删除时输入参数
第一个:要删除节点的slots总和
第二个:接受槽点的节点node-id
第三个到第N个:要删除的节点的node-id,最后输入done结尾

最后

附上文件的下载地址
各位老铁看了下载了都评价下,欢迎拍砖,还有如果没有分想下载的可以留下邮箱。

你可能感兴趣的:(windows下redis cluster的搭建和使用)