zoukankan      html  css  js  c++  java
  • redis集群部署

    环境变量添加

    vim /etc/profile.d/redis.sh

    内容如下

    export REDIS_HOME=/home/software/redis-5.0.4/src

    export PATH=$REDIS_HOME:$PATH

    刷新变量

    source /etc/profile.d/redis.sh

    集群部署

    Master192.168.2.160

    Slave:    192.168.2.161 192.168.2.162

    Sentinel:  192.168.2.161  192.168.2.162192.168.2.163

    Master配置文件

    bind 192.168.2.160

    protected-mode yes

    port 6379

    tcp-backlog 511

    timeout 0

    tcp-keepalive 300

    daemonize yes

    supervised no

    pidfile /var/run/redis-m6379.pid

    loglevel notice

    logfile "/home/software/redis-5.0.4/redis-m6379.log"

    databases 16

    always-show-logo yes

    save 900 1

    save 300 10

    save 60 10000

    stop-writes-on-bgsave-error yes

    rdbcompression yes

    rdbchecksum yes

    dbfilename dump.rdb

    dir /home/software/redis-5.0.4

    replica-serve-stale-data yes

    replica-read-only yes

    repl-diskless-sync no

    repl-diskless-sync-delay 5

    repl-disable-tcp-nodelay no

    replica-priority 100

    lazyfree-lazy-eviction no

    lazyfree-lazy-expire no

    lazyfree-lazy-server-del no

    replica-lazy-flush no

    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

    aof-use-rdb-preamble yes

    lua-time-limit 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

    stream-node-max-bytes 4096

    stream-node-max-entries 100

    activerehashing yes

    client-output-buffer-limit normal 0 0 0

    client-output-buffer-limit replica 256mb 64mb 60

    client-output-buffer-limit pubsub 32mb 8mb 60

    hz 10

    dynamic-hz yes

    aof-rewrite-incremental-fsync yes

    rdb-save-incremental-fsync yes

    Slave配置

    ########从库##############

    slaveof <masterip> <masterport>

    #设置该数据库为其他数据库的从数据库

    masterauth <master-password>

    #主从复制中,设置连接master服务器的密码(前提master启用了认证)

    slave-serve-stale-data yes

    # 当从库同主库失去连接或者复制正在进行,从库有两种运行方式:

    # 1) 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求

    # 2) 如果slave-serve-stale-data设置为no,除了INFOSLAVOF命令之外的任何请求都会返回一个错误"SYNC with master in progress"

    slave-priority 100

    #当主库发生宕机时候,哨兵会选择优先级最高的一个称为主库,从库优先级配置默认100,数值越小优先级越高

    slave-read-only yes

    #从节点是否只读;默认yes只读,为了保持数据一致性,应保持默认

    ####主库##############

    repl-disable-tcp-nodelay no

    #slavemaster同步后(发送psync/sync),后续的同步是否设置成TCP_NODELAY假如设置成yes,则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成masterslave数据不一致假如设置成no,则redis master会立即发送同步数据,没有延迟

    #前者关注性能,后者关注一致性

    repl-ping-slave-period 10

    #从库会按照一个时间间隔向主库发送PING命令来判断主服务器是否在线,默认是10

    repl-backlog-size 1mb

    #复制积压缓冲区大小设置

    repl-backlog-ttl 3600

    #master没有slave一段时间会释放复制缓冲区的内存,repl-backlog-ttl用来设置该时间长度。单位为秒。

    min-slaves-to-write 3

    min-slaves-max-lag 10

    #设置某个时间断内,如果从库数量小于该某个值则不允许主机进行写操作,以上参数表示10秒内如果主库的从节点小于3个,则主库不接受写请求,min-slaves-to-write 0代表关闭此功能。

    Sentinel配置文件

    bind 192.168.2.163

    port 26379

    daemonize yes

    pidfile "/var/run/redis-sentinel.pid"

    logfile "/home/software/redis-5.0.4/sentinel26379.log"

    dir "/home/software/redis-5.0.4"

    sentinel myid 5464a132aac7f43773d311cf78c21312c0c45ae8

    sentinel deny-scripts-reconfig yes

    sentinel monitor mymaster 192.168.2.160 6379 2

    sentinel config-epoch mymaster 0

    sentinel leader-epoch mymaster 0

    protected-mode no

    sentinel known-replica mymaster 192.168.2.162 6379

    sentinel known-replica mymaster 192.168.2.161 6379

    sentinel current-epoch 0

    加入开机启动:vim /etc/rc.d/init.d/redis

    Redis主从启动如下内容:

    #!/bin/sh

    #chkconfig: 2345 55 25

    #

    # Simple Redis init.d script conceived to work on Linux systems

    # as it does use of the /proc filesystem.

    ### BEGIN INIT INFO

    # Provides:     redis_6379

    # Default-Start:        2 3 4 5

    # Default-Stop:         0 1 6

    # Short-Description:    Redis data structure server

    # Description:          Redis data structure server. See https://redis.io

    ### END INIT INFO

    source /etc/init.d/functions

    REDISPORT=6379

    EXEC=/usr/bin/redis-server

    CLIEXEC=/usr/bin/redis-cli

    PIDFILE=/run/redis_${REDISPORT}.pid

    CONF="/home/redis/conf/redis.conf"

    AUTH=""

    BIND_IP='192.168.2.211'     #配置你所在的主机ip

    start(){

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                $EXEC $CONF

        fi

        if [ "$?"="0" ]

        then  

            echo "Redis is running..."

        else

            echo "Redis not running !"

        fi

    }

    stop(){

        if [ ! -f $PIDFILE ]

        then

            echo "$PIDFILE does not exist, process is not running"

        else

            PID=$(cat $PIDFILE)

            echo "Stopping ..."

            #$CLIEXEC -h $BIND_IP -a $AUTH -p $REDISPORT shutdown

            $CLIEXEC -h $BIND_IP -p $REDISPORT shutdown

            while [ -x /proc/${PID} ]

            do

                echo "Waiting for Redis to shutdown ..."

                sleep 1

            done

            echo "Redis stopped."

        fi

    }

    status(){

        ps -ef | grep redis-server | grep -v grep >/dev/null 2>&1

        if [ $? -eq 0 ];then

            echo "redis server is running."

        else

            echo "redis server is stopped."

        fi

    }

    case "$1" in

        start)

            start

            ;;

        stop)

            stop

            ;;

        restart)

         stop

         start

        ;;

        status)

            status

            ;;

        *)

            echo "Please use start or stop as first argument"

            ;;

    esac

    哨兵模式的启动配置文件:vim /etc/rc.d/init.d/sentinel

    #!/bin/sh

    #chkconfig: 2345 55 25

    #

    # Simple Sentinel init.d script conceived to work on Linux systems

    # as it does use of the /proc filesystem.

    ### BEGIN INIT INFO

    # Provides:     redis_6379

    # Default-Start:        2 3 4 5

    # Default-Stop:         0 1 6

    # Short-Description:    Sentinel data structure server

    # Description:          Sentinel data structure server. See https://redis.io

    ### END INIT INFO

    source /etc/init.d/functions

    REDISPORT=26379

    EXEC=/usr/bin/redis-sentinel

    CLIEXEC=/usr/bin/redis-cli

    PIDFILE=/run/redis-sentinel.pid

    CONF="/home/redis/conf/sentinel.conf"

    AUTH=""

    BIND_IP='192.168.2.211'

    start(){

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Sentinel server..."

                $EXEC $CONF

        fi

        if [ "$?"="0" ]

        then  

            echo "Sentinel is running..."

        else

            echo "Sentinel not running !"

        fi

    }

    stop(){

        if [ ! -f $PIDFILE ]

        then

            echo "$PIDFILE does not exist, process is not running"

        else

            PID=$(cat $PIDFILE)

            echo "Stopping ..."

            #$CLIEXEC -h $BIND_IP -a $AUTH -p $REDISPORT shutdown

            $CLIEXEC -h $BIND_IP -p $REDISPORT shutdown

            while [ -x /proc/${PID} ]

            do

                echo "Waiting for Sentinel to shutdown ..."

                sleep 1

            done

            echo "Sentinel stopped."

        fi

    }

    status(){

        ps -ef | grep redis-sentinel | grep -v grep >/dev/null 2>&1

        if [ $? -eq 0 ];then

            echo "Sentinel server is running."

        else

            echo "Sentinel server is stopped."

        fi

    }

    case "$1" in

        start)

            start

            ;;

        stop)

            stop

            ;;

        restart)

         stop

         start

        ;;

        status)

            status

            ;;

        *)

            echo "Please use start or stop as first argument"

            ;;

    esac

    加入开机启动:

    chmod +x redis

    chmod +x sentinel

    chkconfig  --add redis

    chkconfig  --add sentinel

  • 相关阅读:
    计算机视觉(四)
    计算机视觉(三)
    计算机视觉(二)
    计算机视觉(一)
    基于opencv3实现运动物体识别
    tensorRT程序设计框架_4
    Cuda程序的设计-2
    神经网络的快速体验
    STL简介_18
    函数模板-17
  • 原文地址:https://www.cnblogs.com/fatyao/p/10664344.html
Copyright © 2011-2022 走看看