侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Redis3.0-集群环境搭建

Redis  /  管理员 发布于 3年前   368

 

 Redis3.0已经发布一段时间了,趁着周末抓紧研究下,重点关注下相关的新功能及稳定性。性能及压力测试情况后续慢慢更新。目前公司使用的是2.8.7版本,非常的稳定。

 

Redis Cluster: 

支持多节点数据集自动分片

提供一定程度的分区可用性,部分节点挂掉或者无法连接其他节点后,服务可以正常运行

集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信

集群采用Hash Slot方案,而不是一致性哈希,共16384个Hash slot。如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便。

例如添加新节点D,只需移动A,B,C上的slot到节点D即可。

如需移除节点A,将A上的slot迁移到B和C即可。

由于HashSlot在节点间的迁移无需停止操作,集群新增或者删除节点,改变集群内部节点占用的Slot比例等都可在线完成。

 

Redis Cluster Master-Slave Model

为保证某些节点挂掉或无法连接其他节点的情况下可正常提供服务,Redis Cluster提供了主从模式的数据副本机制,每个Hash Slot都可以设置1-N个从节点。

由A,B,C三节点组成的集群中,可以设置A1,B1,C1分别为A,B,C的从节点,如B挂掉后,原B1从节点被提升为主节点,从而保证集群服务正常。

 

集群在一致性方面的问题,可能存在写数据丢失情况发生,如

1.Client写入数据到NodeA

2.NodeA答复Client写入成功

3.NodeA在写入从节点A1时蹦溃掉了

4.A1被提升为Master节点后,但是数据丢失了!!!

为解决这个问题,Redis集群提供了同步写支持。

 

集群配置参数

所有的集群配置参数都存在于redis.conf中,主要几个如下:

Cluster-enabled:是否开启集群模式

Cluster-config-file:集群配置变更后会自动写入改文件

Cluster-node-timeout:节点超时时间,超过该时间无法连接主要Master节点后,会停止接受查询服务

Cluster-slave-validity-factor:控制从节点FailOver相关的设置

设为0,从节点会一直尝试启动FailOver.

设为正数,失联大于一定时间(factor*节点TimeOut),不再进行FailOver

Cluster-migration-barrier:最小从节点连接数

Cluster-require-full-coverage:默认为Yes,丢失一定比例Key后(可能Node无法连接或者挂掉),集群停止接受写操作

设置为No,集群丢失Key的情况下仍提供查询服务

 

集群环境搭建方式一:

    集群环境至少需要3个节点。推荐使用6个节点配置,即3个主节点,3个从节点。

    首先启动6个独立Redis节点,然后进行集群关联配置。

    最小化的Redis配置文件:

 

port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes

 

   

   1.创建6个空的文件夹 

 

mkdir cluster-testcd cluster-testmkdir 7000 7001 7002 7003 7004 7005

    2.分别创建配置文件并启动6个单点服务

 

    配置文件Redis.conf参考上文配置

 

cd 7000../redis-server ./redis.conf

    ....

 

 

cd 7005../redis-server ./redis.conf

   3.启动后会看到以下日志信息,提示Node.conf不存在,并且每个节点创建了一个NodeID

 

 

[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1

   4.组建集群配置

 

    源码src文件下提供了一个叫做redis-trib.rb的脚本文件,是一个Ruby脚本用于创建集群,检测及重新分片等 

 

./redis-trib.rb create --replicas 1 127.0.0.1:7000 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

   create表示创建一个新的集群

 

   replicas 1表示指定集群中的副本集为1  

   出现以下消息,表示只有一个主节点完成了HashSlot的初始化并可以提供服务

 

[OK] All 16384 slots covered

  

集群环境搭建方式二:

    更简单的集群搭建方式,使用Create-Cluster脚本! 

    脚本位于utils/create-cluster目录西,执行以下命令

1.create-cluster start2.create-cluster create

   启动后默认第一个节点端口为30001,完成后执行以下命令  

1.create-cluster stop.

 

 

 验证集群是否搭建成功:

$ redis-cli -c -p 7000redis 127.0.0.1:7000> set foo bar-> Redirected to slot [12182] located at 127.0.0.1:7002OKredis 127.0.0.1:7002> set hello world-> Redirected to slot [866] located at 127.0.0.1:7000OKredis 127.0.0.1:7000> get foo-> Redirected to slot [12182] located at 127.0.0.1:7002"bar"redis 127.0.0.1:7000> get hello-> Redirected to slot [866] located at 127.0.0.1:7000"world"

 

OK,环境搭建完成,今天先更新到这里,后续继续....

 

 

 


  • 上一条:
    Redis 代理服务Twemproxy
    下一条:
    Redis监控服务 Redis-stat安装说明
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Redis集群之主从复制错误:NOAUTH Authentication required解决方式(0个评论)
    • redis数据同步工具redis-shake之两服务器之间数据实时同步案例(0个评论)
    • redis中INCR、SETNX、SET三种加锁方式详解(0个评论)
    • redis安全配置之修改端口、添加密码流程步骤及启动使用(0个评论)
    • redis实现分页(0个评论)
    • 近期文章
    • 如何优雅处理async await错误推荐:await-to-js库(0个评论)
    • lodash工具库(0个评论)
    • 在Laravel项目中使用中间件方式统计用户在线时长功能代码示例(0个评论)
    • 在Laravel中构建业务流程模型(0个评论)
    • windows系统中安装FFMpeg及在phpstudy环境php7.3 + php-ffmpeg扩展的使用流程步骤(0个评论)
    • 在go语言中对浮点的数组、切片(slice)进行正向排序和反向排序(0个评论)
    • 在go语言中对整数数组、切片(slice)进行排序和反向排序(0个评论)
    • 在go语言中对字符串数组、切片(slice)进行排序和反向排序(0个评论)
    • 最新国内免注册ChatGPT体验站_ChatGPT镜像站访问链接地址2023/3/28持续更新(0个评论)
    • 在Laravel项目中的实现无密码认证之:发送邮箱链接授权(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2017-12
    • 2020-03
    • 2020-05
    • 2021-04
    • 2022-03
    • 2022-05
    • 2022-08
    • 2023-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客