Redis的集群安装以及rehash重新迁移教程指南

1. Redis的cluster集群

在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个:

  • 性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计,而牺牲了部分的一致性、使用性。
  • 可用性:在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。
  • 水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000结点。

redis Cluster集群功能推出已经有一段时间了。在单机版的Redis中,每个Master之间是没有任何通信的,所以我们一般在Jedis客户端或者Codis这样的代理中做Pre-sharding。按照CAP理论来说,单机版的Redis属于保证CP(Consistency & Partition-Tolerancy)而牺牲A(Availability),也就说Redis能够保证所有用户看到相同的数据(一致性,因为Redis不自动冗余数据)和网络通信出问题时,暂时隔离开的子系统能继续运行(分区容忍性,因为Master之间没有直接关系,不需要通信),但是不保证某些结点故障时,所有请求都能被响应(可用性,某个Master结点挂了的话,那么它上面分片的数据就无法访问了)。

有了Cluster功能后,Redis从一个单纯的NoSQL内存数据库变成了分布式NoSQL数据库,CAP模型也从CP变成了AP。也就是说,通过自动分片和冗余数据,Redis具有了真正的分布式能力,某个结点挂了的话,因为数据在其他结点上有备份,所以其他结点顶上来就可以继续提供服务,保证了Availability。然而,也正因为这一点,Redis无法保证曾经的强一致性了。这也是CAP理论要求的,三者只能取其二。

2. 配置选项以及启动

设置3个节点,将enable-cluster 设置为yes, 修改cluster-config-file nodes-6379.conf,将其设置为不同的文件即可,无需此nodes文件存在。 
修改redis.conf配置文件的内容:

cluster-enabled yes 
cluster-config-file nodes-6379.conf

其中node-6739.conf并不要求真实存在,只要不同的redis实例不相同即可。 
然后分别启动各个redis的实例,然后查看进程: 

从图中可以发现,其中的进程后面都带有cluster的字样,标示其为cluster集群状态。 
这里启动了3个实例: 6379, 6380, 6381.

3. 设置集群节点

 这里一般需要基于redis-cli进入命令行参数,然后输入cluster meet的命令,进行cluster的注册: 
 

这里我们从6379这个实例登陆,分别注册6380, 6381两个节点。注册完成后,然后查看集群信息,可以发现其整个集群的信息为3个节点。

4. 创建shell脚本,初始化slots

创建初始化slot的脚本:


#!/bin/bash 
for i in {1..16383}; do ./src/redis-cli cluster addslots $i; done

在脚本里面总共添加16383个slot。  
修改该脚本的执行权限,执行之,即可获取相应的结果信息。

5. 查看slots的内容

cluster slots : 查看slots信息 
cluster nodes: 查看节点信息

从上面可以整个集群的基本状况。

6. 基于普通模式操作集群/集群模式

基于命令行来查看信息的设置:

redis-cli -p 6739 
redis-cli -c -p 6739 

从这里可以看懂,在cluster模式下与普通模式下的不同,集群模式下客户端可以自动的切换到其他节点。 
正常情况下的客户端执行逻辑如下: 

7. 安装ruby以及gem的redis组件

各个操作系统的不同,安装方案各有差异,这里以ubuntu的方式来进行。 

8. 进行集群的reshard

src/redis-trib.rb reshard 127.0.0.1:6739

从源节点移动到目标节点 
? ./redis-trib.rb reshard 127.0.0.1:6379 
? How many slots do you want to move (from 1 to 16384)? 4000 //输入被迁移的solt的数量 
? What is the receiving node ID? //输入目的地节点的id,执行第一行命 
? Please enter all the source node IDs.//输入被迁移的槽 
? Do you want to proceed with the proposed reshard plan (yes/no)? Yes //迁移计划确认

如何来确认reshard来进行呢?查看命令的日志即可得知: 

9. 总结

redis提供了完整的一套如何进行集群处理的机制,并利用一致性hash来更好的处理redis的动态调整。

http://www.woaipu.com/shops/zuzhuan/61406
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117777
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117890
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117994
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=118376

时间: 2024-10-23 01:44:36

Redis的集群安装以及rehash重新迁移教程指南的相关文章

redis离线集群安装

用一个叫redis-trib.rb的ruby脚本.redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/).是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb是redis作者用ruby完成的.所以redis集群需要先安装ruby环境. 这是在线安装步骤 Redis-cluster集群需要使redis-trib.rb脚本来管理集群,redis-trib.rb脚本是使用ruby

深入分析redis cluster 集群

深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://ruby.taobao.org/  # gem source -l    # gem install redis --version 3.0.0  //安装gem_redis  Successfully installed redis-3.0.0  1 gem installed  Installing

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

redis集群安装

Redis集群安装 1         环境准备 1.1  系统环境 Centos6.5 2.6.32-431.el6.x86_64 1.2  依赖包 yum -y install wget tcpdump glibc libgcc gcc gcc-c++ ncurses-devel bison openssl openssl-devel xinetd glibc glibc-common gd gd-devel rsync puppet ntp perl cmake man tree lsof

第一章 redis 集群安装配置

*** 集群对应的主从节点如果同时down,则整个redis集群无法工作 *** 部分是对网上资源的整理,部分是安装过程中存在问题的总结 准备.环境 centos1:192.168.215.156 A centos2:192.168.215.157 B yum -y install zlib ruby rubygems gem install redis 查看ruby安装的软件的结合 gem list 安装redis [root@A opt]# tar -zxvf redis-3.2.2.tar

redis 集群安装(二)

版本:redis-4.0.2.tar.g (一)创建reids节点 我们使用3台服务器,分别为192.168.99.129,192.168.99.153,192.168.99.171三台服务器. 192.168.99.129装 7001,7002两个节点,192.168.99.153装 7003,7004两个节点,192.168.99.171装 7005,7006两个节点. 在192.168.99.129的 /usr/local/rediscluster 下创建 7001和7002文件夹,并且将

windows下redis集群安装和部署

1.下载windows版本的Redis 官网只提供linux版本的下载 官网下载地址:http://redis.io/download github下载地址:https://github.com/MSOpenTech/redis/tags 解压之后,拷贝到自定义的Redis目录下,例如D:\Redis\Redis 打开cmd,切换到Redis目录下,执行 redis-server redis.windows.conf 再重新打开一个cmd窗口,连接Redis执行 redis-cli.exe -h

八、redis集群安装

Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,即master-slave模式的数据备份. Redis 优势 性能极高 – Red

Redis Cluster 4.0高可用集群安装、在线迁移操作记录

之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑到是线上生产环境,决定在线迁移,迁移过程,不中断服务.操作过程如下: 一.机器环境 1 2 3 4 5 6 7 8 9 10 11 12 13 迁移前机器环境 ----------------------------------------------------------------------