zoukankan      html  css  js  c++  java
  • redis单节点安装及cluster的安装

    单点安装

    wget http://download.redis.io/releases/redis-4.0.2.tar.gz
    tar zxvf redis-4.0.1.tar.gz -C /usr/local
    cd /usr/local/redis-4.0.2
    make
    make test
    make PREFIX=/usr/local/redis install
    cd /usr/local/redis
    mkdir conf log data
    cd /usr/local/redis/conf
    cp /usr/local/redis-4.0.2/redis.conf .
    

    修改内核参数:

    echo 'vm.overcommit_memory = 1' >>  /etc/sysctl.conf
    sysctl  -p
    

    修改配置文件

    主要修改以下值

    daemonize no改为daemonize yes,以守护进程模式运行
    bind 127.0.0.0改为bind 0.0.0.0,监听本机所有端口
    

    以下为一个cluster node redis.conf配置文件

    [root@10-110-122-196 src]# cat /usr/local/redis-cluster-shijing2/redis/conf/7379.conf
    bind 0.0.0.0
    protected-mode yes
    port 7379
    requirepass bigdata1234@le.com
    masterauth bigdata1234@le.com
    maxmemory 4000000000
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile "/var/run/redis_7379.pid"
    loglevel notice
    logfile "../log/redis_7379.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 "../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
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    slave-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 no
    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
    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
    cluster-enabled yes
    cluster-config-file "7379.conf"
    

    cluster搭建

    1.将单点redis.conf复制多份

    [root@10-110-122-196 conf]# pwd
    /usr/local/redis-cluster-shijing2/redis/conf
    [root@10-110-122-196 conf]# ll
    total 28
    -rw-r--r-- 1 root root 1362 May 31 16:52 7379.conf
    -rw-r--r-- 1 root root 1362 May 31 16:52 7380.conf
    -rw-r--r-- 1 root root 1362 May 31 16:53 7381.conf
    -rw-r--r-- 1 root root 1362 May 31 16:53 7382.conf
    -rw-r--r-- 1 root root 1362 May 31 16:53 7383.conf
    -rw-r--r-- 1 root root 1362 May 31 16:53 7384.conf
    

    配置文件需要修改的地方

    • 需要更改的值有port pidfile cluster-config-file logfile,使用sed命令进行批量统一更改即可

    • 需要加入的值为 cluster-enabled yes

    其中dbfilename的文件名和dir路径可以不变

    2.cluster的初始化

    ruby环境安装

    yum -y install gcc ruby ruby-devel rubygems rpm-build zlib
    

    ruby-redis接口安装(ruby版本太低可以使用rvm安装,如果rvm无法安装,可直接升级ruby,相关升级ruby的步骤见本文最后)

    gem install redis
    

    启动各节点,初始化集群

    cd到 redis/src中,找到redis-trib.rb文件,执行

    redis-trib.rb  create --replicas 1 host_ip:prot1 host_ip:port2
    
    例:./redis-trib.rb create --replicas 1 10.110.122.196:7379 10.110.122.196:7380 10.110.122.196:7381 10.110.122.196:7382 10.110.122.196:7383 10.110.122.196:7384
    
    其中--replicas 1表示有一个slave,以上例子中共6个实例,表示3主3从
    

    执行到这里之后基本就完成了集群的搭建;可以通过redis-cli连接到任意节点,查看 cluster info

    3.redis-cluster添加密码

    如果redis实例添加了密码,则需要修改redis-trib.rb文件

    def connect(o={})这个函数中,
    @r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60)改成
    @r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60, :password => "填入你的redis密码")

    然后再在初始化

    同时单个实例中的配置文件需要写入requirepassmasterauth的值,以便密码永久保存
    如下例

    requirepass bigdata1234@le.com
    masterauth bigdata1234@le.com
    

    4.查看cluster状态

    10.110.122.196:7379> CLUSTER info
    cluster_state:ok
    
    
    10.110.122.196:7379> CLUSTER NODES
    735d1a01bd4a8cba0d37fab42d1764775cb91cfd 10.110.122.196:7381@17381 master - 0 1527762245102 3 connected 10923-16383
    bfd7678b97b5bb627a34e71d09b67982ecce4a7b 10.110.122.196:7384@17384 slave 735d1a01bd4a8cba0d37fab42d1764775cb91cfd 0 1527762247108 6 connected
    

    5.节点相互meet

    在redis-cli 中 使用 meet IP PORT 即可与其它节点握手

    redis的优化

    • 密码设置
    10.110.122.196:7379> config set requirepass Bigdata4321@le.com
    
    • 最大内存设置,建议设定,否则会占用系统最大内存
    10.110.122.196:7379> CONFIG SET maxmemory 4G
    

    每个节点上面都需要设置,集群最大内存大小为master最大内存总和
    设置之后,使用info可以查看到最大内存值
    也可以使用config get maxmemory

    以上两者需要持久化保持时,必须写入配置文件中

    • 对应实例密码写入,在集群初始化的时候,可以先不进行指定,直接初始化,然后在redis-cli中使用config set masterauth "bigdata1234@le.com"config set requirepass "bigdata1234@le.com"指定两个值,同时在使用config rewrite保存,这两个值需要在所有集群实例上进行设定

    rvm无法升级ruby情况的解决

    因为gem需要ruby2.2.3版本以上,系统自带的可能一般为1.8.7版本可直接进行ruby新版本的安装。redis cluster中,只在初始化的时候,对ruby环境有特别要求

    wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.gz
    tar xvf ruby-2.6.0.tar.gz -C /usr/local
    cd /usr/local/ruby-2.6.0/
    ./configure --prefix=/usr/local/ruby
    make -j 4
    make install
    cd /usr/local/ruby
    bin/ruby -v
    

    然后修改redis/src中redis-trib.rb文件中的Sha-Bang
    如本文中将#!/usr/bin/env ruby修改为#!/usr/local/ruby/bin/ruby

    或者直接更新/etc/profile,更新env即可

    [root@vm-10-124-64-251 src]# tail -2 /etc/profile
    export RUBY_HOME=/usr/local/ruby
    export PATH=$RUBY_HOME/bin:$PATH
    [root@vm-10-124-64-251 src]# /usr/bin/env ruby -v
    ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
    

    以上ruby版本已经变更成2.6

  • 相关阅读:
    java要注意的问题1
    广义表(线性表的推广)
    java基本类型和包装器类
    面试题10:斐波那契数列
    面试题9:用两个栈实现队列
    面试题8:二叉树的下一个结点
    10 分组数据
    9 汇总数据
    8 使用数据处理函数
    7 创建计算字段
  • 原文地址:https://www.cnblogs.com/marility/p/9816649.html
Copyright © 2011-2022 走看看