redis集群搭建

1.简介

尽管可以使用哨兵主从集群实现可用性保证,但是这种实现方式每个节点的数据都是全量复制,数据存放量存在着局限性,受限于内存最小的节点,因此考虑采用数据分片的方式,来实现存储,这个就是redis-cluster。

1.首先我们搭建单机版本的集群

你们可以看我之前的文章使用和安装

  1. 在你的redis/etc/文件夹下建立一个文件夹redis_cluster然后再在此文件夹下建立六个文件夹(三主三从)7001-7006用来存放redis的配置文件redis.conf
  2. mkdir  redis_cluster

3.从你的安装目录下复制一份redis.conf文件放置到7001下

4.修改配置文件

 

#修改端口和你的文件夹名一致

prot 7001

#配置后台运行

daemonize yes

#pidfile文件对应端口

pidfile /var/run/redis_7001.pid

#开启集群

cluster-enabled yes

#这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端口命名

cluster-config-file nodes_7001.conf

#集群超时时间,节点超过这个时间没反应就断定是宕机

cluster-node-timeout 5000

#存储方式开启aof   这个根据实际情况配置

appendonly yes  

 

5.复制此配置文件到7002中依次将所有的配置文件如此修改即可

6.启动六个节点的redis

检查有没有启动成功

 7.安装ruby

sudo yum install ruby

如果这里失败你可以参考https://blog.csdn.net/yjt520557/article/details/86324035

安装成功之后如果直接执行gem install redis指令是会报错的

 

所以我们先要处理采用rvm来更新ruby

指令为:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0
curl -sSL https://get.rvm.io | bash -s stable

安装完成后,会列出一些安装信息,其中有一行要注意:

To start using RVM you need to run `source /etc/profile.d/rvm.sh`

然后执行

source /etc/profile.d/rvm.sh

检查是否安装正确

rvm -v

 

使用rvm来更新ruby

查看已知版本

rvm list known

选择一个版本安装(这里以2.4.2为例子)

rvm install 2.4.2

等待一会就安装好了

设置默认版本

然后再查看版本

然后再执行gem install redis即可

创建集群

最后是执行创建集群,这里使用的是5.0版本的redis,创建集群命令都从./redis-trib.rb 迁移到redis-cli,可以使用redis-cli --cluster help来查看命令帮助;

执行如下指令创建集群

./redis-cli  --cluster create 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 --cluster-replicas 1

如果是4.0的则执行

./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

如果报错

[ERR] Node 127.0.0.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

提示我们redis服务实例上的数据不为空,因此逐个实例连接,执行flushdb,清空数据即可(如果已经对这几个节点搭建了集群也有可会报错这个)

然后执行创建指令

M为master  S为slave这个在主从复制就讲过了

 slots:[5461-10922]代表分配到的哈希槽是

从运行结果看 主节点就是7001 7002 7003 从节点分别是7004 7005 7006

最后问我们是否接受上面的设置,输入yes 就表示接受,我们输入yes

 显示配置哈希槽,以及集群创建成功,可以用了;

执行redis-cli --cluster info 127.0.0.1:7001检查集群状态

我们可以看到每一个主机都有一台从机证明这是一个正确的集群

使用

我们先连接任意一个节点,然后添加一个key:

redis-cli是redis默认的客户端工具,启动时加上`-c`参数,`-p`指定端口,就可以连接到集群。 

然后再别的集群节点也能够拿到数据

 

2.测试集群宕机的情况

我们可以看到所有的都在运行我们停掉7002这台机器

Kill -9 1940

然后再来查看集群的情况

因为7005由从节点对应的主节点是7002所以升级为主节点了并且占用了原来7002的哈希槽你们可以查看对比

 All 16384 slots covered. 所有哈希槽都可覆盖了; 集群可以正常使用;

如果我们将7005节点也干掉会发生什么呢

这里我们发现 出事了,因为主从节点都挂了 所以有一部分哈希槽没得分配,最后一句

[ERR] Not all 16384 slots are covered by nodes.  没有安全覆盖;

所以不能正常使用集群;

如果再将两台机器恢复那么7005任然是主节点

3.多机多节点集群

首先你要准备两台虚拟机(主要是电脑不太好)

分别是141和142

我们把142作为集群控制端

修改配置创建节点

首先我们在142虚拟机里创建三个节点,端口分别是7001,7002,7003

我们先在root目录下新建一个redis_cluster目录,然后该目录下再创建3个目录,

分别是7001,7002,7003,用来存redis配置文件;

和上面的配置几乎一样只要将bind的ip地址换成自己虚拟机的就可以了

然后在141的机器上如法炮制即可注意bind的ip

然后执行如下指令创建集群即可

./redis-cli  --cluster create 192.168.122.142:7001 192.168.122.142:7002 192.168.122.142:7003 192.168.122.141:7004   192.168.122.141:7005  192.168.122.141:7006 --cluster-replicas 1

然后都是和单机的集群是一样的

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值