Redis集群生产环境源码安装

安装redis集群  根据各人单位生产环境用户搭建
一、安装环境
    操作系统:centos7.6
 关闭防火墙、关闭selinux
 redis1:192.168.26.128
 redis2:192.168.26.129
二、用户环境
 groupadd usr
 useradd -g usr -md /usr/users/sw sw
 cd /usr/users/sw/
 mkdir  app;mkdir  backup
 cd app
 mkdir redis
 make /applog
 chown -R sw:usr /usr/users/sw
 chown -R sw:usr /applog
三、系统参数修改,有几个系统参数需要调整,否则,在启动redis时会有几个WARNING:
 1.redis的配置文件中,默认的最大客户端连接数为10000,要求至少最大文件描述符要10032个,我 们一般系统都会设置为65535
  vim /etc/security/limits.conf添加以下内容
   *  soft   nproc  12000
   *  hard  nproc   12000
   *  soft   nofile  65535
   *  hard  nofile  65535
   *  hard  stack    10240    
   *  soft  stack    10240 
   *  hard  sigpending  127934
   *  soft  sigpending  127934
  vim /etc/security/limits.d/20-nproc.conf   修改
   *  soft   nproc  12000
 2.在/etc/sysctl.conf中加入 net.core.somaxconn=511 ,然后执行 sysctl ‐p 生效,解决默认设 置为一个较低的值128的警告。
 3. overcommit_memory 设置为0,在低内存环境下的后台保存可能失败。在文件 /etc/sysctl.conf 中添 加 vm.overcommit_memory = 1 ,然后重启或运行命令 sysctl vm.overcommit_memory=1
 4.如果服务器的"Transparent Huge Pages (THP)"支持在内核中启用了。这将在使用Redis时造成延迟和 内存使用问题。使用root运行命令
      echo never > /sys/kernel/mm/transparent_hugepage/enabled ,并且将它添加到你的/etc/rc.local中使在 重启后仍然保持生效来修复这个问题。在THP禁用之后Redis必须重启。
四、安装GCC编译工具,不然会有编译不过的问题
    yum install gcc g++ gcc-c++ make -y
五、下载、解压、编译安装
     su - sw
  cd backup
  wget http://download.redis.io/releases/redis-4.0.1.tar.gz
  tar -xvf redis-4.0.1.tar.gz
  cd redis-4.0.1
  make
  make PREFIX=/usr/users/sw/app/redis install
  编译完成,redis已经安装在/usr/users/sw/app/redis/bin下面,几个文件大致作用为
  redis‐benchmark:性能测试工具,测试Redis在你的系统及配置下的读写性能
  redis‐check‐aof:用于修复出问题的AOF文件
  redis‐check‐dump:用于修复出问题的dump.rdb文件
  redis‐cli:Redis命令行交互客户端
  redis‐sentinel:redis‐server别名
  redis‐server:Redis服务器启动程序
六、redis的配置修改
    在源码目录中,将配置文件模板redis.conf复制到redis配置文件目录中app/redis/conf/,因为一个虚拟机要启动单个
 redis节点,所以配置文件要复制三份,分别用于用于规划的服务器端口号命名区别
 mkdir ~/app/redis/conf
 cp backup/redis-4.0.1/redis.conf ~/app/redis/conf/redis8601.conf
七、编辑redis8601.conf文件
    1. 设置bind地址为本机IP,&&为本机IP,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
     bind 192.168.26.*
 2. 修改daemonize为yes,即以后台程序方式运行
  daemonize yes
 3. 修改服务端口
  port 8601
 4. 修改pid生成路径
  pidfile "/usr/uses/sw/app/redis/run/redis8601.pid"
     需要手动创建run目录存放pid路径
  mkdir /usr/users/sw/app/redis/run/
 5.  修改日志文件的位置
  logfile "/applog/redis8601/redis.log"
        需要手动创建日志目录
        mkdir /applog/redis8601/
    6. 修改工作目录,数据文件,append only文件等会在该目录生成
     dir "/applog/redisdump"
        需要手动创建该目录
        mkdir /applog/redisdump
 7.  数据文件名
  dbfilename "dump8601.rdb"
 8.  是否每次更新操作进行日志记录
     appendonly yes
  文件名设置
  appendfilename "appendonly8601.aof"
 9.  是否支持集群
  cluster-enabled yes
 10. 集群配置文件名
  cluster-config-file "nodes-8601.conf"
八、复制redis8601.conf文件为另外两个节点修改
 1. cp redis8601.conf redis8602.conf
  cp redis8601.conf redis8603.conf
    2.统一替换配置文件redis8602.conf和redis8603.conf的8601为8602和8603
  sed -i 's/8601/8602/g' redis8602.conf
  sed -i 's/8601/8603/g' redis8603.conf
 3.要手动创建8602和8603的日志目录
  mkdir /applog/redis8602
  mkdir /applog/redis8603
九、启动redis各节点服务
    1、cd ~/app/redis/bin
    ./redis-server ~/app/redis/conf/redis8601.conf
    ./redis-server ~/app/redis/conf/redis8602.conf
    ./redis-server ~/app/redis/conf/redis8603 .conf
十、脚本启动
 mkdir ~/bin
 vim redis.sh
   #!/bin/bash
   case $1 in
     start)
      cd /usr/users/sw/app/redis/bin
      ./redis-server /usr/users/sw/app/redis/conf/redis8601.conf
      ./redis-server /usr/users/sw/app/redis/conf/redis8602.conf
      ./redis-server /usr/users/sw/app/redis/conf/redis8603.conf
      if [ "$?" -eq 0 ];then
        ps -ef|grep redis|grep -v grep
        echo "redis is started"
      else
        echo "redis is error"
        exit 10
      fi
     ;;
     stop)
       for pid in $(ps -ef|grep redis|grep -v "grep"|egrep -v "${0}"|awk -F " " '{print $2}'|uniq);do
         kill -9 $pid >> /dev/null 2>&1
       done
       #echo "redis is stopped"
     ;;
     restart)
       ${0} stop
       ${0} start
     ;;
   esac
 
十一、集群搭建
    1.yum -y install ruby-devel  ruby-irb  ruby-libs ruby-rdoc ruby rubygems-devel rubygems
 2. 下载redis的gem并上传至服务器
  https://rubygems.org/downloads/redis-3.3.0.gem
  安装redis-gem
  gem install --local redis‐3.3.3.gem
  查看安装
  gem list redis
 3.使用 redis‐trib.rb 脚本创建集群 redis‐trib.rb 在redis的源码包的src目录中:
   cd ~/backup/redis-4.0.1/src/
十二、 为redis各节点设置密码 为redis各节点设置密码,应用设置里也要设置redis的密码,如果密码不匹配,则应用无法连接上 redis。
     密码均设置为:111111   修改配置文件 直接修改配置文件的方法,需要修改完后重启redis服务。
 1.在每个节点的配置文件末尾加上: 然后重启所有节点的redis使密码生效即可。 masterauth "111111" requirepass "111111"
     vim redis8601.conf 添加
  masterauth "111111"
  requirepass "111111"
 2. 已设置了密码的节点创建集群,但此时创建集群,redis‐trib.rb脚本会提示无法连接到redis节点,这是因为ruby的redis gem中默认的客户 端连接密码为空,
    所以导致redis‐trib.rb脚本无法创建集群。 可以修改ruby的redis gem的默认redis客户端密码即可
  vi /usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb 如果redis‐3.3.3.gem是使用非root安装的,则在用户主目录下搜索client.rb即可找到。
  使用root编辑redis gem 里的client.rb文件: 第15行为设置密码,默认为空: :password => "111111", 修改完后,再回去执行redis‐trib.rb即可连接上redis进行集群操作。
   vi /usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb
        15       :password => "111111",  
 3.然后进行集群搭建
   ./redis-trib.rb create --replicas 1 192.168.26.128:8601 192.168.26.128:8602 192.168.26.128:8603 192.168.26.129:8601 192.168.26.129:8602 192.168.26.129:8603
    4.如果有报错[ERR] Node 192.168.26.129:8601 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    删除各个节点下面的redis.log和dump下面的aof,rdb,conf文件
十三、查看集群状态
     ./redis-trib.rb check 192.168.26.129:8602   
   
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/lxc123/p/12005671.html