美文网首页
redis安装集群

redis安装集群

作者: 秋幻旎苏 | 来源:发表于2017-07-01 14:06 被阅读0次

    一.环境

    centos 6.8
    develop1 192.168.1.10
    develop2 192.168.1.11
    develop3 192.168.1.12
    redis-3.2.8  
    

    redis集群从3.0开始需要至少3个主节点才能让集群正常工作,集群中主节点超过半数失败,整个集群就不可用。
    本次实验使用3台机器,每台机器启动两个实例。
    参考:http://www.cnblogs.com/love19791125/p/5102182.html
    下载redis-3.2.8
    wget http://download.redis.io/releases/redis-3.2.8.tar.gz

    二.安装

    在develop1:

    tar -xzf redis-3.2.8.tar.gz  
    mkdir -p /opt/redisdb/{6379,6380} #存放不同端口的配置文件和数据
    cp  /opt/redis-3.2.8/redis.conf /opt/redisdb/6379
    cp  /opt/redis-3.2.8/redis.conf /opt/redisdb/6380
    

    redis.conf

    sed -i "s/bind 127.0.0.1/bind 192.168.1.10/" /opt/redisdb/6379/redis.conf
    sed -i "s/daemonize no/daemonize yes/" /opt/redisdb/6379/redis.conf
    sed -i "s/# cluster-enabled yes/cluster-enabled yes/" /opt/redisdb/6379/redis.conf
    sed -i "s/# cluster-node-timeout 15000/cluster-node-timeout 15000/" /opt/redisdb/6379/redis.conf
    sed -i "s/logfile \"\"/logfile \"\/opt\/redisdb\/6370\/6370.log\"/" /opt/redisdb/6379/redis.conf
    
    
    bind 192.168.1.10             #本服务器的ip
    protected-mode yes。          #是否开启保护模式,默认开启。开启后要指定bind,否者redis只允许本地访问。
    port 6379                     #实例端口
    #此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度,当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。
    tcp-backlog 511
    # 此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。
    timeout 0
    #如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,检测客户端是否还处于健康状态,避免服务器一直阻塞,官方建议300秒(从3.2.1版本开始的)
    tcp-keepalive 300
    daemonize yes                #是否在后台执行,yes:后台执行   no:不是后台执行(旧版本默认)
    #可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
    supervised no
    #配置pid文件路径。当redis以守护模式启动时,如果没有配置pidfile,pidfile默认值是/var/run/redis.pid 
    pidfile /var/run/redis_6379.pid
    loglevel notice              #日志级别  生产环境notice ,开发/测试环境 debug
    logfile "/opt/redisdb/6379/6379.log"。 #制定日志文件文件
    databases 16                 # 数据库数量,默认16个(0-15)
    #保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次。
    save 900 1
    save 300 10
    save 60 10000
    #默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
    stop-writes-on-bgsave-error yes
    
    rdbcompression yes                  #是否在dump .rdb数据库的时候使用 LZF压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。
    rdbchecksum yes            #是否CRC64校验rdb文件,会有一定的性能损失(大概10%)
    dbfilename dump.rdb      #rdb文件的名字。
    dir ./                                  #数据库存放目录。必须是一个目录,aof文件也会保存到该目录下。
    #当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:1) 如果为 yes(默认值) ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候;2) 如果为 no ,在你执行除了 info 和 salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误。
    slave-serve-stale-data yes
    slave-read-only yes                   #设置slave是否是只读的。从2.6版起,slave默认是只读的。
    repl-diskless-sync no      #主从数据复制是否使用无硬盘复制功能。
    repl-diskless-sync-delay 5      #指定slave定期ping master的周期,默认5秒钟
    repl-disable-tcp-nodelay no。 #在slave和master同步后(发送psync/sync),后续的同步是否设置成TCP_NODELAY
    假如设置成yes,则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成master与slave数据不一致
    假如设置成no,则redis master会立即发送同步数据,没有延迟
    slave-priority 100  #当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。 默认优先级为 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 nodes-6379.conf     ##集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
    cluster-node-timeout 15000         #节点互连超时的阀值。集群节点超时毫秒数
    #执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。
    slowlog-log-slower-than 10000
    slowlog-max-len 128                   #慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存。
    
    ##################################################################################################
    #以下为扩展选项和内存设置
    
    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
    

    参考:https://yq.aliyun.com/articles/38806

    系统调优:

    echo 1 > /proc/sys/vm/overcommit_memory 
    echo "vm.overcommit_memory=1" >> /etc/sysctl.conf 
    echo 1024  >/proc/sys/net/core/somaxconn
    

    相关文章

      网友评论

          本文标题:redis安装集群

          本文链接:https://www.haomeiwen.com/subject/nliwcxtx.html