zoukankan      html  css  js  c++  java
  • Redis集群分布

    Redis系列

    作者Mr.Chen,转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

    Redis集群存储

    先看下架构图,下面说明其存储原理:首先redis每个节点上的数据都是不一样的,只有主从节点的数据是一样,这分别体现出其分布式及高可用性。每个主节点负责的是不同范围的槽(slot),根据指定算法来确定值所对应的槽进而进行存取操作。

    注意点:

    • redis最低要求3个或以上的主节点(Master Node)
    • 一个主节点可对应多个从节点(Slave Node),主节点挂掉后,自有的投票机制会选出其中一个从节点晋升为主节点
    • 任何一个主节点挂掉都会使整个redis服务器宕机
    • 槽(slot)直接对应的是主节点

    Redis集群搭建

    redis集群搭建有几种方法,我使用的是官方推荐的redis-cluster

    第一步:安装ruby

    其实整个流程用到的是一个叫redis-trib.rb工具,因其由ruby语言编写所以需要相应环境的支持。

    下载安装:

    因为yum库上的版本过低,所以我是直接从官网上下载tar包解压安装的,如果原来有安装旧版本的,建议先卸载干净旧版本再进行新版本的安装,不然会有不少麻烦的错误~

    我这里使用的是2.4.3稳定版

    wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz
    
    make && make install
    
    ruby –v
    
    gem –v

    gem install redis

    ps:gem是ruby的一个包管理器,类似yum,gem install redis安装的是集群所需的组件

    第二步:节点配置

    节点配置主要有以下几步:

    • 在多个节点上安装redis
    • 节点配置文件redis.conf中打开集群属性,cluster-enable yes
    • 修改端口号,port NodePort
    • 修改集群的节点配置文件,cluster-config-file nodes_port.conf
    • 若是不同的主机需要修改绑定的主机地址,bind host
    • 可以使用 include 来共享相同的配置,include same.conf

    第三步:启动各节点redis服务器

    第四步:创建集群

    现在使用redis-trib.rb工具对redis的节点进行集群管理,创建集群3主3从,这里示例是单机多节点:

    ./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

    参数replicas 表示每个主节点下有多少个从节点,至于哪个节点是主哪个节点是从就由redis来进行分配。

    ps:有时宕机后需要重新创建或新增节点时会出现这样的错误:

    [ERR] Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

    提示中说明了两个原因,一个是节点的配置信息已过期(指的是redis.conf中的cluster-config-file,一般位于主节点根目录下),另一个原因是本地数据库存在一些值造成了影响,那么解决办法就有以下两种了:

    • 删除nodes-port.conf
    • 删除aof、rdb文件

    需要注意的是在进行以上操作前要先把redis的进程关闭,处理完之后再重新启动

    最后一步:测试

    //在节点7000设置值
    
    ./redis-cli -c -p 7000
    
    127.0.0.1:7000> set name cjh
    
    -> Redirected to slot [5798] located at 127.0.0.1:7001
    
    OK
    
    
    //在节点7001获取值
    
    ./redis-cli -c -p 7001
    
    127.0.0.1:7001> get name
    
    "cjh"
    
    
    //查看集群节点的信息
    
    127.0.0.1:7003> cluster nodes 

    测试通过~

  • 相关阅读:
    Ruby的一些基本知识
    Seleniumwebdriver系列教程(七)————如何处理alert和confirm
    Seleniumwebdriver系列教程(八)————如何操作select下拉框
    Ruby 控制结构
    Seleniumwebdriver系列教程(十)————使用jquery辅助进行测试
    Ruby是一门面向对象语言
    Seleniumwebdriver系列教程(九)————如何智能的等待页面加载完成
    Ruby 正则表达式
    执行ajax成功后进行页面的刷新
    Nacos介绍与安装启动
  • 原文地址:https://www.cnblogs.com/cjh-notes/p/8452217.html
Copyright © 2011-2022 走看看