基于redis-3.2.4的Redis-Cluster集群搭建

原理

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。

Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

在redis的每一个节点上,都有这么两个东西,一个是插槽(slot)可以理解为是一个可以存储两个数值的一个变量这个变量的取值范围是:0-16383。还有一个就是cluster我个人把这个cluster理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

搭建

推荐采用3主3从6节点方案

#创建文件夹
mkdir /usr/local/redis-cluster
mkdir /usr/local/redis-cluster/bin
cd /usr/local/redis-cluster
mkdir -p 6380/data 6381/data 6382/data 6383/data 6384/data 6385/data #进入编译好的redis下的src目录,拷贝文件到redis-cluster/bin中
cd redis-3.2.4/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin #复制一个新的redis实例到6380文件夹中
cp -r /usr/local/redis /usr/local/redis-cluster/6380 #修改redis.conf
port 6380 #端口号
daemonize yes
requirepass redispwd #设置密码
masterauth redispwd #设置验证密码
bind 192.168.204.128 #本机ip
dir /usr/local/redis-cluster/6380/data/ #数据文件存放位置
pidfile /var/run/redis_6380.pid #6380跟port一致
cluster-enabled yes #启动集群模式
cluster-config-file nodes6380.conf #6380跟port一致
cluster-node-timeout 15000
appendonly yes #另外复制上一个配置好的实例5个
\cp -rf /usr/local/redis-cluster/6380/* /usr/local/redis-cluster/6381
\cp -rf /usr/local/redis-cluster/6380/* /usr/local/redis-cluster/6382
\cp -rf /usr/local/redis-cluster/6380/* /usr/local/redis-cluster/6383
\cp -rf /usr/local/redis-cluster/6380/* /usr/local/redis-cluster/6384
\cp -rf /usr/local/redis-cluster/6380/* /usr/local/redis-cluster/6385 #分别修改这5个配置文件,采用字符串替换
vi /usr/local/redis-cluster/6381/redis/etc/redis.conf
:%s/6380/6381 vi /usr/local/redis-cluster/6382/redis/etc/redis.conf
:%s/6380/6382 vi /usr/local/redis-cluster/6383/redis/etc/redis.conf
:%s/6380/6383 vi /usr/local/redis-cluster/6384/redis/etc/redis.conf
:%s/6380/6384 vi /usr/local/redis-cluster/6385/redis/etc/redis.conf
:%s/6380/6385 #分别启动redis实例
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6380/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6381/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6382/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6383/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6384/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/6385/redis/etc/redis.conf #查看进程信息
ps aux|grep 'redis' #安装ruby,rubygems
yum install ruby
yum install rubygems #上传redis-3.2.1.gem文件到某个目录下并cd到该目录进行安装
gem install -l redis-3.2.1.gem #设置集群密码
find / -name 'client.rb'
#添加密码(我的在以下目录)
vi /usr/local/share/gems/gems/redis-3.2.1/lib/redis/client.rb
password redispwd # 创建集群
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.204.128:6380 192.168.204.128:6381 192.168.204.128:6382 192.168.204.128:6383 192.168.204.128:6384 192.168.204.128:6385 #命令行访问任一节点,进行测试
/usr/local/redis-cluster/6380/redis/bin/redis-cli -c -h 192.168.204.128 -p 6380 -a "redispwd"

存在的问题

springboot整合redis集群需要关闭防火墙才可用,仅开放所有节点端口号无法建立连接,查询了一下官网说节点端口号+10000端口号也需要开放才可以,比如6380节点需要把6380、16380端口都开启外网访问,其他节点同理,但是我自己试了下还是不行,具体原因未知,还请各位指导。

Redis-03-集群搭建的更多相关文章

  1. Redis本地集群搭建(5版本以上)

    Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...

  2. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  3. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  4. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  5. redis(9)集群搭建

    一.搭建流程 以下我们将构建这样一个redis集群:三个主节点,分别备有一个从节点,主节点之间相互通信,如果主节点挂掉,从节点将被提升为主节点. redis集群至少需要3个redis实例 那么我们需要 ...

  6. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  7. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  8. Redis笔记-集群搭建

    Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...

  9. Redis的搭建和Redis的集群搭建

    1.Redis的官网:https://redis.io/      Redis的测试网站:http://try.redis.io/ 2.参考博客:https://www.cnblogs.com/maf ...

  10. 【Redis】Redis cluster集群搭建

    Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...

随机推荐

  1. 20194651—自动生成四则运算题第一版报告chris

    1.需求分析: (1)自动生成四则运算算式(+ - *  /),或两则运算(+  -). (2)剔除重复算式. (3)题目数量可定制. (4)相关参数可控制. (5)生成的运算题存储到外部文件中. 2 ...

  2. Codeforces_462_B

    http://codeforces.com/problemset/problem/462/B 简单的贪心,排序即可看出来. #include<cstdio> #include<ios ...

  3. C 语言宏定义函数编写时 do-while 的妙用和一些注意事项

    在 C 语言中,我们都知道可以用宏定义来编写函数,一般称为宏函数.如果一个宏函数比较复杂,那么在编写这样的宏函数是有一定技巧和注意事项的.文章给出一些我认为值得关注的地方,以及一些注意事项(个人建议) ...

  4. zip压缩包伪加密技术

    一个 ZIP 文件由三个部分组成: 压缩源文件数据区 + 压缩源文件目录区 + 压缩源文件目录结束标志 压缩源文件数据区: 50 4B 03 04:这是头文件标记(0x04034b50) 14 00: ...

  5. 手把手带你阅读Mybatis源码(二)执行篇

    前言 上一篇文章提到了MyBatis是如何构建配置类的,也说了MyBatis在运行过程中主要分为两个阶段,第一是构建,第二就是执行,所以这篇文章会带大家来了解一下MyBatis是如何从构建完毕,到执行 ...

  6. Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}

    1.给子域名加www标记  RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC] RewriteCond %{HTTP_HOST} !^www\ ...

  7. 前端添加复选框checkbox 提交到django后台处理

    根据前端勾选的复选框 提交勾选的数据到后台处理 che.html <!DOCTYPE html> <html lang="en"> <head> ...

  8. ts的特殊数据类型

    四. Ts数据类型 tuple(元组类型):可以给数组指定位置存指定类型数据 例:let arr:[number, string] = [123, ‘123’]; enum(枚举):将数字转化为标识符 ...

  9. 小记centos7下将未使用的磁盘空间重新分区挂载使用

    一块1TB的硬盘,用作samba共享,在安装系统时分区如下: /boot 2048M swap 512M / 229GB 剩下约 700GB左右未使用空间,在安装完系统后再使用 以下是详细操作,就几个 ...

  10. .net 微服务实践

    l  前言 本文记录了我的一次.net core 微服务架构实践经验,以及所用到的技术 l  优点 每个服务聚焦于一块业务,无论在开发阶段或是部署阶段都是独立的,更适合被各个小团队开发维护,团队对服务 ...