redis 系列运维系列 -windows 集群部署

1. 所需软件

     Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem、创建Redis集群的工具redis-trib.rb

2.安装配置redis 

      下载Redis-x64-3.2.100.zip,这里不作多解析了,自己去官网找。

       把集群规划有三个节点的集群,每个节点有一主一备。理论需要6台虚拟机,实际可以通过不同端口模拟虚拟机,这里就通过端口模拟,搭建 伪集群。

      把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录使用端口号命名。

 打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置。

修改其他配置支持集群
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes

如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为  15000,那么在创建集群的时候,不会超时。
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

​​​​​​​

编写一个 bat 来启动 redis,在每个节点目录下建立 启动脚本,如第一个命名为:redis6379.start.bat,第二个脚本redis6380.start.bat,以此类推,都添加如下内容:
title redis-6380
redis-server.exe redis.windows.conf

这样就可以带配置文件启动一个redis实例,但是这样我们有6个redis实例,所以我们可以再写一个命名为redis.start.bat的总启动脚本来一次性启动刚才每个实例添加的脚本,总脚本内容如下:

start cmd /k  "g: && cd g:\redisCluster\6379 && redis6379.start.bat.bat"
start cmd /k  "g: && cd g:\redisCluster\6380 && redis6380.start.bat.bat"
start cmd /k  "g: && cd g:\redisCluster\6381 && redis6381.start.bat.bat"
start cmd /k  "g: && cd g:\redisCluster\6382 && redis6381.start.bat.bat"
start cmd /k  "g: && cd g:\redisCluster\6383 && redis6383.start.bat.bat"
start cmd /k  "g: && cd g:\redisCluster\6384 && redis6384.start.bat.bat"

有兴趣的可以百度windows的start或者cmd命令脚本命令。

3.安装Ruby

redis的集群使用  ruby脚本编写,所以系统需要有 Ruby 环境 ,下载地址 http://dl.bintray.com/oneclick/rubyinstaller/:rubyinstaller-2.3.3-x64.exe。 Downloads (rubyinstaller.org)http://dl.bintray.com/oneclick/rubyinstaller/:rubyinstaller-2.3.3-x64.exe。 

 安装时3个选项都勾选。

下载完成后打开exe文件安装就好了。

安装完成出现此内容时选1

如果出现这种东西就是网速太慢(我是开代理解决的,各位可以关掉窗口打开CMD输入

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

gem sources -l)

 使用ruby-v出现下图内容时表示安装完成

​​​​​​​

4.安装Redis的Ruby驱动redis-xxxx.gem

   4.1下载地址 https://rubygems.org/pages/download(或者redis源码里也可以找到), 下载后解压,当前目录切换到解压目录中,如 D:\Program Files\redis\rubygems-2.6.12 然后在命令行执行  ruby setup.rb。

 4.2 然后GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis。

解决gem install无反应 | 我的编程人生 (iyaozhen.com)

 安装redis依赖 

gem install redis

5.安装集群脚本redis-trib​​​​​​​

redis-trib.rb 下载_new Girl的博客-CSDN博客_redis-trib.rb下载 这位老哥这里可以下载。

         打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb,建议保存到一个Redis的目录下,例如放到6379目录下。

下载后放到这个位置中

cmd到redis-trib.rb文件中,执行

ruby redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6389 127.0.0.1:6398 127.0.0.1:6380 127.0.0.1:6390 127.0.0.1:6399 命令

(--replicas的意义是指定集群中每个master配备几个slave。)

 最后一行是问我们是否接收此分配:输入yes。

 可以看到这次分配 6380,6390,6399是master,其他三台是slave。

 至此Redis的集群搭建完成。

通过集群方式连接redis cluster

  创建bat文件,

redis-cli -c -p 6379

运行bat文件,

 使用cluster nodes命令查看集群信息:

关于slot的说明

 每个Redis集群中总共有16383个slot(简单理解为一个范围),当有一个K V键值对想被放入集群时,首先对key进行计算,看此值属于哪个slot(范围),这一对键值对就会被放入哪个master中,因为此机制,redis集群才能实现水平扩容。

 可以看到5493值被放入了6389,正好符合上面的slot。

关于Redirected说明

如果要get的值或者set的值不在此次连接的实例上,因为redis的无中心化配置,将会切换到对应的实例上。 

7. 测试--当master故障会如何?

关闭6398实例。

当6398故障时,我们任然可以从6399实例获取到k1的value

 

可以看到6399实例被提升为master了。 当6398重启时,角色将从master转为slave

如果某一节点的master-slave全部挂掉了,集群是否还可用?此时我们关掉6379与6380。

所以,此处在配置文件总的配置cluster-require-full-coverage如果设置为yes时,整个集群也会down。如果配置为no, 那么集群可以使用,该slot范围无法再存储与读取数据。有兴趣的小伙伴可以试一试。

至此已将所有的redis集群模式介绍完成,有何不妥之处还请各位指正,谢谢!x

————————————————
版权声明:本文为CSDN博主「一念花开_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43163317/article/details/121604369

————————————————
版权声明:本文为CSDN博主「SimpleSimpleSimples」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SimpleSimpleSimples/article/details/78778114

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值