zoukankan      html  css  js  c++  java
  • redis 集群

    实现过程
       集群规划
            两台redis服务器,每一台服务器上放置三个节点,一共六个结点
    1,创建单机redis
         克隆redis1为redis2
         1)修改ip地址(只需要改ip,因为本身克隆机)
          vim /etc/sysconfig/network-scripts/ifcfg-eth0
          2)删除网卡和mac地址的对应文件
          rm -rf/etc/udev/rules.d/70-persistent-net.rules
          3)修改主机名称
          vim /etc/sysconfig/network   (把HOSTNAME=虚拟机名)
          4)修改hosts
           vim /etc/hosts
           ip + 虚拟机名
           5)重启
             reboot
     2,单机创建节点
            1)在单机 /usr/redis目录下创建  cluster 目录;
                  mkdir cluster
            2)在 cluster 下创建节点目录(为了方便创建和端口号一样的目录)
                  mkdir cluster/7001
                  mkdir cluster/7002
                  mkdir cluster/7003
            3)复制redis.conf配置到节点目录下
                   cp bin/redis.conf  cluster/7001/
     4)修改配置redis.conf:
             vim cluster/7001/redis.conf   
          port  7001                                       //端口7001,7002,7003        92行
          bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群    69行
          daemonize    yes                               //redis后台运行   136行
          pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002   158行
          cluster-enabled  yes                           //开启集群  把注释#去掉   814行
          cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002     822行
          cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置   828行
          appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志   672行
        
         5)复制7001下redis.conf 到7002和7003
             cp cluster/7001/redis.conf cluster/7002
             cp cluster/7001/redis.conf cluster/7003  
          6) 修改7002和7003下的配置文件
              vim  cluster/7002/redis.conf
                  使用全局替换,把7001替换为7002
                  底行模式下  :%s/7001/7002/g
              vim  cluster/7003/redis.conf
                     底行模式下  :%s/7001/7003/g
    3,如果多台主机都分别执行第2步操作
              登录redis2上
              进入redis目录
              cd /usr/redis
             执行远程cp命令
              scp   -r  192.168.182.20:/usr/redis/cluster   .     
                     把 192.168.182.20上的cluster目录拷贝到,当前目录下
                     输入yes   等待输入密码:tiger
                修改目录名称:
               mv cluster/7001 cluster/7004
        mv cluster/7002 cluster/7005
        mv cluster/7003 cluster/7006
        修改配置:
            vim cluster/7004/redis.conf  
                   底行模式下  :%s/7001/7004/g
                    69行,修改IP
           vim cluster/7005/redis.conf  
                 底行模式下  :%s/7002/7005/g
                    69行,修改IP
            vim cluster/7006/redis.conf  
                 底行模式下  :%s/7003/7006/g
                    69行,修改IP
    
    4,启动及检查
           启动:
    redis1:
       ./bin/redis-server  cluster/7001/redis.conf
      ./bin/redis-server  cluster/7002/redis.c-onf
      ./bin/redis-server  cluster/7003/redis.conf
       redis2:
        ./bin/redis-server  cluster/7004/redis.conf
      ./bin/redis-server  cluster/7005/redis.conf
      ./bin/redis-server  cluster/7006/redis.conf
    关闭:
     ./bin/redis-cli -h 192.168.23.30  -p 7001 shutdown
        检查:
      ps -ef | grep redis
        netstat -tnlp | grep redis
    
      5,使用官方提供工具创建集群(只需要启动机器上安装)
                 ( 使用命令前需要安装 ruby )
         redis-trib.rb 该命令是ruby程序写的,所以要下载安装ruby
       yum -y install ruby ruby-devel rubygems rpm-build 
        yum install -y centos-release-scl-rh (SCL:Software Collections  SCL 的设计初衷就是在不影响原有配置的前提下,让新旧软件能一起运行。 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。)
    yum install rh-ruby23  -y
    scl  enable  rh-ruby23 bash
    ruby -v
    gem install redis    ././gem Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem 源来查找、安装、升级和卸载软件包,非常的便捷。
           使用redis提供命令创建集群   
          在解压目录的redis-4.0.1/src下执行:redis-trib.rb
         语法:
          redis-trib.rb  create  --replicas  1  ip1:7000  ip1:7001   ip1:7002  ip2:7003        ip2:7004   ip2:7005
         实际操作:
    ./redis-4.0.1/src/redis-trib.rb create  --replicas 1 192.168.182.20:7001 192.168.182.20:7002 192.168.182.20:7003 192.168.182.21:7004 192.168.182.21:7005 192.168.182.21:7006
                
          中间确认:Can I set the above configuration? (type 'yes' to accept): yes
           [OK] All 16384 slots covered   // 成功!!
      
    
        链接测试
       语法:
       ./redis-cli -h ip1 -c -p 7000   设置值,在任意其他节点取值,可以成功,说明集群成功
    
    
              
    集群的启动和关闭
     让节点故障
                     方法1:
                      cluster nodes   //节点信息的使用
                   ps -ef|grep  redis  // 在192.168.182.21 
                     kill -9  主节点进程ID 
                     kill -9 2929
                     ps -ef|grep  redis  
                     使用客户端链接
                     ./bin/redis-cli -c -h 192.168.182.20 -p 7001  
                     链接集群,查看节点信息
                     cluster nodes
                     -- 注意: 节点故障修复后,会被集群自动加入
                       ./bin/redis-server  cluster/7004/redis.conf   //在192.168.182.21上执行
                       ps -ef|grep  redis  
    
    
                   方法2:
                     cluster nodes   //节点信息的使用  7006是7002的从节点
                     ./bin/redis-cli -h 192.168.182.20 -p 7002 shutdown
               ps -ef|grep  redis  
                     ./bin/redis-cli -c -h 192.168.182.20 -p 7001
                     cluster nodes   //发现7006变为主节点  7002 fail
                      ./bin/redis-server  cluster/7002/redis.conf   //启动
                    ./bin/redis-cli -c -h 192.168.182.20 -p 7001
                    cluster nodes   //发现7002成为7006的从节点
    
     cluster nodes :查看所有的节点
    cluster info    :查看节点的状态
    ps -ef | grep redis   //查看是否挂掉
    ./bin/redis-cli -c -h ip -p port  //进入该节点
    
    集群恢复正常
    ./bin/redis-server cluster/端口/redis.conf      //启动故障点,让集群正常运行
  • 相关阅读:
    Linux基本命令-chmod
    Linux操作系统启动流程
    博客园背景美化
    Windows安装python3.x后,pip list警告!DEPRECATION: The default format will switch to columns in the future.
    Python2.7更新pip:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 7: ordinal not in range(128)
    .Net程序员学用Oracle系列(23):视图理论、物化视图
    .Net程序员学用Oracle系列(22):分析函数(OVER)
    .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
    .Net程序员学用Oracle系列(20):层次查询(CONNECT BY)
    .Net程序员学用Oracle系列(19):导出、导入(备份、还原)
  • 原文地址:https://www.cnblogs.com/qurui1998/p/11140271.html
Copyright © 2011-2022 走看看