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      //启动故障点,让集群正常运行

 

posted @ 2019-07-05 19:15  芯-觞  阅读(161)  评论(0编辑  收藏  举报