• Redis 3.0.0 集群部署


    简述:

    1.0.1:redis cluster的现状

    目前redis支持的cluster特性

    1):节点自动发现

    2):slave->master 选举,集群容错

    3):Hot resharding:在线分片

    4):进群管理:cluster xxx

    5):基于配置(nodes-port.conf)的集群管理

    6):ASK 转向/MOVED 转向机制.

    1.1.0redis cluster 架构

    1.1.1redis-cluster架构图

    1.1.2架构细节:

    (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

    (2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

    (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

    (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

    redis-cluster选举:容错、

    (1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

    (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

        a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.

        b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

    软件版本

    Linux系统版本:

     centos 6.5 2.6.32-431.el6.x86_64

    Redis-3.0.7

    ruby

    2.0.0redis集群搭建

    2.0.1机器列表

    Centos01:192.168.161.233     从

    Centos02:192.168.161.234     从

    Centos03:192.168.161.235     从

    Centos04:192.168.161.236     主

    Centos05:192.168.161.237     主

    Centos06:192.168.161.238     主

    2.0.2Redis安装

    6台机器分别安装 redis-3.0.7
    #yum –y install  gcc make tcl                               
    安装软件依赖包
    #cp redis-3.0.7.tar.gz /opt
    将安装包拷贝至opt目录
    #cd /opt
    进入opt目录
    #tar –xvf redis-3.0.7.tar.gz
    解压
    #cd redis-3.0.7
    #make 
    编译 安装redis
    #make test
    

      

    2.0.3修改redis.conf配置文件:

    daemonize yes 		//后台运行开启
    pidfile /bestpayserver/redis-3.0-data/redis.pid		//pid文件
    port 6380			//reids提供服务端口
    logfile "/bestpayserver/redis-3.0-log/redis.log"			//日志文件配置
    dir /bestpayserver/redis-3.0-data/			//数据存放路径
    cluster-enabled yes			//打开redis集群
    cluster-config-file nodes-6380.conf		//cluster集群配置文件(启动自动生成)
    cluster-node-timeout 15000	//节点互链超时阀值
    appendonly yes	
    

      

    2.0.4部署脚本

    也可以写成脚本用salt跑 
    -------------------------------------------------------------------------华丽的分割线---------------------------------------------------------------------------
    #!/usr/bin/bash
    yum -y install gcc make tcl;
    cp redis-3.0.7.tar.gz /opt;
    cd /opt;
    tar -xvf redis-3.0.7.tar.gz;
    cd redis-3.0.7;
    make
    make test;
    sed -i 's/daemonize no/daemonize yes/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/pidfile /var/run/redis.pid/pidfile /bestpayserver/redis-3.0-data/redis.pid/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/port 6379/port 6380/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/logfile ""/logfile "/bestpayserver/redis-3.0-log/redis.log"/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/dir .//dir /bestpayserver/redis-3.0-data//' /opt/redis-3.0.7/redis.conf;
    sed -i 's/# cluster-enabled yes/cluster-enabled yes/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/' /opt/redis-3.0.7/redis.conf;
    sed -i 's/appendonly no/appendonly yes/' /opt/redis-3.0.7/redis.conf;
    mkdir -p /bestpayserver/redis-3.0-log/;
    mkdir -p /bestpayserver/redis-3.0-data/;
    /opt/redis-3.0.7/src/redis-server /opt/redis-3.0.7/redis.conf &;
    -------------------------------------------------------------------------更华丽的分割线---------------------------------------------------------------------------
    

    salt安装

    Salt传输文件到各服务器
    salt 'centos*' cp.get_file salt://redis-3.0.7.tar.gz /home/redis-3.0.7.tar.gz
    salt 'centos*' cp.get_file salt://sed.sh /home/redis3install.sh
    salt 'centos*' cmd.run 'sh /home/redis3insatl.sh
    查看进程
    salt '*' cmd.run 'ps -ef |grep redis'
    

    3.0.5安装ruby

    Reids.trib.rb  是redis集群命令行工具,是一个ruby程序所以我们需要ruby环境才能启动它

    随意挑选两台机器安装ruby

    # yum -y install ruby ruby-devel rubygems rpm-build
    # gem install redis
    

    2.0.6创建集群

    # /opt/redis-3.0.7/src/redis-trib.rb create --replicas 1 192.168.161.233:6380 192.168.161.234:6380 192.168.161.235:6380 192.168.161.236:6380 192.168.161.237:6380 192.168.161.238:6380
    

    [OK] All 16384 slots covered 则集群创建成功。

    3.0.7查看集群状态

    # /opt/redis-3.0.7/src/redis-cli -c -p 6380                    //进入redis客户端
    127.0.0.1:6380> cluster info			//查看集群信息
    

    127.0.0.1:6380> cluster nodes			//查询集群节点
    

    4.0.0集群操作:

    CLUSTER INFO 打印集群的信息  
    CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。  
    节点  
    CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。  
    CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。  
    CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。  
    CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。  
    槽(slot)  
    CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。  
    CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。  
    CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。  
    CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。  
    CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。  
    CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。  
    CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。  
    键  
    CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。  
    CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。  
    CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。 
    

      

  • 相关阅读:
    ios web 媒体查询兼容
    Linux python 虚拟环境管理
    three.js 纹理动画实现
    three.js 在模型上移动相机
    three.js 模型拖动之DragControls控制器
    three.js 添加html内容、文本
    微信公众号对接记录
    事务的日志
    事务的隔离级别
    事务中的锁
  • 原文地址:https://www.cnblogs.com/from-mark/p/5602491.html
Copyright © 2020-2023  润新知