redis集群的搭建详细教程
1 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 会根据节点数量大致
均等的将哈希槽映射到不同的节点

搭建集群,极限情况也就最多16384个节点。
2 Redis集群的搭建
Redis集群中至少应该有3个节点。要保证集群得高可用,需要每个节点有1个备份机。
Redis集群需要6台服务器。
搭建伪分布式。可以使用一台虚拟机允许6个redis实例。需要修改redis得端口号7001-7006
3 集群搭建过程
1 实例准备
第一步:准备好1台redis服务器
【这里我使用的之前搭建好的一台服务器】
虚拟机上面安装Redis的方法,参照的是redis在Linux上的安装教程:
第二步:在/usr/local下面创建一个集群目录
# mkdir /usr/local/redis-cluster
第三步:拷贝已经安装好的redis实例到redis-cluster目录下
[root@admin local]# cp -r redis/bin redis-cluster/redis01
第四步:删除拷贝的实例里面的dump.rdb 和 appendonly.aof文件。
因为本实例没有启动AOF持久化的,所以就没有appendonly.aof文件。
只用删除dump.rdb文件。
我们搭建集群的时候,每个节点应该是一个空节点,这里面不应该有数据,这个实例之前使用过,里面有数据。
搭建集群的时候防止出现问题,所以先给删除掉,保证是一个干净的节点。

[root@admin redis01]# rm -rf dump.rdb
第五步:修改配置文件中的端口号
[root@admin redis01]# vim redis.conf
将默认的6379端口修改为7001

输入wq保存并退出
第六步:修改配置文件中的启动集群
[root@admin redis01]# vim redis.conf
修改前:

修改后:

输入wq保存并退出
第七步:复制第六步修改完成配置文件的redis实例5份
[root@admin redis-cluster]# cp -r redis01/ redis02
[root@admin redis-cluster]# cp -r redis01/ redis03
[root@admin redis-cluster]# cp -r redis01/ redis04
[root@admin redis-cluster]# cp -r redis01/ redis05
[root@admin redis-cluster]# cp -r redis01/ redis06

第八步:修改redis02~redis06实例的端口号分别为7002~7006
[root@admin redis-cluster]# vim redis02/redis.conf
[root@admin redis-cluster]# vim redis03/redis.conf
[root@admin redis-cluster]# vim redis04/redis.conf
[root@admin redis-cluster]# vim redis05/redis.conf
[root@admin redis-cluster]# vim redis06/redis.conf
第九步:使用批处理启动上面的6个实例
这里也可以一个一个的启动,只是麻烦一些。
1、首先执行命令vim start-all.sh创建一个批处理文件,并编辑
[root@admin redis-cluster]# vim start-all.sh

文件的内如如下:
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
2、修改start-all.sh文件的权限,给当前用户所有权限

[root@admin redis-cluster]# chmod u+x start-all.sh

3、执行start-all.sh启动所有的6个redis实例
[root@admin redis-cluster]# ./start-all.sh

4、查看一下是否真的启动起来了
[root@admin redis-cluster]# ps -aux | grep -i redis --color

到这里6个节点全部配置好,并且启动起来了。
下面就需要把集群搭建起来,也就是把这六个节点连到一起来。
这里我们需要使用一个工具,这个工具就在我们的redis源代码的src目录下面。
执行命令切换到src目录下:
[root@admin redis-cluster]# cd /usr/local/redis-3.0.0/src

查看里面的rb文件
[root@admin src]# ll *.rb

复制Ruby脚本文件redis-trib.rb到redis-cluster目录下去
[root@admin src]# cp -r redis-trib.rb /usr/local/redis-cluster/

下面简单了解一下Ruby是什么?

2 集群环境的搭建
第一步:我们使用ruby脚本搭建集群,所以需要安装ruby的运行环境。
依次执行下面两条命令
# yum install ruby
中间如果出现询问输入y确认即可。

# yum install rubygems
中间如果出现询问输入y确认即可。

第二步:安装ruby脚本运行使用的包
1.上传包到Linux服务器上

2、将其复制到/usr/local目录下
[root@admin soft]# cp redis-3.0.0.gem /usr/local

3、安装redis-3.0.0.gem
[root@admin local]# gem install redis-3.0.0.gem

这样这个库就安装好了。
现在redis-trib.rb这个脚本就可以执行了。
3 使用ruby脚本搭建集群
[root@admin redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006
1 表示每个节点有一个备份机。
因为我们是在一台服务器上面演示,ip一样只是端口不一样。执行的过程中有一个计算过程,算出来是6个节点,所以集群里面有三个节点。
如果里面只有5个ip地址列表的话,就不是整数了,会报错。所以这里一定要是偶数个节点。


再补充一下:如果我们真的是在六台服务器上搭建集群的话,不中和这个也是一样的。
只需要在任意一台服务器上面执行上面的搭建环境过程,
使用Ruby脚本搭建集群,但是特别需要注意的是:每台
服务器上的防火墙一定要关闭。如果没有关闭防火墙的话
在询问是否可以的时候,输入yes之后,会卡住Waiting
for the cluster to join......这里不动。

4 使用redis-cli连接集群
连接集群我们使用redis提供的客户端redis-cli,连接集群中的任意节点就可以了。
[root@admin redis-cluster]# redis01/redis-cli -p 7006 -c
-c 代表连接的是redis集群。
连接从节点也是一样的。

下面测试一下:
可以看到通过计算,username定位到了14315这个哈希槽,存入的是端口7003的这台服务器。

可以看到通过计算,age定位到了741这个哈希槽,存入的是端口7001的这台服务器。

可以看到,这样数据就可以均匀的分布到每一台服务器,可以实现每个节点都有一定数量的数据。
如果主节点挂了,从节点就可以顶替工作,这也就实现了高可用。
特别需要注意的是:连接集群的时候需要加上 -c 参数
redis集群的搭建详细教程的更多相关文章
- zookeeper集群环境搭建详细图文教程
zookeeper集群环境搭建详细图文教程 zhoubang @ 2018-01-02 [文档大纲] 友情介绍 软件环境 注意点 环境安装 1. 新建用于存储安装包以及软件安装的目录 2. 下载安装z ...
- <正则吃饺子> :关于redis集群的搭建、集群测试、搭建中遇到的问题总结
项目中使用了redis ,对于其基本的使用,相对简单些,根据项目中已经提供的工具就可以实现基本的功能,但是只是这样的话,对于redis还是太肤浅,甚至刚开始时候,集群.多节点.主从是什么,他们之间是什 ...
- Redis集群环境搭建
Redis集群cluster环境搭建 描述:本章节主要单服务器搭建集群,在一个服务器上启动多个不同端口的redis服务,非真实环境. 真实环境下redis集群会搭建在多个物理服务器上,并非单一的服务器 ...
- Redis集群环境搭建实践
0 Redis集群简介 Redis集群(Redis Cluster)是Redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能.相比于主从复制.哨兵模式, ...
- Redis集群的搭建及与SpringBoot的整合
1.概述 之前聊了Redis的哨兵模式,哨兵模式解决了读的并发问题,也解决了Master节点单点的问题. 但随着系统越来越庞大,缓存的数据越来越多,服务器的内存容量又成了问题,需要水平扩容,此时哨兵模 ...
- linux环境(CentOS-6.7)下redis集群的搭建全过程
linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...
- 【redis】 linux 下redis 集群环境搭建
Redis集群 (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:63791 ...
- 2.Redis集群环境搭建
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.基本概念 1.redis集群是一个可以在多个节点之间进行数据共享的设施.redis集群提供了以下两个好处1 ...
- (转) 淘淘商城系列——Redis集群的搭建
http://blog.csdn.net/yerenyuan_pku/article/details/72860432 本文我将带领大家如何搭建Redis集群.首先说一下,为何要搭建Redis集群.R ...
随机推荐
- Android-Java读写文件到自身APP目录
界面: Layout: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- JAVA下查看进程中线程占用CPU较高的代码
执行以下代码获得进程的线程.并找到CPU占用较高的线程ID ps -mp 16935 -o THREAD,tid,time 执行以下代码,通过线程ID获得16进制的线程标识 printf &quo ...
- 自定义Team Foundation Server (TFS) 与Project Professional的集成字段
用户可以象使用Office Excel一样,使用Project Professional连接TFS,将数据下载到本地修改,并且发布到TFS服务器上,如果你习惯使用Project来计划你的项目,那么Pr ...
- vim 命令全
1 简介 vim是文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用 ...
- win10 数字许可证激活被 KMS激活覆盖
打开cmd(管理员身份),依次执行以下命令: slmgr/upk slmgr/ckms slmgr/rearm 重启设备后联网登录Microsoft账号,转设置-激活-疑难解答,windows会找到与 ...
- 【转】Sql Server去除所有空格
详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak 1.普通空格: 前后的空格,使用LT ...
- sharepoint 2013 补丁升级步骤
1. 安装过程合理: A. 可以同时在管理中心.两台前端.搜索服务器上安装重新发布的SP1补丁包(所提供的链接) B. 等待所有SP1补丁包安装完成,依次在管理中心.两台前端.搜索服务器上运行配置向导 ...
- 在线编辑器Ckeditor (2) - php (31)
接上一篇 3 in-page(页内)配置,在使用Ckeditor的界面里进行直接配置 页内配置 效果 特点:配置项完全属于某个特定的Ckeditor实例,不可重用 三种配置方式比较 定制方式 特点 说 ...
- vsftpd服务器配置虚拟用户
添加宿主用户 新建系统用户vsftpd,用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统) useradd vsftpd -d /home/wwwroo ...
- leecode刷题(21)-- 删除链表的倒数第N个节点
leecode刷题(21)-- 删除链表的倒数第N个节点 删除链表的倒数第N个节点 描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2- ...