• redis-cluster集群搭建


    redis cluster集群搭建

    1、环境说明

    系统版本:CentOS Linux release 7.2.1511 (Core)
    Redis 版本:3.2.5
    Ruby 版本:2.4.4
    数据目录:/data/redis/{6379,6380,6381}/
    安装位置:/data/software/
    日志目录:/data/logs/redis/{6379,6380,6381}/
    端口:1.247: 6379 6380 6381 :1.248: 6379 6380 6381

    2、创建 redis 数据目录,日志目录
    mkdir -p /data/redis/{6379,6380,6381}
    mkdir -p /data/logs/redis/{6379,6380,6381}
    
    3、安装 ruby 及 redis 模块
    3.1 安装 rvm:
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    curl -sSL https://get.rvm.io | bash -s stable
    source /usr/local/rvm/bin/ruby-rvm-env
    source /etc/profile.d/rvm.sh 
    

    备注:第一步如因网络问题导致失败,可多尝试几次
    参考:http://rvm.io/

    3.2 安装ruby

    查看 rvm 库中已知的 ruby 版本,安装一个较新 ruby 版本:

    rvm list known
    rvm install 2.4
    

    3.3安装 redis 模块:

    gem install redis
    
    4. 安装Redis
    4.1 下载redis
    cd /data/software/
    wget http://download.redis.io/releases/redis-3.2.5.tar.gz
    
    4.2 解压安装redis
    tar xf redis-3.2.5.tar.gz
    cd redis-3.2.5
    make && make install
    cd utils/
    +./install_server.sh 
    Welcome to the redis service installer
    This script will help you easily set up a running redis server
    .......
    Starting Redis server...
    Installation successful!
    

    备注:执行install_server.sh脚本后,一路回车即可,或者根据需要修改相关配置,脚本执行完毕后会自动启动实例,此时先停止实例,继续修改配置文件。
    关闭redisl

    /etc/init.d/redis_6379 stop
    
    5.修改配置文件,并启动多实例
    5.1 修改redis-cluster配置参数
    bind 192.168.1.247
    appendonly  yes 
    cluster-enabled yes
    cluster-config-file /data/tools/redis/conf/6379-node.conf
    cluster-node-timeout 15000 
    cluster-slave-validity-factor 10 master
    cluster-migration-barrier 1
    cluster-require-full-coverage no
    
    5.2 创建多实例

    修改配置文件和启动文件中的端口即可。其他配置一样,注意数据目录和配置目录要创建好
    以下为2启动程序和配置文件的示例,修改端口即可。
    6379启动程序

    #!/bin/sh
    #Configurations injected by install_server below....
    
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    PIDFILE=/var/run/redis_6379.pid
    CONF="/data/tools/redis/conf/6379/6379.conf"
    REDISPORT="6379"
    ###############
    # SysV Init Information
    # chkconfig: - 58 74
    # description: redis_6379 is the redis daemon.
    ### BEGIN INIT INFO
    # Provides: redis_6379
    # Required-Start: $network $local_fs $remote_fs
    # Required-Stop: $network $local_fs $remote_fs
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Should-Start: $syslog $named
    # Should-Stop: $syslog $named
    # Short-Description: start and stop redis_6379
    # Description: Redis daemon
    ### END INIT INFO
    
    
    case "$1" in
        start)
            if [ -f $PIDFILE ]
            then
                echo "$PIDFILE exists, process is already running or crashed"
            else
                echo "Starting Redis server..."
                $EXEC $CONF
            fi
            ;;
        stop)
            if [ ! -f $PIDFILE ]
            then
                echo "$PIDFILE does not exist, process is not running"
            else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
            fi
            ;;
        status)
            PID=$(cat $PIDFILE)
            if [ ! -x /proc/${PID} ]
            then
                echo 'Redis is not running'
            else
                echo "Redis is running ($PID)"
            fi
            ;;
        restart)
            $0 stop
            $0 start
            ;;
        *)
            echo "Please use start, stop, restart or status as first argument"
            ;;
    esac
    

    6379配置文件

    bind 192.168.1.248
    protected-mode yes
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /var/run/redis.pid
    loglevel notice
    logfile "/data/logs/redis/6379/redis.log"
    databases 16
    save ""
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /data/redis/6379
    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
    maxmemory 4gb
    appendonly yes
    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 /data/tools/redis/conf/6379/6379-node.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
    
    5.3 启动redis,2台机器分别执行
    /etc/init.d/redis_6379 start
    /etc/init.d/redis_6380 start
    /etc/init.d/redis_6381 start
    
    6、启动redis-cluster
    6.1 初始化redis-cluster
    redis-trib.rb create --replicas 1 192.168.1.247:6379 192.168.1.247:6380 192.168.1.247:6381 192.168.1.248:6379 192.168.1.248:6380 192.168.1.248:6381
    
    6.2 基本测试,命令行进入cluster 需要 加上-c参数,由于bind了IP,因此此处要-h 指定ip
    redis-cli -c -h 192.168.1.247
    192.168.1.247:6379> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_sent:57818
    cluster_stats_messages_received:57818
    192.168.1.247:6379> 
    

    从上可以看出,节点状态是ok,有6个节点。此命令也可用于监控redis-cluster的集群状态。
    监控脚本

    redis-cli -c -h 192.168.1.247 cluster info|grep 'cluster_state:ok'|wc -l
    
  • 相关阅读:
    O(n)回文子串(Manacher)算法
    LightOJ 1282
    LightOJ
    LightOJ
    POJ-2563
    POJ-2398
    POJ-2318
    ZOJ-3318
    [svc]ftp协议数据连接的2种模式
    [py]python中的特殊类class type和类的两面性图解
  • 原文地址:https://www.cnblogs.com/cangyuefeng/p/10339106.html
Copyright © 2020-2023  润新知