TIP
# 本篇:windows10本地注册Redis多服务构建Redis集群
# 目录
# 安装redis/Ruby
为什么要安装Ruby?
Redis有一个称为Redis Cluster的功能,它允许将多个Redis节点组合成一个分布式系统。Ruby在这里的角色主要是通过Redis客户端库来与Redis集群进行通信和操作数据。
安装Redis:windows下官方提供了3.0版本,这里我们使用【tporadowski】的5.0版本
redis文件结构:
注:redis 3.0版本及以上才支持集群
# redis主从复制
# 准备实例和配置
主节点配置文件:
#主节点配置文件内容 # 设置Redis端口号,默认是6379 port 6000 #端口可自定义 bind 127.0.0.1 daemonize yes #日志记录 logfile "./redis-master-slave/redis-master-6000.log"
1
2
3
4
5
6
7从节点配置文件:
port 6001 #端口可自定义 bind 127.0.0.1 daemonize yes replica-read-only yes # 从节点是否只读,yes表示只读,no表示可读写 # 开启主从复制 slaveof 127.0.0.1 6000 #日志记录 logfile "./redis-master-slave/redis-slave-6001.log"
1
2
3
4
5
6
7
8# 创建多个从节点可复制上述从节点配置内容并更改不同的端口号。
# 启动及测试
启动命令:redis-server.exe 配置文件地址 --loglevel 日志级别
#启动主节点命令
redis-server.exe ./redis-master-slave/redis-master-6000.conf --loglevel verbose
2
#启动从节点命令
redis-server.exe ./redis-master-slave/redis-master-6000.conf --loglevel verbose
2
文件目录:
在目录Redis-x64-5.0.14.1下进入cmd执行上述命令,内容如下:
至此主从复制也就配置成功了。
# 注册redis服务
为了方便,注册redis服务。
注册命令:redis-server.exe --service-install 配置文件地址 --service-name 服务名称 --loglevel 日志级别
#注册主节点6000服务
redis-server.exe --service-install ./redis-master-slave/redis-master-6000.conf --service-name redis-master-6000 --loglevel verbose
#注册从节点6001服务
redis-server.exe --service-install ./redis-master-slave/redis-slave-6001.conf --service-name redis-master-6001 --loglevel verbose
#注册从节点6002服务
redis-server.exe --service-install ./redis-master-slave/redis-slave-6002.conf --service-name redis-master-6002 --loglevel verbose
2
3
4
5
6
7
8
9
10
注册成功,打开windows服务管理,查看redis服务,可手动启动/停止服务
cmd打开执行redis-cli.exe -h 127.0.0.1 -p 6000即可启动redis主节点服务(注:需要将redis安装目录放入系统变量)
# 搭建哨兵集群
哨兵集群的搭建和主从复制类似,但是哨兵集群需要新增配置文件。
# 准备实例和配置
哨兵1配置文件:
# 哨兵sentinel实例运行的端口 port 26378 # 本地ip bind 127.0.0.1 #已守护进程运行 daemonize yes #防止通过Sentinel动态地更改脚本 sentinel deny-scripts-reconfig yes # 哨兵监听的主服务器 后面的2表示主机挂掉以后进行投票,只需要2票就可以从机变主机 sentinel monitor mymaster 127.0.0.1 6000 2 # 设置未得到主机响应时间,此处代表5秒未响应视为宕机 sentinel down-after-milliseconds mymaster 5000 # 设置等待主机活动时间,此处代表15秒主机未活动,则重新选举主机 sentinel failover-timeout mymaster 15000 # 设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数据,直到所有从机同步结束 sentinel config-epoch mymaster 2 # 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步 sentinel leader-epoch mymaster 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18哨兵2配置文件:
# 哨兵sentinel实例运行的端口 port 26379 # 本地ip bind 127.0.0.1 #已守护进程运行 daemonize yes #防止通过Sentinel动态地更改脚本 sentinel deny-scripts-reconfig yes # 哨兵监听的主服务器 后面的2表示主机挂掉以后进行投票,只需要2票就可以从机变主机 sentinel monitor mymaster 127.0.0.1 6001 2 # 其他内容复制哨兵1
1
2
3
4
5
6
7
8
9
10
11哨兵3配置文件:
# 哨兵sentinel实例运行的端口 port 26380 # 本地ip bind 127.0.0.1 #已守护进程运行 daemonize yes #防止通过Sentinel动态地更改脚本 sentinel deny-scripts-reconfig yes # 哨兵监听的主服务器 后面的2表示主机挂掉以后进行投票,只需要2票就可以从机变主机 sentinel monitor mymaster 127.0.0.1 6002 2 # 其他内容复制哨兵1
1
2
3
4
5
6
7
8
9
10
11
# 哨兵启动及测试
启动命令:redis-server.exe 哨兵配置文件路径 --sentinel
启动成功如下:
当然,你也可以将哨兵注册成服务,注册命令: redis-server.exe --service-install 哨兵配置文件路径 --service-name 服务名称 --sentinel
# cluster集群
Cluster配置文件目录:
# 准备cluster实例和配置
redis-7001.conf配置文件:
#实例运行的端口 port 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 5000 appendonly yes
1
2
3
4
5
6#注册cluster节点7001服务 redis-server.exe --service-install ./redis-cluster/redis-7001.conf --service-name redis-cluster-7001 --loglevel verbose #注册cluster节点7002服务 redis-server.exe --service-install ./redis-cluster/redis-7002.conf --service-name redis-cluster-7002 --loglevel verbose #注册其他cluster节点参考上述7001和7002
1
2
3
4
5
6
7
注册好redis后查看服务,内容如下:
- redis服务注册后,需手动启动服务
# cluster集群启动及测试
启动服务:
待完善中...
# 搭建过程中遇到的问题
- 使用redis3.0版本在启动主从复制时,遇到报错:
Invalid argument during startup: unknown conf file parameter : replicaof
原因:Redis 版本过旧,不支持replicaof参数。