zoukankan      html  css  js  c++  java
  • 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   
       
     
     
     
     
     
     
  • 相关阅读:
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Symmetric Tree
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Triangle
    Populating Next Right Pointers in Each Node II
    Pascal's Triangle II
    Pascal's Triangle
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/lxc123/p/12005671.html
Copyright © 2011-2022 走看看