Linux 系列(三)——Redis 分布式集群搭建

Linux 系列(三)——Redis 分布式集群搭建

原创  2016年05月24日 20:49:37
  • 11599


      在Redis的安装和部署(Linux)一文中详细介绍了在Linux环境中搭建Redis服务,本文将介绍关于Redis分布式 集群搭建细节。

一、Redis集群架构

1、Redis集群架构图

蓝色的为Redis集群中的每个node节点,节点之间通过ping 命令,测试相互是否连接正常,普通集群没有主从区分,连接任何一个节点操作,都可以转发到其他任意一个节点。

1、Redis 容错机制

 每Redis提供了节点之间相互发送的ping命令,用于测试每个节点的健康状态,集群中连接正常的节点接收到其他节点发送的ping命令时,会返回一个pong字符串。

Redis投票机制:如果一个节点A给B发送ping没有得到pong返回,那么A就会通知其他节点再次给B发送ping,如果集群中超过一半的节点给B发送ping都没有得到返回,那么B就被坐实game over了,所以为了避免单点故障,一般都会为Redis的每个节点提供一个备份节点,B节点挂掉了立马启动B的备份节点服务器。

2、Redis 集群存储原理

每个节点上的数据都不一样,(一样就是主备了)把数据都分散存放到各个节点上进行存储。如何确定哪些类型数据存入哪个节点呢?Redis中槽slot就用于圈定当前节点的存储范围,分散存储使用hash算法,确定什么值放到哪个槽里

 所以在创建Redis集群时,会首先为每个节点创建槽容量,例如从1~2000,指定数据存储区域。

3、Redis 持久化机制

Redis提供了2中数据持久化方式:

Snapshotting:定时的将Redis内存的当前状态保存到RDB文件中,持久化到硬盘。

AOF(append-only file):将所有的command操作保存到aof文件中,AOP使得同步频率很高,数据即便丢失,粒度也很小,但性能上有所牺牲。默认数据持久化会2s同步一次,也可以进行配置改变同步频率。

 翻译自redis-wiki

二、Redis集群搭建

  现在开始搭建具有3各节点和3个备份节点的Redis cluster。端口分别从7001-7006,因为测试机内存的原因,搭建一个使用6个Redis实例搭建一个伪分布式集群。

               1、搭建集群所需环境

              1)使用yum install ruby安装Ruby,因为redis中创建集群的脚本是以rb结尾的ruby文件(下图可见该rb文件)。使用ruby -v查看ruby是否安装成功。

                                                                                                             2)使用 yum install rubygems安装RubyGems-Ruby组件的打包系统,用于管理Ruby程序包。

2、创建6个Redis实例

1)将redis的解压包中的bin文件件均拷贝到新创建的redis-cluster(含有redis-trib.rb文件)的redis01文件中

2)修改redis01的redis.conf文件,修改端口号和cluster-enable属性

3)依次拷贝redis01为redis02-redis06,修改端口号

4)编写一个sh脚本,一次性启动6个Redis实例

5)执行sh脚本,启动redis节点,并查看Redis实例启动情况

6)执行redis-trib.rb脚本,创建集群。

[html]  view plain  copy
  1. ./redis-trib.rb create --replicas 1 192.168.132.128:7001 192.168.132.128:7002 192.168.132.128:7003 192.168.132.128:7004 192.168.132.128:7005  192.168.132.128:7006  

    

    在集群的创建日志信息中可以发现,使用hash 创建slots,master节点为01.02.03 ,剩余3个用于做备机节点,并显示了主从对应关系以及每个节点槽范围信息。

三、集群测试

1)使用任意一个节点客户端登陆 主要加上 -c参数表示用于集群连接

2)任意执行一个set命令,节点间会自动转发,将set的值保存到对应的节点slot中。 

    集群搭建成功。

四、总结

建成功。在创建集群时,笔者出现一个redis节点拒绝连接的错误,以至于集群创建失败。

经过反复排查发现是自己原来安装的redis进行了权限设置,为方便了方便测试,于是选择取消该权限设置。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Daybreak1209/article/details/51493265
  • 本文已收录于以下专栏:
  • Linux

猜你喜欢

转载自blog.csdn.net/qq_37342374/article/details/79899097