您的位置:首页 > 数据库 > Redis

在Windows下创建redis cluster集群

weixin_43113679 2019-05-23 22:39 76 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/90489544

https://www.geek-share.com/detail/2694185600.html
博客主里面的步骤真的很详细了,按步就班的来就没有任何问题
下面我就说说在此过程中自己不懂的和又添加的

conf文件复制

在此

port 6380       #端口号
loglevel notice    #日志的记录级别,notice是适合生产环境的
logfile "Logs/redis6380_log.txt"   #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
syslog-enabled yes                         #是否使用系统日志
syslog-ident redis6380                   #在系统日志的标识名
appendonly yes                              #数据的保存为aof格式
appendfilename "appendonly.6380.aof"    #数据保存文件
cluster-enabled yes                       #是否开启集群
cluster-config-file nodes.6380.conf		#集群节点配置文件
cluster-node-timeout 15000  		 # 集群连接超时时间
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

最后三个没有解释:下面解释一下

  1. cluster-slave-validity-factor 10:在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor)+ repl-ping-slave-period如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
  2. cluster-migration-barrier 1:#master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移。
  3. cluster-require-full-coverage yes:#集群全部的slot有节点负责,集群状态才为ok并提供服务。设置为no可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。

在把集群里的服务注册到本地服务的命令

一看有点懵逼,难道可以先注册,再conf改服务名,后来我想错了,只是全打而已,不过我还是用的我前面注册redis服务命令那一套

创建集群的命令

redis-trib.rb create --replicas 0 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

这我端口用的和博客主不一样,大家应该能看懂
redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群
replicas 0,这代表的是不创建从节(Slave),只把后面的端口创建成主节点(Master),如果改成1,就是希望每个主节点(Master)都有一个从节点(Slave),从后面的端口从选出谁是主节点谁是从节点,之后会打印出一份预想的配置出来,如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,可以指定Slave在某个Master下,现在先不涉猎

在集群已经有的情况下添加主(从)节点

在比如上面这种只有三个主节点,想再这三个的基础上添加从节点,不可能都删除重新创建吧,那也太low了
https://www.geek-share.com/detail/2675164161.html
这篇博客有你需要的增加主节点,哈希槽的分配问题,增加从节点,删除节点等。
下面我演示添加从节点

先删除以前主从的redis服务(6380,6381,6382),把这些配置成redis cluster的Slave

我用

sc delete "服务名"
没办法删除redis6380等服务,无法访问,就用的redis自带的删除服务

redis-server --service-uninstall --service-name  "服务名"


这就算删除成功了
警告:这是删除单个redis缓存的,和集群没关系,如果要删除集群的节点,请参考上面那篇博客,要不会出问题的

给集群的那三个主节点(6383,6384,6385)配置从节点

先查询已配置的主节点的详细信息,因为配置从节点需要他们的id

CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息


可以看看代表什么信息

ID IP:端口 Master/Slave 哈希值
26492edbfbd6158f0d43f992fdbe737ab84266ee 127.0.0.1:6383 master 0-5460
e8a79b4548757a54b5ff02f737e50df9a35b43f1 127.0.0.1:6384 master 5461-10922
2ef57108a9b9ba6fb46826049aab6cd704a43e05 127.0.0.1:6385 master 10923-16383

哈希值为什么这么分配我就不说了
开始配置6380,6381,6382的配置文件,和主节点的步骤一样,到在本地服务启动就停止,下面的步骤就不一样了

redis-trib.rb add-node --slave --master-id   主节点的ID    从节点IP:端口    主节点的IP:端口

这三个从节点都是执行,添加节点的博客说主节点的IP:端口可以是任何集群里的主节点的IP:端口,因为初学者,我还是把最后的主节点的IP:端口写的是前面ID的,这样可以更保险些,但是我不是说它的就是错的,大家可以试试

查询redis集群的详细信息,出现这些说明你配置成功了
再次提醒:这是添加从节点,不用担心哈希槽的问题,如果添加或者删除主节点,一定要想到哈希槽的分配问题,要不就会要不添加的主节点没用到(添加主节点),要不就会使存在集群里的数据丢失(删除主节点)

标签: