`
阅读更多

      通常情况下为了redis的高可用,我们一般不会使用redis的单实例去运行,一般都会搭建一个 redis 的集群去运行。此处记录一下 redis5 以后 cluster 集群的搭建。

一、需求

  1. redis5的安装
  2. 搭建一个3主3从的集群
  3. 动态的往集群中增加节点
     |- 增加一个主节点
     |- 增加一个从节点
  4. 动态的从集群中删除节点
     |- 删除一个从节点
     |- 删除一个主节点

二、前置知识

  1. 1、在 redis5 之后,redis cluster 的搭建不在需要默认的ruby脚本,使用 redis-cli 命令即可完成搭建
  2. 2、创建集群的这些redis实例中都必须是空
  3. 3、在一个 redis 的集群中默认存在 16384 个哈希槽,这 16384 个哈希槽会默认分配给集群中的主节点
  4. 4、增加一个主节点,就意味着要从原来的主节点中移动部分哈希槽给新的主节点
  5. 5、删除一个主节点,就需要把该主节点分配到的哈希槽归还给别的主节点
  6. 6、在主节点之间移动哈希槽不需要停止操作,因此对集群没多大影响
  7. 7、一个集群最好有奇数个主节点
  8. 8、集群创建过程中涉及到的命令
    集群创建:redis-cli --cluster create ip:port ip:port ip:port ip:port ip:port ip:port [ip:port…] --cluster-replicas 1
            |- --cluster-replicas 1 表示每个主节点下有一个从节点
    添加一个节点:redis-cli --cluster add-node 127.0.0.1:7006
    添加一个节点作为另外一个节点的从节点:redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave
    删除一个节点 redis-cli --cluster del-node 127.0.0.1:7000 <node-id>
    连接到集群:redis-cli -c -p 访问的端口 -h 访问的机器
    查看集群中的节点:redis-cli -p 7000 cluster nodes
  9. 9、集群中的每个redis节点需要放行2个端口的访问:
       |- 正常的客户端通讯端口,比如6379
       |- 集群总线端口,总是 客户端通讯接口+10000,比如:16379,该端口主要是 集群总线进行故障检测、配置更新、故障转移等操作
  10. 10、如果redis集群中的某个主节点和与之相关的所有从节点都宕机了,那么redis集群将无法提供服务,因为我们不能再提供 这个master node 节点上的 哈希槽。
  11. 11、redis 集群不保证强一致性,这意味着在某些时候可能丢失某些写数据
     |- 因为集群中从节点复制异步的。
     |- redis 集群在绝对需要时也支持同步写入,但是这也不能保证完全的强一致性。
  12. 12、配置redis集群最小配置文件如下:
    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
  13.  13、cluster-config-file 这个配置中指定的 配置文件 由redis自动维护,我们自己不要随意修改。这个文件有redis集群实例在启动时生成
  14. 14、由于本地机器不够,因此在一台电脑上进行搭建,以不同的端口进行区分。

三、redis5安装

1、进入 /usr/local/redis目录

没有这个目录可以新建一个

2、下载redis5

wget http://download.redis.io/releases/redis-5.0.3.tar.gz

3、执行解压

 

tar zxvf redis-5.0.3.tar.gz

4、安装

cd redis-5.0.3 && make

5、查看redis是否安装成功

cd src 里面有一个 redis-server 执行这个命令即可。因为我没有执行 make install 命令所以可用的命令是在 src 目录下。

 

四、redis集群配置清单

机器 配置文件目录 客户端端口 集群端口
(自动维护)
主/从 从节点 备注
172.19.206.207 /usr/local/redis/cluster/7001 7001 17001 172.19.206.207:7004 集群总线接口我们不要去访问,此接口是集群内部通讯接口
172.19.206.207 /usr/local/redis/cluster/7002 7002 17002 172.19.206.207:7005  
172.19.206.207 /usr/local/redis/cluster/7003 7003 17003 172.19.206.207:7006  
172.19.206.207 /usr/local/redis/cluster/7004 7004 17004    
172.19.206.207 /usr/local/redis/cluster/7005 7005 17005    
172.19.206.207 /usr/local/redis/cluster/7006 7006 17006    
172.19.206.207 /usr/local/redis/cluster/7007 7007 17007 172.19.206.207:7008 集群搭建好之后加入的节点,后期会删除
172.19.206.207 /usr/local/redis/cluster/7008 7008 17008   集群搭建好之后加入的节点,后期会删除

 

1、集群中一个节点(7001的配置文件),其余节点的配置文件一样,修改一下端口即可

配置项 解释
port 7001 客户端通讯端口,redis服务器启动的端口
daemonize yes 以后台的方式运行
bind 172.19.206.207 修改成机器的ip地址,如果是在保护模式下
pidfile /usr/local/redis/cluster/7001/redis_7001.pid 当是以后台方式运行时,会产生一个pid文件
logfile /usr/local/redis/cluster/7001/redis_7001.logs 指定日志文件的路径
dir /usr/local/redis/cluster/7001/ 数据库的持久化文件保存的路径,必须是目录
appendonly yes 打开aof持久化
appendfsync everysec aof每秒写入一次
cluster-enabled yes 启用集群
cluster-config-file nodes-7001.conf 此文件由集群自动维护
cluster-node-timeout 15000 集群节点超时时间

 

启动当前节点,看是否启动成功
redis启动命令:/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7001/redis.conf
查看redis服务是否启动: ps aux | grep redis

 

2、将节点7001下的redis.conf配置文件拷贝到其他的目录中,修改掉端口

集群操作

依次启动7001-7006这6个节点
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7001/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7002/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7003/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7004/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7005/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7006/redis.conf

五、创建集群

1、集群创建命令

redis-cli cluster create host1:port1 ... hostN:portN --cluster-replicas <arg>

2、集群创建(3主3从-注意节点的顺序)

可以看到:16384个哈希槽平均分配给了3个主节点,从节点没有分配哈希槽。

 

3、向集群中设置值测试一下


 

-c 表示的是连接集群.
从上图可以看到,我们连接的是 7001 端口,但是设置值的时候,由于key(cluster)对应的哈希槽的值是14041,所以重定向到了 7003 端口上。

 

六、动态向集群中添加一个主节点并分片

添加节点命令redis-cli --cluster add-node 新节点ip:新节点port 集群中以存在的节点ip:集群中已存在的节点port
分片命令redis-cli --cluster reshard 需要分片的节点ip:需要分片的节点端口

 

1、从7001目录中复制一份redis.conf配置,并创建目录7007和7008,将7007和7008中的redis.conf中的7001都替换成7007和7008

2、启动 7007和7008

/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7007/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7008/redis.conf

3、将7007添加到集群中

命令:/usr/local/redis/redis-5.0.3/src/redis-cli add-node 172.19.206.207:7007 172.19.206.207:7001
7007要添加的节点
7001 已经存在的节点
注意:此时该节点只是作为主节点添加到了集群中,但是没有进行分片,是不可存储数据的,如果要存储数据,需要进行分片操作。
查看新加入的这个节点的信息。

 

4、为7007节点分配槽

命令redis-cli --cluster reshard 需要分配槽的ip:需要分配槽的port


 需要注意的事项见上图中

 

七、添加一个从节点

经过上一步操作,7007成为了一个主节点,但是目前还没有从节点,现在给它增加一个从节点7008。
第一步:将7008节点添加到集群中
命令:/usr/local/redis/redis-5.0.3/src/redis-cli --cluster add-node 172.19.206.207:7008 172.19.206:207:7001
第二步:进入 7008 这个节点,执行命令 cluster replicate 7007节点的id
命令:1、/usr/local/redis/redis-5.0.3/src/redis-cli -c -p 7008 -h 172.19.206.207
      2、cluster replicate 0197892b29048155077ee4d23dd5517737f40377 0197892b29048155077ee4d23dd5517737f40377为7007的节点id
经过上面2步,7008就作为了7007节点的从节点,可以执行 cluster nodes 命令查看。

八、删除一个从节点

删除从从节点:172.19.206.207:7008
命令:/usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 172.19.206.207:7008 64805713b278b00282dda3424f962d6f9e5be298 64805713b278b00282dda3424f962d6f9e5be298这个为7008节点的节点id的值

九、删除一个主节点

删除主节点稍微麻烦一点,如果主节点中存在槽,那么需要先将槽分配给其它的主节点。
删除主节点:172.19.206.207:7007

 

1、归还槽


 

2、删除节点

命令: /usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 172.19.206.207:7007 0197892b29048155077ee4d23dd5517737f40377

至此,一个redis5的集群的搭建以及简单的维护就搭建好了。

 

  • 大小: 8.6 KB
  • 大小: 30.6 KB
  • 大小: 63.2 KB
  • 大小: 111.6 KB
  • 大小: 82.7 KB
分享到:
评论

相关推荐

    redis3.0.0集群搭建

    在集群搭建过程中,Ruby的`redis-trib.rb`工具非常关键。确保你已经安装了Ruby,并通过Gem安装`redis`和`redis-trib`库: ```sh gem install redis gem install redis-trib ``` 接着,使用`redis-trib.rb`创建集群...

    新redis5.0.5集群搭建 by crj.docx

    Redis 5.0.5 集群搭建详解 Redis 是一个开源、基于内存的数据存储系统,提供了多种数据结构,如字符串、哈希表、列表、集合、有序集合等。Redis 的高性能和低延迟使其广泛应用于缓存、消息队列、数据存储等领域。...

    Redis离线集群搭建.zip

    对于Redis离线集群搭建的所需要的资源包,以及自己使用过得,确实可用的的安装的步骤(步骤是在网上找的,忘记哪位大神的,在此没用引用,抱歉),对于新手来说还是拥有比较好的教学指导作用,希望可以帮助到大家

    redis的集群搭建与简单使用

    ### Redis集群搭建与简单使用详解 #### 一、概述 Redis 集群是一种通过分区数据来实现高可用性和水平扩展的技术。通过将数据分布在多个 Redis 实例中,集群能够提供更高的性能和更大的数据存储容量。本文档将详细...

    redis集群搭建步骤.docx

    Redis 集群搭建步骤 Redis 集群搭建是 Redis 高可用性的重要组件,通过集群搭建可以实现高可用性和扩展性。在本文档中,我们将介绍 Redis 集群搭建的详细步骤。 1.1 Redis 集群说明 Redis 集群是 Redis 的一种高...

    redis集群搭建手册.docx

    **Redis集群搭建手册** Redis,全称Remote Dictionary Server,是一种高性能的键值对数据库,以其丰富的数据类型、高效的内存管理以及支持持久化等特性,在分布式系统中被广泛应用于缓存、消息中间件以及数据存储等...

    redis3集群搭建

    #### 三、Redis3集群搭建步骤 ##### 1. 配置Redis3集群模式 - 在Redis3的配置文件中启用集群模式: ```ini # 开启集群模式 cluster-enabled yes # 运行过程中集群信息保存的文件名 cluster-config-file nodes...

    redis集群搭建步骤

    Redis 集群搭建步骤 Redis 集群搭建是指将多个 Redis 服务器组合成一个集群,以提高系统的可用性和可扩展性。在这个步骤中,我们将详细介绍如何搭建一个 Redis 集群,包括虚拟机的准备、主从关系配置和查看集群信息...

    redis windows集群搭建

    总之,Redis Windows集群搭建涉及多个步骤,包括安装Ruby环境、安装Redis gem、下载Redis服务器、初始化集群以及启动和验证集群状态。这个过程需要对Redis的基本原理和操作有一定的理解,但完成后,你将拥有一个能够...

    阿里云公网redis集群搭建以及java访问redis集群

    一、阿里云公网Redis集群搭建步骤 1. 登录阿里云控制台:首先,你需要拥有一个阿里云账号,登录到阿里云管理控制台。 2. 创建Redis实例:在控制台中,找到“数据库服务”分类,点击“Redis”进入Redis产品页面。...

    Redis集群搭建工具及教程

    搭建Redis集群的一般步骤: 1. 安装Redis:在每个节点上解压并编译源代码,根据操作系统配置环境。 2. 配置集群:为每个节点生成独一无二的配置文件,指定端口和槽分配。 3. 初始化节点:使用`redis-cli`工具启动...

    Redis集群搭建与验证.pdf

    6. Redis集群搭建步骤 接着文档详细阐述了Redis集群的搭建步骤,包括建立运行目录、复制和修改配置文件、复制运行目录、创建启动脚本等。每个节点都需要有独立的配置文件,并且要修改一些关键配置项,如端口、持久化...

    Redis分布式集群部署安装及细节.docx

    "Redis分布式集群部署安装及细节" 一、Redis集群介绍 Redis集群是一种分布式的NoSQL数据库解决方案,它可以将多个Redis节点...本文档提供了详细的Redis集群安装和配置指南,旨在帮助读者快速部署和管理Redis集群。

    redis集群搭建.doc

    Redis 集群的安装与使用详细步骤。

    Redis集群搭建步骤.docx

    总结起来,Redis集群的搭建涉及多个步骤,包括集群规划、配置文件修改、节点启动和集群创建。通过这种方式,可以构建一个具有高可用性、数据一致性和扩展性的Redis环境,以满足大规模应用的需求。同时,理解集群的...

    redis-5.0.4集群环境搭建

    搭建集群环境是一个复杂的过程,需要对Redis集群的原理有所了解,并且要能够熟练地处理在搭建过程中可能出现的问题。 首先,我们需要了解Redis集群的一些基本概念: 1. 节点(Node):集群中的一个Redis实例称为一...

    Redis集群搭建.zip

    2. **集群搭建步骤**: - **安装Redis**:首先,你需要在每台服务器上安装Redis服务,确保版本支持集群功能。 - **配置集群**:每个节点都需要一个配置文件,指定端口、集群模式、从节点等信息。 - **初始化集群*...

    Redis集群搭建及维护文档.docx

    以下是一份简化的Redis集群搭建步骤: 1. **环境准备**: - 确保你有一个兼容的Linux环境,例如CentOS 7(64位)。 - 下载Redis的源代码包,如redis-4.0.6.tar.gz。 2. **安装Redis单节点**: - 解压Redis源...

    Linux下Redis集群 搭建教程

    Redis集群搭建教程 本文档将手把手教你搭建2019年最全面的Redis集群环境。下面将详细介绍搭建过程中的每一个步骤,并提供详细的命令和配置文件修改方法。 一、Redis集群搭建前的准备工作 在开始搭建集群之前,...

Global site tag (gtag.js) - Google Analytics