redis 终于推出正式的集群解决方案,最新稳定版本v3.0.2。集群实现目的将不同的key分散到不同的节点上,传统哈希算法hash(key)%n,不适用于添加和删除节点场景,会导致大量的key无法命中,扩展比较困难。redis 没有采用一致性hash,而采用哈希槽( hash slot ) 方式来实现数据共享。
具体算法:crc16( key )%16384,从而将 16384 个槽分配至不同的节点上。
环境准备:
192.168.5.8 三个redis服务,分别监听 7000 70001 70002 端口
192.168.5.14 三个redis服务,分别监听 7003 70004 70005 端口
一. 配置
#redis.conf port 7000 #监听端口,集群间通信端口为 10000+7000 cluster-enabled yes #启用集群 cluster-config-file nodes-7000.conf #指定节点配置文件,由redis自动生成管理 cluster-node-timeout 5000 #节点间通信最大超时时间 appendonly yes #启动aof持久化模式
二. 运行
192.168.5.8 上启动三个redis实例,分别监听7000,7001,7002 三个端口。192.168.5.14启动实例监听7003,7004,7005三个端口。
mkdir cluster-test cd cluster-test mkdir 7000 7001 7002 mkdir 7003 7004 7005 cd 7000 ./redis-server redis.conf
三. 集群
cd $REDIS_SRC/src ./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005
选项 --replicas 1 为每个主机创建一个相应的备机
运行该脚本报错,没有配置ruby环境。
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
方法一:用yum安装
#yum源安装ruby yum install -y ruby yum install -y rubygems # 安装redis库 gem install redis ERROR: could not find gem redis locally or in a repository #又被墙了,可恶 #下载redis库并安装 wget https://rubygems.org/downloads/redis-3.2.1.gem gem source gem source -a http://rubygems.org/ gem install redis-3.2.1.gem运行上述命令,报错:[ERR] Sorry, can't connect to node 192.168.5.14:7000,ruby 1.8.5 (2006-08-25) [i386-linux]。运行客户端 ./redis-cli -p 7000 能正常交互,搜索发现是redis官方需要较高的ruby版本。
方法二:源码安装
既然用yum不能安装最新版本,还是老老实实用源码安装
#源码安装ruby wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz tar -xvf ruby-2.2.2.tar.gz ./configure --prefix=/usr/local/ruby-2.2.2 make && make install gem install redis运行上述命令正常,发现 7000,7001,7003 变成主机,7002,7004,7005成为备机。
[root@pclient redis]# ./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005 >>> Creating cluster Connecting to node 192.168.5.14:7000: OK Connecting to node 192.168.5.14:7001: OK Connecting to node 192.168.5.14:7002: OK Connecting to node 192.168.5.8:7003: OK Connecting to node 192.168.5.8:7004: OK Connecting to node 192.168.5.8:7005: OK >>> Performing hash slots allocation on 6 nodes... ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
测试:
$ redis-cli -c -p 7000#集群交互必须加上-c选项,否则执行出错。
redis 127.0.0.1:7000> set foo bar -> Redirected to slot [12182] located at 127.0.0.1:7002 OK redis 127.0.0.1:7002> set hello world -> Redirected to slot [866] located at 127.0.0.1:7000 OK redis 127.0.0.1:7000> get foo -> Redirected to slot [12182] located at 127.0.0.1:7002 "bar" redis 127.0.0.1:7000> get hello -> Redirected to slot [866] located at 127.0.0.1:7000 "world"
参考资料:
http://redis.io/topics/cluster-tutorial
相关推荐
Redis高可用集群Redis Cluster搭建 Redis高可用集群Redis Cluster搭建是 Redis 官方推荐的高可用性解决方案,于 3.0 版本推出。Redis Cluster 的主要用途是实现数据分片(Data Sharding),同时也可以实现高可用...
**Redis Cluster 搭建全攻略** Redis 是一个高性能的键值存储系统,而 Redis Cluster 是它的分布式解决方案,提供数据的自动分片、故障转移和高可用性。本指南将详细讲解如何完整地搭建一个 Redis Cluster,同时...
"docker 实现redis集群搭建" 一、Redis Cluster 概念 Redis Cluster 是 Redis 的分布式解决方案,旨在解决 Redis 单机中心化的问题。它将整个数据集按照分区规则映射到多个节点上,使得 Redis 能够水平扩展以应对...
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并 不支持处理多个keys... 本文,是我自己写的Redis Cluster集群搭建和配置详细步骤,包含了常用的Redis配置文件,和节点的管理等,以供大家参考.
这个压缩包文件"rediscluster配置文件.zip"包含了一系列配置文件,用于搭建一个三主三从的Redis Cluster架构。在这个架构中,每个主节点都有一个对应的从节点,确保在主节点失效时可以从其从节点接管服务,从而保持...
"Redis Cluster集群的搭建与实践" Redis Cluster集群是Redis的一个高可用性解决方案,它可以在多个Redis节点之间分配数据和状态,提供高性能和高可用性的数据存储服务。下面是Redis Cluster集群的主要知识点: 1. ...
1.先运行 createFile.py 输入宿主机IP地址,输入redis密码 2.按照控制台输出执行docker-compose up -d 启动命令 3.启动成功后执行加入集群命令即可
本压缩包提供了搭建RedisCluster所需的所有文件,包括配置文件、脚本和Redis服务器二进制文件。以下是详细步骤和相关知识点: 1. **redisserver.bat**:这是一个启动Redis服务的批处理文件,用于启动各个节点。在...
在本实战栗子中,我们将深入探讨如何搭建Redis Cluster,学习其基本概念、操作指令以及如何处理常见问题。 首先,我们需要理解Redis Cluster的核心特性。Redis Cluster采用无中心架构,每个节点都是对等的,它们...
本文将详细解析如何搭建Redis Cluster集群,包括集群的基本概念、配置、节点间通信以及常见问题处理。 一、Redis Cluster基础概念 1. 节点:每个运行Redis服务的实例称为一个节点,至少需要3个节点才能创建一个基本...
**二、RedisCluster的搭建** 1. **安装Redis**: 首先确保在所有服务器上安装了Redis服务。 2. **配置文件**: 修改每个节点的配置文件,开启集群模式,指定集群ID,设置监听端口等。 3. **初始化节点**: 使用`...
1. **安装与配置Redis Cluster**:首先,你需要搭建一个Redis Cluster,至少需要3个节点以保证容错性。每个节点都需要运行Redis服务器,并且通过特定的命令(如`redis-trib.rb`)进行集群初始化和配置。 2. **配置...
Windows下安装部署redis cluster,亲测好使,包含 安装环境,redis-3.2.1.gem,redis cluster集群实例
### Redis Cluster 部署与配置详解 #### 一、Redis Cluster 概述 Redis Cluster 是 Redis 3.0 版本引入的一项重要特性,它允许用户将 Redis 实例分组形成一个集群来提供高可用性和数据分区能力。通过这种方式,可以...
本示例“rediscluster集群demo”旨在展示如何设置和操作一个简单的Redis Cluster实例,确保在本地环境中的正确运行。 首先,Redis Cluster采用无中心架构,每个节点都是对等的,并且负责一部分数据。它通过槽(slot...
本文将深入探讨 RedisCluster 的搭建过程、基本使用方法以及如何在 SpringBoot 应用中进行集成。 首先,RedisCluster 实现了数据分片(Sharding)的概念,即将数据自动分散存储在多个节点上,每个节点负责一部分...
**RedisCluster 概述** Redis 是一款高性能的键值存储系统,它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。而 RedisCluster 是 Redis 的分布式解决方案,可以将数据分布在多个节点上,提供高可用性...
RedisCluster是Redis的一个扩展特性,它提供了数据分片和高可用性,使得Redis可以在多...通过这些工具,开发者可以在Windows环境下快速搭建Ruby环境,并利用`redis-rb` gem与RedisCluster进行高效的数据存储和检索。
本文档描述redis-cluster在centos7上面的集群搭建,从源码编译、环境准备、安装redis、修改配置文件、启动集群、关闭集群等各个地方进行详细描述不走