目前线上redis使用的架构是一主一从+一个哨兵。这个架构很稳定,主从切换做的也很好。但缺点是扩展性不高,会有性能的瓶颈,并且主从切换的速度还不够快。官方出了redis-cluster的方案,自认为感觉不错。可扩展性不说了,其引入了数据槽分片的概念。扩容性做到了,性能也就自然而然上去了。主从切换的速度也加快了。

目前实验环境我用的是3主+3从的概念。如果用官方集群,肯定是要为每个主各分配一个从的。因为数据分片后,每个主节点的是数据不一样的,如果主节点挂掉,没有从节点的话,整个集群就会失效。下面先给出我搭建集群后得到的几个结论。

1.一套主从节点挂掉的话,集群将不可用,这应该是一部分数据丢失的原因;此事重启的话,要先启动主节点。

2.任意一个主挂掉没有问题,并且主从切换的时间在1s之内;

3.3个从节点都挂掉,没有问题;

4.如果你连接了一台从节点去写数据,集群会自动调度到主上面去写数据;

5.3个主节点,数据做分片是不重复的。

下面给出集群搭建的过程。

从官方下载最新的redis包,redis-5.0.3.tar.gz。因为是测试环境,这里我用的是最新的5.0版本。下载后进行解压,并进行make。

tar -xzvf redis-5.0.3.tar.gz

cd redis-5.0.3

make

Redis-cluster集群搭建

之后编辑 redis.conf 配置文件,编写基础的配置文件,配置下面几个参数即可。

port 7000    //监听端口

cluster-enabled yes    //打开集群模式

cluster-config-file nodes-7000.conf   //集群节点配置文件的路径

cluster-node-timeout 5000  //节点超时时间

appendonly yes    //开启aof模式,数据持久化使用

bind 172.16.51.171   //监听的ip

dbfilename dump.rdb  //数据库文件名

dir "/opt/redis/7000/redis-4.0.11"    //数据库文件目录

logfile "/opt/webapps/7000/redis-4.0.11/log/redis.log"  /日志文件位置

之后,其余5个节点皆按照这个配置文件配置即可。

之后使用 src/redis-server redis.conf 启动redis服务即可。

在6个节点都正常起来后,使用下面命令创建集群。

src/redis-trib.rb create --replicas 1 172.16.51.171:7000 172.16.51.172:7001 172.16.51.173:7002 172.16.51.172:7003 172.16.51.173:7004 172.16.51.171:7005

Redis-cluster集群搭建

直接运行这个命令有错,会报缺少ruby的错误;/usr/bin/env: ruby: 没有那个文件或目录,这个时候安装ruby即可。

yum install ruby rubygems -y

之后再次运行命令,报了下面错误提示。这个提示是说,在5.0版本中,redis不再使用src/redis-trib.rb这个命令,而是使用redis-cli这个命令。于是按照提示,使用redis-cli命令去建立集群。

Redis-cluster集群搭建

src/redis-cli --cluster create 172.16.51.171:7000 172.16.51.172:7001 172.16.51.173:7002 172.16.51.172:7003 172.16.51.173:7004 172.16.51.171:7005 --cluster-replicas 1

其中 --cluster-replicas 1 是指为每个主节点创建一个从节点。下面是集群创建过程。出现最后一个图片字样,集群创建成功。

Redis-cluster集群搭建

Redis-cluster集群搭建

 

 

相关文章:

  • 2021-10-24
  • 2022-02-21
  • 2021-08-29
  • 2022-12-23
  • 2022-01-11
  • 2021-07-23
猜你喜欢
  • 2021-06-19
  • 2021-11-14
  • 2021-08-19
  • 2021-08-29
相关资源
相似解决方案