Redis 集群搭建(基于Linux)

一、基础环境

  1.虚拟机 VMware 15.x

  2.Linux系统,用的是Centos7的Linux系统

  3.Redis数据库版本 5.0.3

二、Redis集群简介

  1.背景

     Redis在3.0版本前只支持单实例模式,虽然支持主从模式部署来解决单点的故障,但是现在互联网企业的数据,都是几百G的数据,完全无法满足业务的需求,所以,在3.0版本以后就退出了集群模式。

  2.概念

     将多台Redis的服务器组成集群,分担负载。相对于主从架构,是进一步的扩展和升级。集群中的多台主服务器,同时对外提供读写功能,并分担整体的负载压力。而且每台主服务器都还会有自己的从服务器,作为数据的副本,也作为各自主服务器的候补(当主服务器意为崩溃,则从服务器自动变为主服务器,保证了整个集群的高可用性)

       在负载压力分担,和系统的高可用性上,集群是一个很好的解决方案。

三、集群的搭建

  1.为了我们方便的搭建集群,我们需要建立一个目录,里面放着六台服务器(一个集群至少六台服务器)。如下:

我们自己建立了一个叫  redis-cluster  的目录(图中蓝色框),在这个目录中又建立了六个子目录,用来存放Redis服务器。

  2.然后cd到我们原有的redis服务目录下,进行集群的配置修改

  ① cluster-enabled yes  开启集群的支持

  ② cluster-config-file nodes.conf 记录每个节点的信息,保存到文件nodes.conf文件中

  ③ bind 0.0.0.0 开放ip访问权限

  

  3.然后在我们已经搭建好的Redis服务目录下,将已经设置好的 redis.conf 分别复制到我们建立好的六个目录下。如下:

注:redis_conf 是我的redis服务的守护进程启动配置目录,里面放着启动进程的redis.conf配置文件,后面的我们上面的建立的目录的相对路径。

  4.在复制好六个服务器之后,再去修改每个服务的配置文件中的端口号 ,这里我们分配了8001 --8006 端口 分别给这个六个服务器。如下,

  

  注:然后依次去修改其余的五个,保证服务的端口各不相同即可。

  5. 接着,以各自的配置启动redis服务

1 redis-server 8001/redis.conf
2 redis-server 8002/redis.conf
3 redis-server 8003/redis.conf
4 redis-server 8004/redis.conf
5 redis-server 8005/redis.conf
6 redis-server 8006/redis.conf

  开启后的效果图,如下。(注:因为我已经搭建好了集群,)

  

  6.创建Redis集群

    语法:

      redis-cli --cluster create 192.168.142.131:9001 192.168.142.131:9002 192.168.142.131:9003 192.168.142.131:9004 192.168.142.131:9005 192.168.142.131:9006  --cluster-replicas 1

    解释: redis 客户端  集群  创建  。。。上面创建六个redis服务器的端口。。。 集群 一比一主从配置

  

  然后我们输入  yes   ,Redis 就会创建好集群,结果如下。

  

  7.集群说明

--cluster-replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务器,以及 slot 的大小,

    因为在 Redis 集群中有且仅有 16384 个 slot ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

    查看集群信息:192.168.134.124:7003> cluster info(查看集群信息)或cluster nodes(查看节点列表)

  集群搭建完毕,6个节点,3主,3从,只有主节点才拥有槽,并对外提供读写数据服务。注意至少有3个主节点才可以搭建集群,为每个主至少分配1个从,所以至少需要6个redis节点才可以形成集群。

  8.槽

  

  - redis cluster 默认分配了 16384 个slot,所有的主redis服务器,大概均分所有的槽
  - 存/取值时 ,redis会根据key,计算一个介于 0 – 16383之间的数字,此数字即为当前数据的槽位置,通过槽位置,决定哪个redis主服务器来负责本次访问

  Redis 集群会把数据存在一个master节点,然后在这个master和其对应的slave之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的master节点获取数据。

  只有当一个master 挂掉之后,才会启动一个对应的slave节点,充当master。

  需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

  9.集群的特性或者优点

   集群搭建后:

  - 性能的进一步提升,可以在单位时间内,吞吐更多的请求
  - 数据的存储节点,具有高可用性(集群有好的容错机制)
  集群容错:

  - 所有槽可以被覆盖时,则集群正常运行
  - 如果16384个槽,不能被所有主机完整覆盖了,则集群宕机

四、集群中节点的操作

  1.删除从节点

  

   测试效果如下:

   

  2.添加从节点

  redis-cli --cluster add-node 192.168.134.124:7000 192.168.134.124:7001 --cluster-slave --cluster-master-id 4032891b648e76b2975e5bc701e9c8a52ad6f3dd

  # 注意:加新节点之前 要清楚新节点中数据
  # add-node: 后面的分别跟着新加入的slave和集群中任意一个节点
  # cluster-slave:表示加入的是slave节点
  # --cluster-master-id:表示slave对应的master的node ID

  

  

3.删除主节点

  需要先进行重新分片:

  redis-cli --cluster reshard 192.168.142.131:9001   #后面的ip和端口 起到定位的作用

  回车执行该语句

  ①系统会提出问题  要分出多少个槽  5461

  ②系统接着提出问题 将这些槽 分给谁   回答   一个主服务器的id

  ③系统再问 从哪里获得这些槽  回答 一个主服务器的id

  ④接着执行done  和yes  开始重新分片

  

4.添加主节点

redis-cli --cluster add-node 192.168.134.124:7000 192.168.134.124:7006

              #新增加的主节点    #一个已存在的节点 定位集群的作用

将7006添加到7001所在集群中,成为一个主节点,但此时它不持有任何槽,需要重新分片

具体操作图 如下,

之后输入done 即可执行分槽。

开始后,确认,系统问你要执行吗

输入yes

然后会执行一段时间的迁移过程

原文地址:https://www.cnblogs.com/cmxbky1314/p/11748426.html

时间: 2024-07-31 06:44:10

Redis 集群搭建(基于Linux)的相关文章

Linux Redis集群搭建与集群客户端实现

我们要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群. 1.启动Redis多个实例 我们在Redis安装目录下创建目录cluster,并编写7000.conf~7005.conf 6个配置文件,这6个配置文件用来启动6个实例,后面将使用这6个实例组成集群. 以7000.conf为例,配置文件需要填写如下几项. port 7000 //端口7000,7002,7003 bind 10.93.84.53 //默认ip为127.0.0.1 需要改为其他节点机器可访

redis集群搭建及注意事项

上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出了6台机器了,然后在以这6个实例组建redis集群就可以了. 前提:redis已经安装,目录为/usr/local/redis-4.0.1 redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境..对应redis的源码src目录下的redis-trib.rb,redis-trib.r

Redis 集群搭建详细指南

先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司!为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛,「大」总有大的好.当然,如果你要有能力找一个胸大个子高就更完美了. Redis 集群简介 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis 在3.0版本前只支持单实例模式,虽然支持主从模式.哨兵模式部署来解决单点故障,但是现在互

25.redis集群搭建笔记

###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码 1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,key是用hash存在的,key分布在数组的槽位内(16384个槽位),下标从0到2^N,并且采用链表解决冲突. yum install -y ruby yum install -y rubygems 2.安装ruby和redis的接口程序 cp redis-3.0.0.gem /usr/local/ g

Redis集群搭建

Redis集群是一个提供在多个Redis节点间共享数据的程序集. Redis集群中不支持处理多个keys的命令. Redis集群通过分区来提供一定程度的可用性.在某个节点宕机或者不可用的时候可以继续处理命令. Redis集群数据分片 在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384个哈希槽(hash slot),数据库中的每个键都存在这些哈希槽中的某一个,通过CRC16校验后对16384取模

redis集群构建过程 linux windows

redis集群的构建过程 本人初次构建redis集群时,通过查阅资料整理的文档 目录 Linux Redis cluster集群方案... 1 Windows redis集群方案... 5 Linux Redis cluster集群方案 1 安装: 下载地址:http://download.redis.io/releases/ 下载版本:redis3.0.7.tar.gz [[email protected] soft]$ tar -zxzf redis-3.0.7.tar.gz [[email

Redis集群搭建与简单使用【转】

Redis集群搭建与简单使用 安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 oracle linux 6.6 ,一台(IP:192.168.31.245),一台(IP:192.168.31.210) . 安装过程 1. 下载并解压 cd /root/software wget http://download.redis.io/releases/redis-3.2.4.t

Docker redis集群搭建

Docker redis集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker 版本:18.09.1 redis 版本:redis-4.0.9 主机数量:1台 主机地址:192.168.1.81 环境2: 已搭建 Docker Swarm 管理 已搭建 Docker 私有仓库 已搭建 NFS 存储 目录结构 └── redis ├── Dockerfile ├── redis-4.0.9

[转载] Redis集群搭建最佳实践

转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大小,

Redis集群搭建最佳实践

要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大 小,硬盘大小没办法一直满足需求,而且机器纵向扩展的成本是相当高的.集群的出现就是能够让多台机器像一台机器一样工作,实现了资源的横向扩展. Redis是内存型数