发布:2022/7/31 19:55:11作者:管理员 来源:本站 浏览次数:1428
由于公司项目使用的架构不得不使用redis 集群,但公司的网络又差的让人崩溃,所以决定搭建一套本地环境,共开发使用;
本文侧重点主要在于如何搭建redis集群(cluster模式) ,看完之后,即可随意搭建N主N从的Cluster模式(最低3主)。如果不是非必须,还是建议在Linux上搭建redis 集群,windows 上某些操作还是挺受限制的,倒是不影响使用。
一、简单介绍
1,Redis集群分为三种模式,下列顺序由简单到复杂
1,主从模式 `redis实例架构:一主多从`
2,哨兵模式(sentinel模式) `建立在主从模式基础上,redis实例架构:一主多从多哨兵,哨兵的作用是监听主库挂掉之后,会选举一个从库提升为主库,从而做到高可用,所以哨兵redis实例建议不要与 主库实例与从库实例在一台服务器上`
3,cluster模式,`也就是本文主要介绍的,redis实例架构:N主N从,(最低三主)比如:3主0从(3台redis 实例),3主3从(6台redis实例),本文介绍3主0从,虽然意义不大,但是够用就好,当然你可以搭建30主60从(90个redis 实例而已)`
2,redis集群的三种模式最初目标都是一致的,无论哪种模式,首先确定需要几个redis 实例,就先启动几个redis 实例,启动过程无非就是每个实例与每个实例的配置(redis.conf)不同罢了,比如:端口肯定不能相同;当然启动时必须要指定当前实例对应的配置;由于cluster模式solt槽默认总共为16383,如果选择3主的话,在创建集群的时候将16383 平均分配给这三个redis 实例,在每次添加key是,会将key进行hash 算法之后的值对16383取余,再确定存储在哪个redis 实例之上。
本文不做过多的阐述,redis详解请点击这里:https://blog.csdn.net/miss1181248983/article/details/90056960
二、实战
1, 安装包准备
ps: ruby的版本与rubygems 的版本应大致保持一致,不要相差太大,本文采用ruby 2.7 ,rubygems 2.6,是没有问题的,相差过大可能会引起下面安装 ruby连接redis驱动失败 等问题,自行下载安装包的同学请注意!
1,下载windows版本的Redis(本文使用的 redis3.2.100,截至20210804最新版)
若您选择在github上下载,也需要将redis源码下载一份,由于创建集群使用的一个ruby脚本在redis源码中(脚本的名字叫做redis-trib.rb),在redis安装包中没有。不过在百度网盘与蓝奏云的安装包里已经已经放了redis-trib.rb 脚本;
github下载地址:https://github.com/MSOpenTech/redis/tags
百度网盘:https://pan.baidu.com/s/1ewi_yAZ3xVYDafmoZnBP3A 提取码: tafn
蓝奏云:https://wwe.lanzoui.com/iwjqIsa4gle 密码:0707
2,下载 Ruby
由于创建集群需要使用一个ruby脚本(指的就是上面所说的redis源码中存放的ruby脚本),所以需要下载ruby来执行这个脚本,这也就是windows目前 创建集群的一个弊端,在linux的redis 5.0之后的版本已经支持 使用redis-cli的方式创建集群了,目前windows还不支持
官网下载:https://rubyinstaller.org/downloads/archives/
百度网盘:https://pan.baidu.com/s/1-q0tJee7QGLXBFT_UvtYTQ 提取码: 4ibz
蓝奏云:https://wwe.lanzoui.com/izWMzsa4bfi 密码:0707
3,下载 rubygems (这个工具是用来安装 《ruby连接redis 的一个驱动》)
官网下载:https://rubygems.org/pages/download
百度网盘:https://pan.baidu.com/s/1XMbTPf3Dmw-zmdu3ZCc8WA 提取码: wpzs
蓝奏云:https://wwe.lanzoui.com/iIHUjsa4b3g 密码:0707
2, 安装并启动
1,redis 安装
将下载的redis安装包 解压到你需要安装的目录即可,便可以启动redis实例了,我的是F盘redis_cluster/bin目录,如下图:
redis 安装目录.png
2,ruby 安装
将下载的ruby 安装包解压到你想安装的目录即可;我的F盘根目录,如下图:
ruby安装目录.png
3,rubygems 安装
1,将下载的rubygems 安装包解压到你想安装的目录;我的F盘根目录,如下图
rubygems安装目录.png
2,打开dos窗口(不知道如何打开,百度搜一下),进入到rubygems的安装目录下,执行 ruby setup.rb,如下图
rubygems install.png
4,安装ruby 连接的redis 驱动
打开dos窗口,进入到ruby安装目录的bin 目录下,执行 gem install redis,出现windows 安全中心警报,允许访问即可,如下图:
image.png
5,启动全部redis 实例
本文演示创建3主架构的集群,我就只启动3个redis 实例即可,启动几个redis实例,就需要几个配置文件,你们想多创建几个也可以,大同小异;
1, 创建3个redis.conf配置文件
ps 配置中#号开头的为注释
1、redis_6301.conf
#绑定的ip,在连接是redis 实例只能使用 该ip,连接,若不是只有自己使用,建议不配置此选项 比如:redis-cli -h 127.0.0.1
#bind 127.0.0.1
#端口号
port 6301
# 日志目录,注意自己日志放在什么目录下,本文采取的是相对路径(相对于在哪层目录下执行启动redis实例 的命令)
logfile "logs\\redis_6301.log"
# 数据目录 注意自己数据放在什么目录下,找不到该目录会启动失败
dir "data\\redis_6301\\"
# 保护模式关闭,如果在未设置密码的情况下,必须关闭保护模式,集群才可以正常使用
protected-mode no
# 访问主库时的密码
#masterauth 123456
# redis 实例连接密码
#requirepass
#开启进群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes_6301.conf
# redis 节点超时 15s
cluster-node-timeout 15000
# 开启aof 持久化
appendonly yes
2、redis_6302.conf
#bind 127.0.0.1
port 6302
logfile "logs\\redis_6302.log"
dir "data\\redis_6302\\"
protected-mode no
#masterauth 123456
#requirepass
appendonly yes
cluster-enabled yes
cluster-config-file nodes_6302.conf
cluster-node-timeout 15000
3、redis_6303.conf
#bind 127.0.0.1
port 6303
logfile "logs\\redis_6303.log"
dir "data\\redis_6303\\"
protected-mode no
#masterauth 123456
#requirepass
appendonly yes
cluster-enabled yes
cluster-config-file nodes_6303.conf
cluster-node-timeout 15000
2、启动三个redis 实例
ps 启动之前,展示一下我当前的redis_cluster 安装目录结构,logs目录下为空,bin目录下为 上图 redis 安装目录.png ,注意观察下图中的路径:
redis根目录.png
data.png
conf.png
打开dos 窗口,进入redis 根目录下 ,依次执行以下命令:
bin\redis-server.exe conf\redis_6301.conf
bin\redis-server.exe conf\redis_6302.conf
bin\redis-server.exe conf\redis_6303.conf
需要打开三个 dos窗口,由于window 版本的不支持直接后台启动,启动之后且不能关闭dos 窗口,若想实现后台启动,需安装服务;本文暂不介绍安装redis 服务的启动方式。
启动.png
ps 在创建集群的时候,需要所有的redis 实例必须全部启动,并且全部可连接成功;创建集群之前每个实例与每个实例之间并没有互通;创建集群之后,才可以在存缓存的时候,经过hash 算法取模,确定存储在哪个redis实例上,在取缓存的时候,还会经过同样的算法去对应的实例上取数据;;; 别着急,下一小节贴图
6,为redis 实例创建集群
使用 redis-trib.rb 来创建集群,若你的redis 里没有redis-trib.rb这个脚本,请在源码的src目录复制一份到redis安装目录
无从库的情况:
执行命令: ruby redis-trib.rb create 127.0.0.1:6301 127.0.0.1:6302 127.0.0.1:6303
有从库的情况(下面命令6台redis 实例:3主3从,每一个主库有一个从库):
执行命令: ruby redis-trib.rb create --replicas 1 127.0.0.1:6301 127.0.0.1:6302 127.0.0.1:6303 127.0.0.1:6304 127.0.0.1:6305 127.0.0.1:6306
ps --replicas n 的意思是 为每个主库建立n个从库,所以说若想保证主库能够平均分配同样的从库实例,应满足:实例总数%(n+1) = 0
创建集群成功图.png
3,结束语
简单介绍安装redis 服务,后台启动教程
为每一个redis 实例安装服务,即可使用 net start redis6301(服务名) 来启动
安装服务的命令:
F:/reids_cluster/bin/redis-server.exe --service-install D:/redis_cluster/conf/redis.6380.conf --service-name redis6301(服务名)
卸载服务的命令():
F:/reids_cluster/bin/redis-server.exe --service-uninstall --service-name redis6301
ps 这里有一个非常需要注意的地方,就是上面安装服务的命令 指定的配置建议使用绝对路径,以及配置里的日志路径(logfile)和数据路径(dir)都建议使用绝对路径而非相对路径,不是相对路径不可以,而是需要改变原有的目录结构,而且很容易出错,不是相对路径配置对就可以了,我尝试过,觉得有bug,最终以redis-server.exe与配置文件在同层目录下安装服务成功的,反正相对路径的方式安装服务挺坑的,若配置中不配置logfile 和data的话 就不说了,随便安装服务;还有要注意的就是,若添加了logfile,那在使用redis-server.exe 期间执行的所有命令的日志,都会在logfile 配置的日志文件中,包括上面安装启动redis 服务的日志,建议 先去掉logfile,尝试安装成功之后,在卸载掉服务,配置好日志,再去安装服务。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4