博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手动搭建 redis 集群
阅读量:5142 次
发布时间:2019-06-13

本文共 2259 字,大约阅读时间需要 7 分钟。

转自

手动搭建 redis 集群

redis 基本命令:

  • 启动 redis 服务:redis-server xxx.conf
  • 连接 redis 服务:redis-cli -h xx -p xx
  • 停止 redis 服务:redis-cli -p {port} shutdown

单机模式主要配置:

  • port:端口
  • logfile:日志文件
  • dir:redis 工作目录(存放持久化文件和日志文件)
  • dbfilename:数据库文件名
  • daemonize:是否已守护进程的方式启动 redis

集群模式主要配置:

  • cluster-enabled: 是否开启集群
  • cluster-node-timeout:节点超时时间,单位毫秒
  • cluster-config-file:集群内部配置文件 (此文件由 redis 自动生成,自动维护)

目录结构:

redis:根目录  config:放置redis配置文件  data:dir配置的目录  log:放置logfile配置的日志文件

集群搭建步骤

  1. 创建 6 个配置文件 (至少 6 个节点才能保证组成完整高可用的 redis 集群) 放在 config 目录下,本教程使用的端口区间是 6379~6384

    推荐的配置文件命名规则redis-{port}.conf
    修改每个配置文件的 port 属性为各自的端口、logfile 修改为../log/各自端口号.log、dir 修改为../data/、dbfilename 修改为各自的端口号-dump.rdb、daemonize 修改为yes、cluster-enabled 修改为yes、cluster-node-timeout 修改为15000、cluster-config-file 修改为nodes-各自的端口号.conf

  2. 配置修改完毕,逐个启动 6 个 redis

    redis-server redis-{port}.conf

  3. 执行 cluster meet {ip} {port} 进行节点之间握手通信

    注意: 握手时 ip 建议使用服务器真实 ip,因为此 ip 会被保存在集群配置文件中,如果使用 127.0.0.1 这个地址,当服务器外部的客户端 (例如 java 的 redis 客户端) 连接集群时会通过集群配置的这个地址 (127.0.0.1) 去访问节点,但实际节点并不在本地,所以会导致连接出现异常。
    首先使用redis-cli连接上其中一个 redis 服务,然后执行cluster meet {ip} {port}命令和其它端口的服务逐个进行握手
    完成后执行cluster nodes命令查看集群节点信息,如果展示 6 个节点说明节点之间已经彼此建立了联系
    节点建立联系之后集群还不能正常工作,这时集群处于下线状态, 所有的数据读写都被禁止
    执行cluster info可以查看集群状态
    只有当 16384 个槽全部分配给节点后, 集群才进入在线状态。

  4. 分配槽

    Redis Cluster 采用虚拟槽分区,槽范围是 0~16383
    把 16384 个 slot 平均分配给 6379、 6380、 6381 三个节点,以下命令利用了 bash 的字符展开特性

    redis-cli -h 127.0.0.1 -p 6379 cluster addslots {0..5461}redis-cli -h 127.0.0.1 -p 6380 cluster addslots {5462..10922}redis-cli -h 127.0.0.1 -p 6381 cluster addslots {10923..16383}

    执行完成用cluster nodes命令可查看节点已分配的槽集合

  5. 主从复制

    目前还有三个节点没有使用, 作为一个完整的集群, 每个负责处理槽的节点应该具有从节点, 保证当它出现故障时可以自动进行故障转移。
    由于首次启动的节点和被分配槽的节点都是主节点, 从节点负责复制主节点槽信息和相关的数据
    使用cluster replicate {nodeId}命令让一个节点成为从节点,命令执行必须在对应的从节点 (6382、6383、6384) 上执行, nodeId是要复制主节点的节点 ID

    //复制6379127.0.0.1:6382>cluster replicate cfb28ef1deee4e0fa78da86abe5d24566744411e OK //复制6380 127.0.0.1:6383>cluster replicate 8e41673d59c9568aa9d29fb174ce733345b3e8f1 OK //复制6381 127.0.0.1:6384>cluster replicate 40b8d09d44294d2e23c7c768efc8fcd153446746 OK

    执行完成后用cluster nodes命令可查看节点主从状态

目前为止, 我们依照 Redis 协议手动建立一个集群。 它由 6 个节点构成,3 个主节点负责处理槽和相关数据, 3 个从节点负责故障转移。

如果服务器外使用 Java 连接集群发生异常,请检查节点bind属性是否绑定了127.0.0.1,如果是请改成0.0.0.0,另外还要注意查看防火墙是否开放端口。

转载于:https://www.cnblogs.com/hihtml5/p/10083727.html

你可能感兴趣的文章
pthread_kill 和 sigaction 函数(摘抄)
查看>>
Python元组与列表的区别和联系?
查看>>
AHK Listview排序函数
查看>>
文件的暂存(git add)
查看>>
时间即效率,从高效办公到中华上下五千年
查看>>
新开始
查看>>
ccp4 functions
查看>>
[SQL Server] Excel文件导入SQL Server数据库表
查看>>
Windows10实用技巧-固定快捷方式到磁贴菜单方式
查看>>
mime.go
查看>>
微信公众平台接口配置问题
查看>>
SQL查询记录添加序号(HANA)
查看>>
如何与资源管理器互动剪切/拷贝/粘贴文件
查看>>
微信开发(1) :网页授权获取用户的基本信息 实现微信登录(转)
查看>>
linux用命令行编译使用函数库
查看>>
关于数学学习
查看>>
第九篇 AJAX
查看>>
CSS的一些总结
查看>>
C# 多线程,异步,并行编程
查看>>
面对对象初识
查看>>