Centos7 上部署 redis集群
admin
2023-01-25 06:41:13
0
一、安装前看下redis5.0版本的新特性

先看一下 Redis 5 带来的更新内容:

  1. 新的流数据类型(Stream data type) https://redis.io/topics/streams-intro
    2.新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs)
  2. RDB 现在可存储 LFU 和 LRU 信息
    4.redis-cli 中的集群管理器从 Ruby (redis-trib.rb) 移植到了 C 语言代码。执行 redis-cli --cluster help 命令以了解更多信息
  3. 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)
  4. 升级 Active defragmentation 至 v2 版本
  5. 增强 HyperLogLog 的实现
  6. 更好的内存统计报告
  7. 许多包含子命令的命令现在都有一个 HELP 子命令
  8. 客户端频繁连接和断开连接时,性能表现更好
  9. 许多错误修复和其他方面的改进
  10. 升级 Jemalloc 至 5.1 版本
  11. 引入 CLIENT UNBLOCK 和 CLIENT ID
  12. 新增 LOLWUT 命令 http://antirez.com/news/123
  13. 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语
  14. 网络层中的差异优化
  15. Lua 相关的改进:

将 Lua 脚本更好地传播到 replicas / AOF

Lua 脚本现在可以超时并在副本中进入 -BUSY 状态

  1. 引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
  2. 对 Redis 核心代码进行了重构并在许多方面进行了改进

Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本。按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的体验 —— 虽然开发团队尚未发现关于这项特性的关键错误。

此外,因为许多内部结构与 Redis 4 共享,因此在内部工作方式方面,变化不会很大。

详细更新内容请查看:

https://raw.githubusercontent.com/antirez/redis/5.0/00-RELEASENOTES

二、安装redis部分
1、环境
linux系统 centos 7.6版本
redis: redis5.0.5的 statble版本(redis-stable.tar.gz)
2、下载解压安装
#下载
wget http://download.redis.io/releases/redis-stable.tar.gz

#解压
tar xzf redis-stable.tar.gz

#进入解压文件
cd redis-stable

#编译源码
make install

#测试是否安装成功
Centos7 上部署 redis集群
启动成功表示安装成功
上面只是一个临时的启动文件,需要一直连接需要改配置文件,顺便集群的配置也一起设置了。

2、配置redis cluster集群
redis集群可以参考官网给出的教程https://redis.io/topics/cluster-tutorial

首先要复制多分redis.conf文件,修改以下配置,注意将端口号区分开

cat /data/redis-cluster/cluster-conf/7000/redis.conf | grep -v '#'

只贴出部分差异配置,其他的都用系统默认的,有需要自行更改。
配置里有不同目录的自行创建, 也可以根据你自己想要求更改不同路径下的。

bind 127.0.0.1
port 7000
pidfile /var/run/redis_7000.pid
logfile "/data/redis-cluster/redis-log/redis_7000.log"
dbfilename dump_7000.rdb
dir /data/redis-cluster/rdb/
appendonly yes

appendfilename "appendonly_7000.aof"
appendfsync everysec

mkdir -p /data/redis-cluster/cluster-conf
cd /data/redis-cluster/cluster-conf
mkdir 7000 7001 7002 7003 7004 7005
#先根据上面的配置修改一份7000/redis.conf的配置,初始的文件从redis-stable/src/redis.conf复制一份来做修改。

然后/data/redis-cluster/cluster-conf/7000/redis.conf的配置复制一份并替换不同端口目录下的配置文件

cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7001/redis.conf

cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7002/redis.conf

cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7003/redis.conf

cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7004/redis.conf

cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7005/redis.conf

然后再将对应的配置文件放入进去后 启动每个服务
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7000/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7001/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7002/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7003/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7004/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7005/redis.conf

#7000-7005服务启动成功后,使用5.0特有的redis-cli功能开启集群
/usr/local/bin/redis-cli --cluster create 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 --cluster-replicas 1
 

这样集群就起来了。

为了方便启动,可以放一个脚本里启动。如下脚本
[root@VM_0_6_centos src]# cat /data/redis-cluster/cluster-conf/start_all.sh
#!/bin/bash
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7000/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7001/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7002/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7003/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7004/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7005/redis.conf

/usr/local/bin/redis-cli --cluster create 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 --cluster-replicas 1

Centos7 上部署 redis集群
到这里就启动了redis集群

三、查看且添加新集群

相关命令参考:https://redis.io/topics/cluster-tutorial
1、查看集群里的master是哪些
redis-cli -p 7000 cluster nodes | grep master
Centos7 上部署 redis集群

2、查看集群哪些是slave
redis-cli -p 7000 cluster nodes | grep slave
Centos7 上部署 redis集群

3、查看哪些对应connected
redis-cli -p 7000 cluster nodes | grep myself
redis-cli -p 7001 cluster nodes | grep myself
redis-cli -p 7002 cluster nodes | grep myself

Centos7 上部署 redis集群

4、添加新的master和slave
先创建两个服务7006 7007的, 具体文件配置参考上面的7000-7005的
配置好对应的文件后用命令启动
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7006/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7007/redis.conf

因为上面启动没有加入到集群里,需要通过集群命令进行加入
加入集群命令
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000

另外一个新添加的slave也要加入对应的master上
#自动匹配空闲的 加入到对应的master上
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave

或者根据指定的master ID 匹配上
#set master
#redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave --cluster-master-id e508a26956ca359d1917cfd1f3dbb9a9fdd8c28f

---e508a26956ca359d1917cfd1f3dbb9a9fdd8c28f 通过redis-cli -p 7000 cluster nodes | grep master 可查看到对应7006的master id.

四、重启集群和重建集群
重启:
(保留原有集群的)重启:
不需要再执行(如/usr/local/bin/redis-cli -a 'Good' --cluster create 172.17.0.6:7000 172.17.0.6:7001 172.17.0.6:7002 172.17.0.6:7003 172.17.0.6:7004 172.17.0.6:7005 172.17.0.6:7006 172.17.0.6:7007 --cluster-replicas 1这样的)集群生成指令。

第一步:先关闭各个Redis节点。

第二步:再启动各个Redis节点即可。

(删除原有集群的)重启:
需要执行(如/usr/local/bin/redis-cli -a 'Good' --cluster create 172.17.0.6:7000 172.17.0.6:7001 172.17.0.6:7002 172.17.0.6:7003 172.17.0.6:7004 172.17.0.6:7005 172.17.0.6:7006 172.17.0.6:7007 --cluster-replicas 1这样的)集群生成指令。

第一步:先关闭各个Redis节点。

第二步:删除各个Redis安装目录下的节点配置文件nodes.conf、数据文件dump.rdb。

说明:此方式相当于重置到刚刚创建集群的时候了,所以需要删除节点配置文件nodes.conf、还需
          要删除数据存储文件dump.rdb。

五、Cluster相关的命令,现在对所有的命令所以下说明。

CLUSTER info:打印集群的信息。
CLUSTER nodes:列出集群当前已知的所有节点(node)的相关信息。
CLUSTER meet :将ip和port所指定的节点添加到集群当中。
CLUSTER addslots [slot ...]:将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER delslots [slot ...]:移除一个或多个槽对当前节点的指派。
CLUSTER slots:列出槽位、节点信息。
CLUSTER slaves :列出指定节点下面的从节点信息。
CLUSTER replicate :将当前节点设置为指定节点的从节点。
CLUSTER saveconfig:手动执行命令保存保存集群的配置文件,集群默认在配置修改的时候会自动保存配置文件。
CLUSTER keyslot :列出key被放置在哪个槽上。
CLUSTER flushslots:移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER countkeysinslot :返回槽目前包含的键值对数量。
CLUSTER getkeysinslot :返回count个槽中的键。

CLUSTER setslot node 将槽指派给指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。
CLUSTER setslot migrating 将本节点的槽迁移到指定的节点中。
CLUSTER setslot importing 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER setslot stable 取消对槽 slot 的导入(import)或者迁移(migrate)。

CLUSTER failover:手动进行故障转移。
CLUSTER forget :从集群中移除指定的节点,这样就无法完成握手,过期时为60s,60s后两节点又会继续完成握手。
CLUSTER reset [HARD|SOFT]:重置集群信息,soft是清空其他节点的信息,但不修改自己的id,hard还会修改自己的id,不传该参数则使用soft方式。

CLUSTER count-failure-reports :列出某个节点的故障报告的长度。
CLUSTER SET-CONFIG-EPOCH:设置节点epoch,只有在节点加入集群前才能设置。

其他参考文章链接:
Redis-5.0.0集群配置
https://www.cnblogs.com/aquester/p/9891465.html

redis学习之集群报错Node is not empty
https://blog.csdn.net/wudalang_gd/article/details/52153571

redis初试Not all 16384 slots are covered by nodes
https://www.cnblogs.com/dupang/p/5631007.html

Redis Cluster部署、管理和测试
https://www.cnblogs.com/zhoujinyi/p/6477133.html

参考:https://blog.csdn.net/justry_deng/article/details/89205155

相关内容

热门资讯

女子身份证丢失后名下出现“吸毒... 四川籍的庞女士定居浙江宁波多年,她怎么也没想到,因丢失身份证一事,竟让她陷入长达7年“自证清白”的困...
省农科院成功研发我省首个高粱全... 近日,记者从省农科院获悉,该院作物资源研究所、农业生物技术研究所联合石家庄博瑞迪生物,成功研制出省内...
消息称AMD与Anthropi... IT之家 7 月 22 日消息,据华尔街日报消息,AMD 与 Anthropic 达成了一项价值数百...
独家!苹果iPhone18系列... 7月22日,中国证券报记者从产业链人士处独家获悉,进入7月,苹果iPhone 18系列手机已在量产,...
29岁的党鑫蕊倒在广西泥泞山路... 7月11日晚一通叮嘱,成了父子最后的对话;几天后父亲在殡仪馆见到一身泥的儿子,才知道“他走得有多难。...
时隔一年,英国国防大臣斯特里廷... 一年前,当时还是英国卫生大臣的韦斯·斯特里廷(Wes Streeting)曾公开指责以色列犯下战争罪...
微软与Mistral宣布扩大战... 【CNMO科技消息】7月22日,据韩媒报道,微软与法国AI企业Mistral正式宣布大幅扩大双方战略...
东方空间引力一号(遥四)运载火... 本报讯 (记者袁传玺)北京时间7月22日10时54分,东方空间引力一号(遥四)·星联体号运载火箭在我...
“你的手上沾满鲜血”,美防长出... 当地时间21日,美国国防部长赫格塞思在出席国会参议院听证会时表示,根据最新估算,美国对伊朗战事的花费...
Kimi K3让美国羡慕又不甘... 北京时间7月17日凌晨,月之暗面公司发布开源大模型Kimi K3。据报道,该模型总参数规模达2.8万...