• redis-cluster


     

    redis-cluster集群搭建

     

    分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。

    常见的分区规则有哈希分区和顺序分区Redis Cluster采用哈希分区规则,因此接下来会讨论哈希分区规则。

    • 节点取余分区
    • 一致性哈希分区(哈希+顺时针取余)
    • 虚拟槽分区(redis-cluster采用的方式)
    虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。
    
    Redis Cluster槽的范围是0 ~ 16383。
    
    槽是集群内数据管理和迁移的基本单位。采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,
    
    每个节点负责一定数量的槽。

     

    搭建redis cluster

    redis-cluster集群架构

    多个服务端,负责读写,彼此通信,redis指定了16384个槽。
    
    多匹马儿,负责运输数据,马儿分配16384个槽位,管理数据。
    
    ruby的脚本自动就把分配槽位这事做了

     

    0.准备六个节点,三主三从

    配置文件分别为:

    redis-7000.conf

    redis-7001.conf

    redis-7002.conf

    redis-7003.conf

    redis-7004.conf

    redis-7005.conf

     

    1.设置6个实例的配置文件

    # redis-7000.conf
    
    port 7000                                  # 端口
    daemonize yes                           # 后台运行
    dir "/opt/redis/data"                    # 数据文件夹
    logfile "7000.log"                        #  日志文件命名
    dbfilename "dump-7000.rdb"       # 开启RBD持久化
    cluster-enabled yes                      # 开启集群模式
    cluster-config-file nodes-7000.conf   # 集群内部的配置文件
    # cluster-require-full-coverage no  #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no
    # redis-7001.conf
    
    port 7001
    daemonize yes
    dir "/opt/redis/data"
    logfile "7001.log"
    dbfilename "dump-7001.rdb"
    cluster-enabled yes  
    cluster-config-file nodes-7001.conf
    # redis-7002.conf
    
    port 7002
    daemonize yes
    dir "/opt/redis/data"
    logfile "7002.log"
    dbfilename "dump-7002.rdb"
    cluster-enabled yes  
    cluster-config-file nodes-7002.conf
    # redis-7003.conf
    
    port 7003
    daemonize yes
    dir "/opt/redis/data"
    logfile "7003.log"
    dbfilename "dump-7003.rdb"
    cluster-enabled yes  
    cluster-config-file nodes-7003.conf
    # redis-7004.conf
    
    port 7004
    daemonize yes
    dir "/opt/redis/data"
    logfile "7004.log"
    dbfilename "dump-7004.rdb"
    cluster-enabled yes  
    cluster-config-file nodes-7004.conf
    # redis-7005.conf
    
    port 7005
    daemonize yes
    dir "/opt/redis/data"
    logfile "7005.log"
    dbfilename "dump-7005.rdb"
    cluster-enabled yes  
    cluster-config-file nodes-7005.conf

     

    2.启动6个实例(此时集群还不可用)

    [root@localhost conf2]# redis-server redis-7000.conf 
    [root@localhost conf2]# redis-server redis-7001.conf 
    [root@localhost conf2]# redis-server redis-7002.conf 
    [root@localhost conf2]# redis-server redis-7003.conf 
    [root@localhost conf2]# redis-server redis-7004.conf 
    [root@localhost conf2]# redis-server redis-7005.conf 

     

     

     

     3.安装ruby环境

    # 下载ruby编译包
    wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
    
    # 解压文件
    tar xf ruby-2.3.1.tar.gz
    
    # 释放编译文件,指定安装路径
    cd ruby-2.3.1/
    ./configure --prefix=/opt/ruby/
    
    # 编译安装
    make && make install
    
    # 修改环境变量
    vim /etc/profile
    
    PATH=/opt/python3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/node-v10.15.0-linux-x64/bin:/opt/ruby/bin
    
    source /etc/profile

     

    4.安装ruby操作redis的模块

    # 下载
    wget http://rubygems.org/downloads/redis-3.3.0.gem
    
    # 安装
    gem install -l redis-3.3.0.gem
    
    # 搜索创建redis集群的命令
    find /opt -name redis-trib.rb

     

    5.一键创建redis集群

    /opt/redis-4.0.12/src/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 1  每个主节点,有一个从节点,

     

     6.查看集群状态

    redis-cli -p 7000 cluster info

     

    redis-cli -p 7000 cluster nodes

     

     

    7.测试写入数据

    redis-cli -p 7000 -c
    
    # -p 指定端口
    # -c  指定开启集群模式

     

     

     

     

     

     

  • 相关阅读:
    Python天天美味(17) open读写文件
    Linux服务器性能数据收集 Sysstat介绍
    招募Asp.net开发人员一名[上海]
    Python天天美味(21) httplib,smtplib
    Python天天美味(23) enumerate遍历数组
    试用IronPython
    Python天天美味(22) 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    Python天天美味(13) struct.unpack
    Python天天美味(12) 条件判断的缩写
    分享Silverlight/WPF/Windows Phone一周学习导读(11月21日11月27日)
  • 原文地址:https://www.cnblogs.com/st-st/p/10277712.html
Copyright © 2020-2023  润新知