zoukankan      html  css  js  c++  java
  • redis3集群管理

    以下操作基于redis3.X版本:
    Redis集群存储原理:Redis 集群使用数据分片(sharding),而非一致性哈希(consistency hashing)来实现,一个 Redis 集群包含 16384 个哈希槽,数据库中的每个键都属于这 16384 个哈希槽的其中一个,集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽,其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和。

    Redis使用redis-trib.rb脚本来进行集群的创建和管理操作,该脚本是用ruby编写的,需要先安装ruby支持:

    1、yum install zlib ruby rubygems 

    2、安装ruby的Redis插件:gem install redis
    例:
    redis-trib.rb create --replicate 1 server1:6379 server1:6380 server2:6379 server2:6380 server3:6379 server3:6380
    --replicate 1: 一个副本的意思,上面整个命令的意思是创建三主三从的集群
    注:
    为真正实现集群的高可用,集群中的每个节点应位于不同的服务器上
    如果只是用3台服务器创建6节点的集群,还是避免不了单台服务器宕机或网络故障导致数据写入不可用,从而导致系统不可用

    添加主节点:
    1)、添加节点:redis-trib.rb add-node new_server:port exists_server:exists_port
    2)、重新分配哈希槽:redis-trib.rb reshard exists_master_server:exists_master_port,根据提示进行操作
    3)、查看集群状态:redis-cli -c -h server:port cluster nodes

    添加从节点:
    1)、添加节点:redis-trib.rb add-node new_server:port exists_server:exists_port
    2)、指定主节点:redis-cli -c -h new_server:port -> cluster replicate master_uid
    3)、查看集群状态:redis-cli -c -h server:port cluster nodes

    集群状态的调整:
    假如有3台服务器搭建6节点的集群,集群状态如下:
    server1:6380 slaveof server1:6379
    server2:6380 slaveof server3:6379
    server3:6380 slaveof server2:6379
    这种集群状态是不合理的,合理的状态是主从交叉配置,一定程度上提升了高可用

    在线调整:server1:6380的主调整为server2:6379,server3:6380的主调整为server1:6379
    1)、删除server1:6380和server3:6380节点:redis-trib.rb del-node server1:6380 uid,redis-trib.rb del-node server3:6380 uid
    2)、停止server1:6380和server3:6380节点:redis-cli -c -h server:port shutdown
    3)、清空server1:6380和server3:6380节点的集群配置文件 cat /dev/null > server{1,3}:6380.conf
    4)、开启server1:6380和server3:6380节点:redis-server -c 6380.conf
    5)、指定主节点:redis-trib.rb add-node --slave --master-id server2_uid server1:6380 server2:6379
    redis-trib.rb add-node --slave --master-id server1_uid server3:6380 server1:6379
    6)、查看集群状态:redis-cli -c -h server:port cluster nodes


    调整后的集群状态如下:
    server1:6380 slaveof server2:6379
    server2:6380 slaveof server3:6379
    server3:6380 slaveof server1:6379

  • 相关阅读:
    内置函数,闭包。装饰器初识
    生成器
    百度ai 接口调用
    迭代器
    HashMap与ConcurrentHashMap的测试报告
    ConcurrentHashMap原理分析
    centos 5.3 安装(samba 3.4.4)
    什么是shell? bash和shell有什么关系?
    Linux中使用export命令设置环境变量
    profile bashrc bash_profile之间的区别和联系
  • 原文地址:https://www.cnblogs.com/lishug/p/11592555.html
Copyright © 2011-2022 走看看