• Redis 3.2 生产环境集群部署


    一、 概述

    Redis从3.0开始支持集群模式。

    1.1   架构图

    架构细节:

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

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

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

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

      1.2   集群特点

      1) 节点自动发现:所有节点相互连接

      2) 集群消息通信通过集群总线通信,集群总线端口为客户端服务端口+10000(自动生成)

      3) 节点与节点之间通过二进制协议进行通信

      4) 数据按照Slot存储分布在多个Redis实例上

      5) 集群节点挂掉会自动故障转移

    一、 集群安装

    本文采用2台主机,三主三从集群模式部署,每台机器部署三个节点。

      2.1 服务器规划

    主机

    IP

    端口

    node-10

    172.10.10.10

    6385、6386、6387

    node-11

    172.10.10.11

    6385、6386、6387

    2.2 下载(以下步骤先以node-10机器为例,node11机器步骤一样按照执行一遍即可)

    [root@node-10 ~]# cd tools/
    [root@node-10 tools]# wget http://download.redis.io/releases/redis-3.2.3.tar.gz
    [root@node-10 tools]# tar -xf redis-3.2.3.tar.gz
    [root@node-10 tools]# cd redis-3.2.3
    

     2.3 编译

    [root@node-10 redis-3.2.3]# make
    [root@node-10 redis-3.2.3]# make MALLOC=libc
    [root@node-10 redis-3.2.3]# make install PREFIX=/opt/redis-cluster
    执行完这一步可以看到默认生成以下redis相关命令
    [root@node-10 ~]# ll /opt/redis-cluster/bin/
    total 6864
    -rwxr-xr-x 1 root root  337424 Feb 28 14:06 redis-benchmark
    -rwxr-xr-x 1 root root   24992 Feb 28 14:06 redis-check-aof
    -rwxr-xr-x 1 root root 3083072 Feb 28 14:06 redis-check-rdb
    -rwxr-xr-x 1 root root  490264 Feb 28 14:06 redis-cli
    lrwxrwxrwx 1 root root      12 Feb 28 14:06 redis-sentinel -> redis-server
    -rwxr-xr-x 1 root root 3083072 Feb 28 14:06 redis-server
    

      

    2.4 为三个节点创建对应的根目录及每个节点数据、日志、配置文件目录

    [root@node-10 ~]# mkdir -p /opt/redis-cluster/{6385,6386,6387}
    [root@node-10 ~]# mkdir /opt/redis-cluster/6385/{data,conf,logs}
    [root@node-10 ~]# mkdir /opt/redis-cluster/6386/{data,conf,logs}
    [root@node-10 ~]# mkdir /opt/redis-cluster/6387/{data,conf,logs}
    

    2.5 编辑配置文件

    注意:不同节点端口不同,需要根据实际情况修改对应的实例数据的相应目录位置信息(这里以6385实例为例,其它按照这个修改即可)。

    [root@node-10 ~]# vim /opt/redis-cluster/6385/conf/6385_redis.conf
    bind 0.0.0.0
    protected-mode yes
    port 6385
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /var/run/redis_6385.pid
    loglevel notice
    logfile "/opt/redis-cluster/6385/logs/redis_6385.log"
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir "/opt/redis-cluster/6385/data"
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    lua-time-limit 5000
    cluster-enabled yes
    cluster-config-file "/opt/redis-cluster/6385/conf/nodes.conf"
    cluster-node-timeout 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes 

    2.6 编辑统一启动脚本

    [root@node-10 ~]# vim /opt/redis-cluster/start_rediscluster.sh
    #!/bin/bash
    REDIS_HOME=/opt/redis-cluster
    $REDIS_HOME/bin/redis-server $REDIS_HOME/6385/conf/6385_redis.conf
    $REDIS_HOME/bin/redis-server $REDIS_HOME/6386/conf/6386_redis.conf
    $REDIS_HOME/bin/redis-server $REDIS_HOME/6387/conf/6387_redis.conf
    [root@node-10 ~]# chmod +x /opt/redis-cluster/start_rediscluster.sh
    

    2.7 启动

    [root@node-10 ~]# cd /opt/redis-cluster/
    [root@node-10 redis-cluster]# ./start_rediscluster.sh 
    [root@node-10 redis-cluster]# ps -ef|grep redis
    root       5247      1  0 14:22 ?        00:00:00 /opt/redis-cluster/bin/redis-server 0.0.0.0:6385 [cluster]
    root       5249      1  0 14:22 ?        00:00:00 /opt/redis-cluster/bin/redis-server 0.0.0.0:6386 [cluster]
    root       5251      1  0 14:22 ?        00:00:00 /opt/redis-cluster/bin/redis-server 0.0.0.0:6387 [cluster]
    root       5260   1507  0 14:22 pts/1    00:00:00 grep --color=auto redis
    

      

    注:这里只是部署好一台机器的三个redis实例,另一台机器部署与这一台一样,执行相应的命令即可,这里不再进行演示。

    三、 创建集群(随便一台机器执行)

    以上部署只是把单个节点部署好,需要把所有节点整合成一个集群,这样一个三主三从的Redis集群才算部署完成。

    3.1 安装ruby

    集群创建我们使用redis自带的redis-trib工具,该工具为ruby开发,需要安装ruby。

    [root@node-10 ~]# yum install ruby -y
    [root@node-10 ~]# gem install redis
    

      

    如果出现以上安装错误信息。我们需要升级ruby版本:

    ## 安装ruby管理工具rvm
    [root@node-10 ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 
    [root@node-10 ~]# curl -sSL https://get.rvm.io | bash -s stable
    ## 加载
    [root@node-10 ~]# source /etc/profile.d/rvm.sh
    ## 查看ruby版本
    [root@node-10 ~]# rvm list known
    ## 安装2.4.6
    [root@node-10 ~]# rvm install 2.5.1
    

      

    [root@node-10 ~]# rvm use 2.5.1 –default
    ## 安装redis-trib.rb即redis集群工具
    [root@node-10 ~]# gem install redis -v 3.3.5
    ## 启动集群
    [root@node-10 ~]# cd tools/redis-3.2.3/src/
    [root@node-10 src]# ./redis-trib.rb create --replicas 1 172.16.10.10:6385 172.16.10.10:6386 172.16.10.10:6387 172.16.10.11:6385 172.16.10.11:6386 172.16.10.11:6387
    

     

    --replicas 1:表示我们想为每个master指定一个slave

    ## 验证
    [root@node-10 bin]# cd /opt/redis-cluster/bin/
    [root@node-10 bin]# ./redis-cli -p 6385 -c
    

      

    11服务器:6385,10服务器:6385、6386为主节点

    3.2 集群重启

    由于redis-trib的功能还比较弱,重启集群的话需要kill各个节点进程,然后再执行启动脚本
    ## kill命令
    [root@node-10 ~]# ps -ef | grep redis |grep -v grep|awk '{print $2}'|xargs kill
    ## 启动
    [root@node-10 ~]# cd /opt/redis-cluster/
    [root@node-10 redis-cluster]# ./start_rediscluster.sh
    

     

  • 相关阅读:
    12个JavaScript MVC框架评估 简单
    chrome developer tool 调试技巧 简单
    转CSS3线性渐变 简单
    base64:URL背景图片与web页面性能优化 简单
    转linux下apache安装gzip压缩 简单
    转思考什么时候使用Canvas 和SVG 简单
    转周报的逻辑 简单
    浏览器三种刷新方式采取的不同缓存机制 简单
    poj 1308 Is It A Tree? (并查集)
    poj 2912 Rochambeau (并查集+枚举)
  • 原文地址:https://www.cnblogs.com/tchua/p/12394473.html
Copyright © 2020-2023  润新知