常用命令
    启动某节点
    redis-server redis_7001/conf/redis_7001.conf
    查看redis
    ss -tnlp | grep 700 都带700的
    ss -tnlp | grep redis 所有redis
    配置环境变量的时候可能权限不足,需要在redis-server目录下chmod +x redis-server redis-cli 建议把那个目录下所有文件都加x,正常编程可执行文件时会变绿
    连接redis
    redis-cli -c -p 7001 -n 172.17.20.50 (不加-c可能无法通过小黑框set数据)
    存进去的数据也不是三个机器都有,他们有默认的存储方式
    注意,7001和7002的配置文件不一样,区别在于7001和7002相关配置需要调整
    kill -9 pid 这个pid对应查看时候的pid能杀死7001和7002节点
    image.png
    image.png
    image.png

    1. xi集群准备
      image.png
      2. 安装依赖
      yum -y install gcc automake autoconf libtool make
      3. redis安装
      wget https://download.redis.io/releases/redis-5.0.4.tar.gz
      tar zxvf redis-5.0.4.tar.gz
      mkdir /data/redis# 准备redis的⼯作⽬录
      cd redis-5.0.4/
      make PREFIX=/data/redis install
      cp src/redis /data/redis/bin
      cd /data/redis/bin && rm -rf
      .c .h .o # 删除⽆⽤的⽂件
      4. redis节点配置,172.17.20.50上操作
      4.1 ⽣成配置⽂件
      cat > redis_7001.conf << EOF
      bind 0.0.0.0
      protected-mode yes
      port 7001
      tcp-backlog 511
      timeout 0
      tcp-keepalive 300
      daemonize yes
      supervised no
      pidfile /var/run/redis_7001.pid
      loglevel notice
      logfile “/data/redis/redis_7001/logs/redis-7001.logs”
      databases 16
      always-show-logo yes
      # rdb 持久化相关配置
      save 900 1
      save 300 10
      save 60 10000
      stop-writes-on-bgsave-error yes
      rdbcompression yes
      rdbchecksum yes
      dbfilename dump_7001.rdb
      dir /data/redis/redis_7001/data
      # 主从复制相关配置
      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
      # aof持久化相关配置,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 5000slowlog-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
      # 集群相关配置
      cluster-enabled yes
      cluster-config-file nodes_7001.conf
      cluster-node-timeout 25000
      # 集群密码认证(集群中所有节点密码必须⼀致,可不开启)
      #masterauth “SDFAgPjgGLK!8”
      #requirepass “SDFAgPjgGLK!8”
      EOF
      cp redis_7001.conf redis_7002.conf
      sed -i ‘s/7001/7002/g’ redis_7002.conf
      4.2 集群配置
      cd /data/redis
      mkdir -pv /data/redis/redis_7001/{logs,conf,data}
      mkdir -pv /data/redis/redis_7002/{logs,conf,data}
      # 将上边⽣成的两个配置⽂件分别放在所有机器对应⽬录下,redis_7001/conf/redis_7001.conf,redis_7002/conf/redis_7002.conf
      # 将redis⽬录发送到其余两个节点
      for i in 51 52; do scp -r /data/redis/redis_7001 172.17.20.${i}:/data/redis; done
      for i in 51 52; do scp -r /data/redis/redis_7002 172.17.20.${i}:/data/redis; done
      4.3 设置命令环境变量,所有节点上操作
      echo ‘export PATH=$PATH:/data/redis/bin/‘ >> /etc/profile
      source /etc/profile
      redis-server -v# 查看redis版本
      4.4 启动7001实例
      redis-server redis_7001/conf/redis_7001.conf
      # 确认端⼝是否正常启动
      ss -tnlp | grep 7001
      LISTEN 0 128 :7001 : users:((“redis-server”,pid=21310,fd=6))
      LISTEN 0 128
      :17001 : users:((“redis-server”,pid=21310,fd=8))
      # 查看服务启动⽇志,发现有warning信息
      cat redis_7001/logs/redis-7001.logs
      image.png
      4.5 解决启动warning事项,三台机器都需要操作
      1)解决最⼤打开⽂件数
      # 查看当前值,⼀般系统默认是1024
      $ ulimit -n
      1024
      $ echo ‘ soft nofile 65535’ >> /etc/security/limits.conf
      $ echo ‘
      hard nofile 65535’ >> /etc/security/limits.conf
      # 修改后,重新登录即可⽣效
      2) 解决TCP积压值过⼩问题
      $ echo “net.core.somaxconn = 65535” > /etc/sysctl.d/redis.conf
      $ sysctl -p /etc/sysctl.d/redis.conf #刷新使其⽣效
      net.core.somaxconn = 1024
      3) 允许分配所有的物理内存
      $ echo “vm.overcommit_memory = 1” >> /etc/sysctl.d/redis.conf
      $ sysctl -p /etc/sysctl.d/redis.conf #刷新使其⽣效
      net.core.somaxconn = 1024
      vm.overcommit_memory = 1
      4) 解决内存透明⼤⻚警告
      $ echo never > /sys/kernel/mm/transparent_hugepage/enabled
      #上述指令只是当前⽣效,重启后就会失效,接下来改为永久⽣效
      $ echo ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ >> /etc/rc.local
      $ chmod +x /etc/rc.d/rc.local
      4.6 重启redis服务
      pkill -9 redis-server
      $ redis-server redis_7001/conf/redis_7001.conf
      $ redis-server redis_7002/conf/redis_7002.conf
      $ ss -tnlp | grep redis
      LISTEN 0 128 :7001 : users:((“redis-server”,pid=2864,fd=6))
      LISTEN 0 128
      :7002 : users:((“redis-server”,pid=2889,fd=6))
      LISTEN 0 128 :17001 : users:((“redis-server”,pid=2864,fd=8))
      LISTEN 0 128
      :17002 : users:((“redis-server”,pid=2889,fd=8))
      5. 创建集群
      # 随意⼀个节点,创建集群,同⼀个主从不要在同⼀个节点
      redis-cli —cluster create 172.17.20.50:7001 —cluster-replicas 1
      节点之间用空格连接
      验证集群
      $ redis-cli -p 7001 -h 172.17.20.50
      image.png