redis集群搭建

浅谈Redis Cluster

穿精又带淫゛_ 提交于 2019-11-27 05:57:42
数据分区 在介绍Redis Cluster之前,先简单介绍下分布式数据库的数据分区。所谓的数据分区就是将一个较大的数据集分布在不同的节点上进行储存。常见的数据分区方式:节点取余、一致性哈希、虚拟槽,下面我们来看下这几种分区方式。 节点取余 :根据key的hash值和节点数取模的方式计算出节点ID,然后向对应的节点提交数据,如下图所示。 对于这种分区方式,新增或者删除节点会造成大量的数据迁移。 假设数据集为1 2 3 … 10,那么数据分布应如下所示。 如果新增一个节点,那么数据分布会变成什么样子呢? 来看下结果对比:只有1 2 3还分布在原来的节点上,其余所有的数据都进行了迁移。在这种分区方式下,如果新增的节点时原来的节点的倍数时,迁移的节点数量量会少很多。 一致性哈希 :对于任何的哈希函数,都有其取值范围。我们可以用环形结构来标识范围。通过哈希函数,每个节点都会被分配到环上的一个位置,每个键值也会被映射到环上的一个位置,然后顺时针找到相邻的节点。如下图所示,例如key分布在range1内,那么数据存储在node2上。 对于这种分区方式,新增或者删除节点会造成数据分布不均匀。 假设数据集为1 2 3 … 12,数据范围也是1~12,那么数据分布应如下所示。 如果我们在node1和node2之间新增一个节点,那么数据分布应该变成什么样子呢? 可以看到,我们只是讲数据3进行了迁移

centos7创建redis集群一直卡在Waiting for the cluster to join

天涯浪子 提交于 2019-11-27 05:55:05
redis集群创建的时候,一直卡在Waiting for the cluster to join ....上、一直没有反应。 问题: 机器没有开放redis集群总线端口。 解决方法: 开放redis集群总线端口。 集群总线端口是redis客户端连接的端口+10000。 如:redis客户端端口是7001。 则:集群总线端口就是17001。 注意、所以redis集群机器都要放开对应的redis客户端端口和集群总线端口。 如果你是在虚拟机上搭建redis集群、那么你直接关闭防火墙即可解决 systemctl stop firewalld.service 关闭防火墙 systemctl disable firewalld 永久关闭防火墙 但如果你是在云服务器上搭建的redis集群,那么你就需要去安全组放开对应的redis集群总线端口。 来源: CSDN 作者: 逝唁 链接: https://blog.csdn.net/qq_37481017/article/details/86002454

ubuntu16.04.3配置redis5.0集群

人走茶凉 提交于 2019-11-27 05:54:25
1.创建目录 mkdir -p /usr/local/redis-cluster/{7000,7001,7002,7003,7004,7005} 2.创建文件 /usr/local/redis-cluster/7000# vi redis.conf 2.1文件内容如下: # redis后台运行 daemonize yes # redis运行的端口号 port 7000 # 指定只接收来自该ip地址的请求 bind 192.168.9.206 # 指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据 dir /usr/local/redis-cluster/7000/ # 启动集群模式 cluster-enabled yes # 集群配置文件,在集群启动时,自动创建 cluster-config-file nodes-7000.conf # 集群超时时间,节点超时多久表示宕机了 cluster-node-timeout 5000 # 开启aof持久化模式,每次写操作请求都追加到appendonly.aof文件中 appendonly yes 3.分别复制文件redis.conf到7001,7002,7003,7004,7005目录下 echo /usr/local/redis-cluster/7001/ /usr/local/redis-cluster/7002/ /usr

redis-cluster研究和使用

落爺英雄遲暮 提交于 2019-11-27 05:54:07
最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 release出来后,换掉memCache 集群. 转载请注明出处哈:http://hot66hot.iteye.com/admin/blogs/2050676 一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明: http://antirez.com/news/49 (ps:跳票了好久,今年貌似加快速度了),目前的最新版本见: https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES 作者的目标:Redis Cluster will support up to ~1000 nodes. 赞... 目前redis支持的cluster特性(已测试): 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):集群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 2:redis cluster 架构 1)redis-cluster架构图 架构细节: (1

在滴滴云上搭建 Redis-Cluster 集群

不羁岁月 提交于 2019-11-27 05:53:50
Redis-Cluster 简介 Redis 官方在 3.0 版本以后推出了 Redis-Cluster 集群版,该版本能够解决单机版 Redis 无法水平伸缩的问题,并提供去中心化、高可用的 Redis 集群服务的能力。 Redis-Custer 主要提供以下功能: 数据自动分片的能力 当集群部分节点故障或者无法与其它节点通讯的情况下,集群整体能够正常提供服务的能力 本文将主要介绍在 滴滴云 服务器上搭建 Redis-Cluster 的方法。 集群配置 1核 1G 云服务器,搭配 40G 系统盘 + 20G 数据云盘 * 3 台(此为测试使用的最小集群规模。生产环境下,建议集群整体最小核数>=集群实例数,单个 Redis 实例内存建议不超过 8G) 操作系统:Linux CentOS 7.4 建议将 Redis 持久化文件及日志文件挂载到 SSD 云盘中,以避免物理磁盘损坏的情况下 Redis 数据丢失 集群主从规划 Redis-Cluster 的每个实例支持一主多从。在生产环境下,一般给每个实例配置一主一从,并将每个主从分散到不同的主机上,这样可以最大程度避免单点故障对集群造成的影响。 以下是我们在3台主机的情况下,配置 3 主 3 从的集群规划: server1:7000(主)-> server2:7004(从) server2:7001(主)-> server3:7005

Redis Cluster集群的搭建与实践

ぃ、小莉子 提交于 2019-11-27 05:51:27
Redis Cluster集群 一、redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其redis-cluster 架构 图如下: 其结构特点: 1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 2、节点的fail是通过集群中超过半数的节点检测失效时才生效。 3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。 4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。 5、Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。 1、redis cluster节点分配 现在我们是三个主节点分别是:A, B, C 三个节点,它们可以是一台机器上的三个端口,也可以是三台不同的服务器。那么,采用哈希槽 (hash slot

Redis集群的搭建与主从复制,redis-cluster

家住魔仙堡 提交于 2019-11-27 05:51:12
注意:我是搭建的伪集群,我在一个服务器上启动了6个redis ,ip地址一致端口号不同;与搭建正式集群方法一致,只是正式集群用了6台服务器,IP地址不同,端口号一致; Redis集群的搭建 redis-cluster架构图 redis-cluster投票:容错 架构细节 : (1) 所有的 redis 节点彼此互联 (PING-PONG 机制 ), 内部使用二进制协议优化传输速度和带宽 . (2) 节点的 fail 是通过集群中超过半数的节点检测失效时才生效 . (3) 客户端与 redis 节点直连 , 不需要中间 proxy 层 . 客户端不需要连接集群所有节点 , 连接集群中任何一个可用节点即可 (4)redis-cluster 把所有的物理节点映射到 [0-16383]slot 上 ,cluster 负责维护 node<->slot<->value Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时, redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽, redis 会根据节点数量大致均等的将哈希槽映射到不同的节点 Redis集群的搭建 Redis集群中至少应该有三个节点。要保证集群的高可用

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群

这一生的挚爱 提交于 2019-11-27 03:22:55
redis cluster单机伪分布式搭建--- 3主3从3哨兵集群 最近公司引进微服务框架,之前的一台redis的预存60G已经无法满足现在的260G业务需要,经过一番考虑搭建了这套集群 . 为了方便我就用一台服务器演示,生产环境中不建议这么做(没啥用),只为记录一下过程,至于精细化的配置需要在生产中自行研究 演示环境 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) redis服务部署过程 我下载的是redis-4.0.14.tar.gz版本的包 解压安装 tar -zxvf redis-4.0.14.tar.gz make install 启动服务 ./redis-server 验证,启动客户端测试 ./redis-cli 127.0.0.1:6379> set ab b OK 127.0.0.1:6379> get ab "b" 127.0.0.1:6379> keys * "ab" "foo" 关闭redis服务 ./redis-cli shutdown 设置redis后台启动,在/usr/local/bin目录下 cp /usr/local/redis/redis-4.0.8/redis.conf ./ 修改redis.conf这个配置文件,找到

【Redis哨兵集群】

落爺英雄遲暮 提交于 2019-11-27 02:59:55
目录 开始配置主从复制 开始配置Redis Sentinel 原文: http://106.13.73.98/__/107/ @ *** 在开始之前,我们先来看看Redis的主从复制 主从复制原理: 从服务器向主服务器发送 SYNC 命令。 主服务器接到 SYNC 命令后,会调用 BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。 当主服务器执行完 BGSAVE 命令后,会向从服务器发送 RDB 文件,而从服务器则会接收并执行这个文件。 主服务器将缓冲区存储的所有写命令发送给从服务器执行。 --------- Redis主从复制使用的是RDB备份方式来同步主从服务器的数据的。 同步开始之后,通过主库命令传播的方式,主动复制方式实现。 2.8以后实现PSYNC饿机制,实现断线重连。 Redis主从复制的背景问题 Reids主从复制可将主节点数据同步给从节点,从节点此时有两个作用: 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来. 扩展主节点的读能力,分担主节点的读压力. . 一旦主节点宕机,从节点上位,那么就需要人为修改所有应用方的主节点地址(指定新的master地址),还需要命令所有从节点复制新的主节点. 这个问题很麻烦,而redis-sentinel就可以很好的解决这个问题. * Redis-Sentinel **     Redis

windows 7 搭建redis集群

回眸只為那壹抹淺笑 提交于 2019-11-26 16:52:59
准备:Redis-x64-3.2.100版本,Ruby23-x64 , rubygems-3.0.6 安装Ruby ,网上有很多教程,这里我安装过就不再安装了,大家可以去搜一下就可以了 相应的安装包到这里去下载:链接:https://pan.baidu.com/s/1sQPWIq1yyKXr_adduXUt4g 提取码:xy5n 环境搭建好了之后我们来集群的步骤及其过程 step1: 我在本地创建了这么几个目录,以端口号作为文件名, 其中redis目录的端口号对应9006 每个目录下都是 start.bat 是自己写的启动脚本,不然每次都要敲cmd命令很麻烦,start.bat的内容很简单如下: title 9000 redis-server.exe redis.windows.conf step2: title可以随便取,这里是cmd 的title而已 我们需要改一下redis.windows.conf配置文件(每个目录都要对应修改) 内容如下: 添加上这么一句,port需要修改成对应的端口,到此redis.windows.conf配置文件修改完毕。 step3: 安装Redis的Ruby驱动redis-xxxx.gem 例如: 切换到解压目录执行 ruby setup.rb。 然后GEM 安装 Redis :切换到我们step1 创建的redis安装目录,需要在命令行中,执行