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板块

猜你喜欢

转载自blog.csdn.net/zl_momomo/article/details/81626542