0
点赞
收藏
分享

微信扫一扫

Redis-Cluster-搭建

ZSACH 2022-05-24 阅读 53

官方地址:​​https://redis.io/topics/cluster-tutorial​​

为 Cluster 启动 6 台 Redis 服务器,准备 6 台 Redis 服务器,下载 Redis 服务器:​​https://github.com/MicrosoftArchive/redis/releases​​

Redis-Cluster-搭建_服务器

CV 复制 6 台出来,修改服务器配置:

Redis-7000

port 7000                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7000.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

Redis-7001

port 7001                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7001.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

Redis-7002

port 7002                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7002.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

Redis-7003

port 7003                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7003.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

Redis-7004

port 7004                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7004.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

Redis-7005

port 7005                            # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7005.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间

注册服务器进程

redis-server.exe --service-install redis.windows-service.conf --service-name Redis7000
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7001
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7002
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7003
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7004
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7005

启动相关 Redis 服务器

Redis-Cluster-搭建_服务器_02

测试读写

Redis-Cluster-搭建_redis_03

让 6 台 Redis 服务器相互握手

redis-cli -h 127.0.0.1 -p 7000 cluster nodes
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7002
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7003
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7004
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7005

Redis-Cluster-搭建_端口号_04

在如上握手的脚本当中,你可以观察发现,只有 7000 服务器与其它 Redis 服务器一一进行了握手,那么还需要 7001 与其它服务器在重复进行握手一次嘛,答:其实是不需要的,这个原理其实就像现实生活当中的认识新朋友原理很像,假如:​​赵六​​​ 认识 ​​张三​​​, 张三认识 ​​李四​​​ 和 ​​王五​​, 那么通过张三就可以让赵六、李四、王五相互认识。

Redis-Cluster-搭建_redis_05

测试读写

Redis-Cluster-搭建_端口号_06

给分片服务器分配槽

分别给不同的服务器进行分配槽的时候需要执行如下的指令进行一一分配,那么有 ​​16383​​ 那么岂不是疯了吗,是吧,这个时候呢,就有了下方的 windows 脚本的出现。

redis-cli -h 127.0.0.1 -p 7000 cluster addslots 0
redis-cli -h 127.0.0.1 -p 7001 cluster addslots 5462
redis-cli -h 127.0.0.1 -p 7002 cluster addslots 16383

这样子就不需要我们人为的去进行一一分配了,交给机器即可:

addslots.bat

@echo off
for /l %%i in (0,1,5461) do (
redis-cli -h 127.0.0.1 -p 7000 cluster addslots %%i
)
pause

创建如上脚本文件,然后拖拽到对应的目录当中去然后在点击文件运行执行即可:

Redis-Cluster-搭建_端口号_07

Redis-Cluster-搭建_redis_08

关于 7001 与 7002 同上即可,改一下脚本当中的 Redis ​​端口号​​​ 与分配的 ​​范围​​,然后依次执行分配好即可:

7001:

@echo off
for /l %%i in (5462,1,10991) do (
redis-cli -h 127.0.0.1 -p 7001 cluster addslots %%i
)
pause

7002:

@echo off
for /l %%i in (10992,1,16383) do (
redis-cli -h 127.0.0.1 -p 7002 cluster addslots %%i
)
pause

分配了之后在查看所分配的槽:

Redis-Cluster-搭建_端口号_09

测试:

Redis-Cluster-搭建_服务器_10

去 7002 当中进行设置存储结果如下:

Redis-Cluster-搭建_端口号_11

完毕,接下来就是开始搭建分配主从关系了。

分配主从关系

redis-cli -h 127.0.0.1 -p 7000 cluster nodes

Redis-Cluster-搭建_redis_12

redis-cli -h 127.0.0.1 -p 7003 cluster replicate 7000node-id
redis-cli -h 127.0.0.1 -p 7004 cluster replicate 7001node-id
redis-cli -h 127.0.0.1 -p 7005 cluster replicate 7002node-id

Redis-Cluster-搭建_redis_13

分配之后的结果如下:

Redis-Cluster-搭建_redis_14

测试自动保证高可用性

打开 windows 的服务管理页面将 redis7000 服务关闭,然后在查看 Redis-Custer 当中的主从结构即可测试:

Redis-Cluster-搭建_redis_15




举报

相关推荐

0 条评论