Centos7 上部署 redis集群

一、安装前看下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

#测试是否安装成功

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

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
?

这样集群就起来了。

为了方便启动,可以放一个脚本里启动。如下脚本
[[email protected]_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


到这里就启动了redis集群

三、查看且添加新集群

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

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

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

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.

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

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

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

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

CLUSTER count-failure-reports <node_id>:列出某个节点的故障报告的长度。
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.51cto.com/holy2010/2427923

时间: 2024-10-05 22:01:12

Centos7 上部署 redis集群的相关文章

在CentOS7上部署Rabbitmq集群配置

概述 RabbitMQ是目前流行的开源消息队列系统.MQ(消息队列)是一种应用程序对应用程序的通信方法. RabbitMQ的结构图如图所示: 实现步骤 在一个集群里,有三台服务器,其中一台使用磁盘模式,另两台使用内存模式.两台内存模式的节点无疑速度更快,因此通过客户端连接访问它们.但是客户端不可能分别连接两个内存节点,肯定是通过前端反向代理去轮询分发请求如果担心前端反向代理服务器故障,可以通过Keepalived软件做一个高可用架构.而磁盘模式的节点,由于磁盘IO相对较慢,因此仅作数据备份使用.

如何在Windows上部署Redis集群和SpringBoot进行整合

一.安装Redis的Windows版本并进行配置 (1)下载链接 https://github.com/microsoftarchive/redis/releases (2)将下载后的Redis复制成6份(3主3从集群.官方推荐最低的配置了) 文件名自定义,这里我改成和端口名一样 点进去每个文件夹,修改每个Redis的 redis.windows.conf 配置文件, 1 port 6380 # 6380,6381,6382,6383,6384,6385 2 cluster-enabled ye

在CentOS7上部署 Kubernetes集群

yum -y install  etcd docker  flannel kubenetes 一般会遇到没有k8s源的问题,先 yum update -y 看是否有效,如果还是没用就创建yum 源,再安装 kubenetes 如下操作: 创建yum源 vi virt7-docker-common-release.repo 加入以下内容: [virt7-docker-common-release] name=virt7-docker-common-release baseurl=http://cb

laravel项目利用twemproxy部署redis集群的完整步骤

Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数.下面这篇文章主要给大家介绍了关于laravel项目利用twemproxy部署redis集群的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下 前言 twemproxy是twitter开发的一个redis代理proxy,Twemproxy可以把多台redis server当作一台使用,开发人员通过twemproxy访问这些redis servers 的时候不用关心到底去哪一台redi

在windows上搭建redis集群

一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端口号为 6379,那么其它5份的

在windows上搭建redis集群(redis-cluster)

一 所需软件:Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis-x64-3.2.100.zip. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端

部署redis集群

0.创建redis用户 并设置密码(可选操作) sudo useradd -g dream361 -s /bin/bash -d /home/redis -m redis echo 'redis' | sudo passwd redis --stdin 1.使用yum 安装 必须的软件包 sudo yum install wget ruby -y  # 下载包含gcc 编译工具的开发包 sudo yum groupinstall 'Development Tools' -y  2. 登录 rub

Centos7上安装Kubernetes集群部署docker

一.安装前准备 1.操作系统详情 需要三台主机,都最小化安装 centos7.3,并update到最新 cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)  角色主机名IP Master      master192.168.1.14 node1    slave-1192.168.1.15 node2slave-2192.168.1.16 2.在每台主机上关闭firewalld改用iptables 输入以下命令,关闭fire

linux上部署hadoop集群系列 基础篇

介绍 这一系列博文介绍hadoop集群的部署和安装,因为hadoop确实比较复杂,所以分为几个部分来一一介绍.大致有基础篇,HA-QJM篇,Federation篇. 正文 一.操作环境 虚拟机4台,配置基于hadoop的集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通,Ip分布为: 168.5.15.112 hadoop1(Master) 168.5.15.116 hadoop2(Slave) 168.5.15.207 hadoop3(Slave) 1