redis之集群搭建 windows环境
搭建实例
1.基本配置 redis.windows.conf
搭建集群的第一件事情我们需要一些运行在 集群模式的Redis实例. 这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了.
下面是一个最少选项的集群的配置文件:
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
appendfilename "appendonly-7000.aof"
文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。
2.建立文件
要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。
首先, 让我们进入一个新目录, 并创建六个以端口号为名字的子目录, 稍后我们在将每个目录中运行一个 Redis 实例: 命令如下:
mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005
在文件夹 7000 至 7005 中, 各创建一个 redis-windows.conf 文件, 文件的内容可以使用上面的示例配置文件, 但记得将配置中的端口号从 7000 改为与文件夹名字相同的号码。
3.启动
将redis-server.exe 文件复制到redis-cluster下 ,然后在当前目录下执行
.\redis-server.exe .\7000\redis.windows.conf
启动redis服务
因为 nodes.conf 文件不存在, 所以每个节点都为它自身指定了一个新的 ID。实例会一直使用同一个 ID , 从而在集群中保持一个独一无二(unique)的名字。
[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1
搭建集群前准备
1.redis的集群工具使用 ruby脚本( redis-trib.rb )编写,所以使用该工具需要ruby语言环境的支持。
下载ruby download ,构建ruby环境(windows安装版,无需手动配置)
2.安装支持Redis的Ruby驱动,redis-4.0.01.gem文件
1)需要先下载rubygems,将rubygems解压到redis-cluster文件下
切换到F:\server\redis-cluster\rubygems-2.7.7\rubygems-2.7.7 下执行 ruby setup.rb 命令安装gem.exe文件
2)然后使用命令gem install redis 安装 redis第三方接口,使得ruby脚本能够识别redis,redis-4.0.1.gem安装成功
搭建集群的主从复制模型
使用ruby脚本文件(redis-trib.rb)构建集群
切换到redis-cluster目录
.\redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
这个命令(更多命令需要熟悉redis-trib.rb)在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:
[OK] All 16384 slots convered
这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。
我可以保持上述配置吗?选择yes
集群过程:
首先redis-trib.rb会以客户端的形式尝试连接所有的节点,并发送PING命令以确定节点能够正常服务。如果有任何节点无法连接,则创建失败。同时发送 INFO 命令获取每个节点的运行ID以及是否开启了集群功能(即cluster_enabled为1)。 准备就绪后集群会向每个节点发送 CLUSTER MEET命令,格式为 CLUSTER MEET ip port,这个命令用来告诉当前节点指定ip和port上在运行的节点也是集群的一部分,从而使得6个节点最终可以归入一个集群。
然后redis-trib.rb会分配主从数据库节点,分配的原则是尽量保证每个主数据库运行在不同的IP地址上,同时每个从数据库和主数据库均不运行在同一IP地址上,以保证系统的容灾能力
3主3从,当1个主故障,大家会给对应的从投票,把从立为主,若没有从数据库可以恢复则redis集群就down了。
测试
登录任意一节点 .\redis-cli.exe -c -h 127.0.0.1 -p 7002 (-c 表示集群)
cluster info 查看集群信息
cluster nodes 查看所有节点信息
参考
redis文档 Cluster板块
推荐阅读
-
Spring学习之开发环境搭建的详细步骤
-
Windows上使用virtualenv搭建Python+Flask开发环境
-
怎么在Windows系统中搭建php环境
-
python框架flask入门之环境搭建及开启调试
-
详解webpack4.x之搭建前端开发环境
-
nginx+apache+mysql+php+memcached+squid搭建集群web环境
-
详解CentOS 6.5搭建Redis3.2.8单机分布式集群
-
Windows下搭建PHP开发环境(Apache+PHP+MySQL)
-
CentOS下RabbitMq高可用集群环境搭建教程
-
Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法