redis(9)集群搭建

一、搭建流程

redis集群至少需要3个redis实例,不过官方推荐采用6个实例;3个master,3个slave。

那么我们需要做以下几件事:

1)编译一个redis-server

2)创建6个redis.conf配置文件

3)启动6个redis实例

4)redis-trib.rb创建集群

二、创建集群

1)编译一个redis-server

$ wget http://download.redis.io/releases/redis-4.0.10.tar.gz
$ tar xzf redis-4.0.10.tar.gz
$ cd redis-4.0.10
$ make

详细可以参考:https://www.cnblogs.com/lay2017/p/9248454.html

2)创建6个redis.conf配置文件

我们先创建以下文件夹目录:

mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005

然后我们将第一步编译出来的src/redis-server拷贝一份到redis-cluster下,然后把redis.conf拷贝6份分别放入到上面创建的6个文件夹内。

分别修改每个redis.conf的内容:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes 

这里的port分别设置为:7000、7001、7002、7003、7004、7005

3)启动6个redis实例

./redis-server 7000/redis.conf

分别执行启动命令,加载redis.conf配置文件

查看一下启动进程:

ps -ef | grep redis

显示如下:

  501 37933     1   0  9:10PM ??         0:03.85 ../redis-server 127.0.0.1:7000 [cluster]
  501 37941     1   0  9:11PM ??         0:03.82 ../redis-server 127.0.0.1:7001 [cluster]
  501 37949     1   0  9:11PM ??         0:03.82 ../redis-server 127.0.0.1:7002 [cluster]
  501 37968     1   0  9:11PM ??         0:03.75 ../redis-server 127.0.0.1:7003 [cluster]
  501 37977     1   0  9:11PM ??         0:03.76 ../redis-server 127.0.0.1:7004 [cluster]
  501 37988     1   0  9:12PM ??         0:03.76 ../redis-server 127.0.0.1:7005 [cluster] 

则表示每个实例已经启动成功

4)redis-trib.rb创建集群

在src目录下自带了redis-trib.rb可以用于创建集群

但是在使用之前 需要安装ruby,以及redis和ruby连接

yum -y install ruby ruby-devel rubygems rpm-build
gem install redis

然后采用redis-trib.rb创建集群

redis-trib.rb create --replicas 1  127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

如果你最终看到:

[OK] All 16384 slots covered

说明集群创建完成

我们可以用命令检查一下目前的集群情况

./redis-trib.rb check 127.0.0.1:7000

输出内容如下:

>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: ca34d6741d5b3f5bfc7941c652a09961fddb6d0a 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: e04be0db2d11fb98133c163bd97426e0f3f2f540 127.0.0.1:7003
   slots: (0 slots) slave
   replicates ca34d6741d5b3f5bfc7941c652a09961fddb6d0a
M: 048c96b56c043aab8d297b147cfe7068c74498c9 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: b711233443a7a097511fc1681403f2d83b5c8773 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: cb6ee10ec8a45f68efddc84b4acaf01fbd244627 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 048c96b56c043aab8d297b147cfe7068c74498c9
S: b630796514a48438d177fbe8f89610f1afe9b41f 127.0.0.1:7004
   slots: (0 slots) slave
   replicates b711233443a7a097511fc1681403f2d83b5c8773
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

我们看到:

  master主节点是:7000、7001、7002,7003是7000的从节点、7004是7001的从节点、7005是7002的从节点;

  7000分配的哈希槽[0,5460],7001分配的哈希槽[5461,10922],7002分配的哈希槽[10923,16383]

5)测试

5-1、测试设置值、取值

我们使用redis-cli命令连接7000,并设置一个值:

lay-macdeAir:redis-cluster lay$ ./redis-cli -c -p 7000
127.0.0.1:7000> set name lay
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK

我们连接7001,执行获取这个值:

lay-macdeAir:redis-cluster lay$ ./redis-cli -c -p 7001
127.0.0.1:7001> get name
"lay"

我们发现我们从7001中获取7000设置的值,集群的数据共享成功。

5-2、测试主从切换

当前有6个实例

  501 37933     1   0  9:10PM ??         0:03.85 ../redis-server 127.0.0.1:7000 [cluster]
  501 37941     1   0  9:11PM ??         0:03.82 ../redis-server 127.0.0.1:7001 [cluster]
  501 37949     1   0  9:11PM ??         0:03.82 ../redis-server 127.0.0.1:7002 [cluster]
  501 37968     1   0  9:11PM ??         0:03.75 ../redis-server 127.0.0.1:7003 [cluster]
  501 37977     1   0  9:11PM ??         0:03.76 ../redis-server 127.0.0.1:7004 [cluster]
  501 37988     1   0  9:12PM ??         0:03.76 ../redis-server 127.0.0.1:7005 [cluster] 

我们先杀死7000

lay-macdeAir:redis-cluster lay$ kill -9 37933
lay-macdeAir:redis-cluster lay$ ps -ef|grep redis
  501 37941     1   0  9:11PM ??         0:05.08 ../redis-server 127.0.0.1:7001 [cluster]
  501 37949     1   0  9:11PM ??         0:05.08 ../redis-server 127.0.0.1:7002 [cluster]
  501 37968     1   0  9:11PM ??         0:05.02 ../redis-server 127.0.0.1:7003 [cluster]
  501 37977     1   0  9:11PM ??         0:05.00 ../redis-server 127.0.0.1:7004 [cluster]
  501 37988     1   0  9:12PM ??         0:05.01 ../redis-server 127.0.0.1:7005 [cluster]

检查现在集群情况

lay-macdeAir:redis-cluster lay$ ./redis-trib.rb check 127.0.0.1:7001
>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: b711233443a7a097511fc1681403f2d83b5c8773 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: cb6ee10ec8a45f68efddc84b4acaf01fbd244627 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 048c96b56c043aab8d297b147cfe7068c74498c9
M: 048c96b56c043aab8d297b147cfe7068c74498c9 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: e04be0db2d11fb98133c163bd97426e0f3f2f540 127.0.0.1:7003
   slots:0-5460 (5461 slots) master
   0 additional replica(s)
S: b630796514a48438d177fbe8f89610f1afe9b41f 127.0.0.1:7004
   slots: (0 slots) slave
   replicates b711233443a7a097511fc1681403f2d83b5c8773
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

我们看到7000挂掉以后它的从节点7003提升为了主节点,并且所有16384个哈希槽都覆盖了

以上我们简单实现了redis-cluster模块的集群效果,参考官方文档:https://redis.io/topics/cluster-tutorial

原文地址:https://www.cnblogs.com/lay2017/p/9275677.html

时间: 2024-10-01 23:06:29

redis(9)集群搭建的相关文章

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

Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 3.修改每个Redis节点的端口,以及开启集群模式 3.使用redis-cli --cluster create ip:port给集群的节点分配哈希槽(如果要使用主从,只需要添加master节点的ip:port即可) 4.使用redis-cli --cluster check ip:port查看节点

Redis Cluster集群搭建测试

# Redis Clutser # ## 一.Redis Cluster集群 ## 参考资料: http://www.cnblogs.com/lykxqhh/p/5690923.html Redis集群搭建的方式有多种,例如使用zookper等,但从redis3.0之后版本支持redis cluster集群,Redis Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.其redis cluster架构图如下: 其结构特点: 1.所有的redis节点彼此互

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

Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 l  Redis安装 l  整体架构 l  Redis主从结构搭建 l  Redis容灾部署(哨兵sentinel) l  Redis常见问题 Redis安装 发行版:CentOS-6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 下载redis,选择合适的版本 [[email protected] software]# wget http:/

Redis Cluster集群搭建与应用

1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.其redis-cluster架构图如下: 其结构特点 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. 节点的fail是通过集群中超过半数的节点检测失效时才生效. 客户端与redis节点直

redis centos集群搭建和java应用

1. 首先要ssh免密登录 redis集群,3台虚拟机,6个节点,每台机器2个节点一主一从. 192.168.132.154 c0192.168.132.156 c1192.168.132.155 c2 下载并解压文件,请到官网下载.文末有网盘下载地址. tar -zxvf redis-5.0.4.tar.gz 安装或更新C语言环境 yum install gcc-c++安装Redis,默认安装在当前目录下,可以使用PREFIX参数更改安装位置make install PREFIX=/home/

Redis Cluster集群搭建

1.服务器 192.168.1.201 192.168.1.204 192.168.1.205 192.168.1.206 192.168.1.207 192.168.1.208 因为Redis Cluster如果数据冗余是1的话,至少要3个Master和3个Slave. 2.安装步骤 (1)准备工作 mkdir /usr/local/redis_cluster mkdir /usr/local/redis_cluster (安装所需的文件) cd /usr/local/redis_cluste

Redis的集群(搭建)

分布式数据库是把整个数据集按照分区规则映射到多个节点,每个节点负责一部分数据. Redis Cluster采用虚拟槽分区(引入虚拟槽改进的一致性哈希算法),所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16383,找到槽,再找到槽所在的节点.槽是集群内数据管理和迁移的基本单位. Redis Cluster搭建需要3个步骤 1. 准备节点 Redis Cluster节点数量至少6个才能保证组成完整高可用的集群,每个节点需开启集群模式,配置如下: # c

redis主从集群搭建

一.安装redis 首先登陆官网下载压缩包,我安装的是最新版本5.X,下载地址http://download.redis.io/releases/redis-5.0.2.tar.gz. 进入文件所在目录解压 tar -zxf redis-5.0.2.tar.gz 进入src目录,cd redis-5.0.2/src/ 编译,make && make install 这里因为只有一台服务器所以通过修改端口号的方式搭建伪集群 二.修改配置文件 cp redis.conf redis-6380.

redis伪集群搭建(亲测无坑)

一.单机版安装部署,伪集群只需要操作前1-8步即可,再往下浏览找到:二.单机版-伪集群 ?安装部署继续搭建,如需设置密码参照第10步 1.安装基本工具 yum install -y?gcc-c++ vim lrzsz wget? 2.创建.进入目录 mkdir /opt/redis cd /opt/redis 3.下载 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 4.解压.查看文件 tar zxvf redis-5.0.5.