zoukankan      html  css  js  c++  java
  • redis安装--集群

    redis在3.0之后开始支持集群,实际生产中一般也是会部署集群了

    redis官方推出了一个叫redis-trib.rb的redis集群工具(存放在源码文件的src目录下);由于redis-trib.rb是基于ruby编写的,所以系统环境需要安装ruby环境

     1 [root@Node1 redis-3.2.8]# cd src/
     2 [root@Node1 src]# ls
     3 adlist.c     aof.o        config.o      dump.rdb       latency.c        multi.c       quicklist.h        redis-check-aof.o  replication.o  server.o        sparkline.o  util.c
     4 adlist.h     asciilogo.h  crc16.c       endianconv.c   latency.h        multi.o       quicklist.o        redis-check-rdb    rio.c          setproctitle.c  syncio.c     util.h
     5 adlist.o     bio.c        crc16.o       endianconv.h   latency.o        networking.c  rand.c             redis-check-rdb.c  rio.h          setproctitle.o  syncio.o     util.o
     6 ae.c         bio.h        crc64.c       endianconv.o   lzf_c.c          networking.o  rand.h             redis-check-rdb.o  rio.o          sha1.c          testhelp.h   valgrind.sup
     7 ae_epoll.c   bio.o        crc64.h       fmacros.h      lzf_c.o          notify.c      rand.o             redis-cli          scripting.c    sha1.h          t_hash.c     version.h
     8 ae_evport.c  bitops.c     crc64.o       geo.c          lzf_d.c          notify.o      rdb.c              redis-cli.c        scripting.o    sha1.o          t_hash.o     ziplist.c
     9 ae.h         bitops.o     db.c          geo.h          lzf_d.o          object.c      rdb.h              redis-cli.o        sdsalloc.h     slowlog.c       t_list.c     ziplist.h
    10 ae_kqueue.c  blocked.c    db.o          geo.o          lzf.h            object.o      rdb.o              redis-sentinel     sds.c          slowlog.h       t_list.o     ziplist.o
    11 ae.o         blocked.o    debug.c       help.h         lzfP.h           pqsort.c      redisassert.h      redis-server       sds.h          slowlog.o       t_set.c      zipmap.c
    12 ae_select.c  cluster.c    debugmacro.h  hyperloglog.c  Makefile         pqsort.h      redis-benchmark    redis-trib.rb      sds.o          solarisfixes.h  t_set.o      zipmap.h
    13 anet.c       cluster.h    debug.o       hyperloglog.o  Makefile.dep     pqsort.o      redis-benchmark.c  release.c          sentinel.c     sort.c          t_string.c   zipmap.o
    14 anet.h       cluster.o    dict.c        intset.c       memtest.c        pubsub.c      redis-benchmark.o  release.h          sentinel.o     sort.o          t_string.o   zmalloc.c
    15 anet.o       config.c     dict.h        intset.h       memtest.o        pubsub.o      redis-check-aof    release.o          server.c       sparkline.c     t_zset.c     zmalloc.h
    16 aof.c        config.h     dict.o        intset.o       mkreleasehdr.sh  quicklist.c   redis-check-aof.c  replication.c      server.h       sparkline.h     t_zset.o     zmalloc.o

    还是以redis-3.2.8为例来部署集群

    环境准备:

    1 [root@Node1 src]# yum -y install ruby rubygems
    2 [root@Node1 src]# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
    3 [root@Node1 src]# gem install -l ./redis-3.2.1.gem

    redis-3.2.1.gem是redis-trib.rb的运行需要的ruby包,这个包和redis版本不是非得匹配,只要支持就行。

    受限于机器数量,我搭建一个伪集群,在一套系统上搭建三主三从

     1 [root@Node1 app]# mkdir -p /app/redis-cluster/{7001,7002,7003,7004,7005,7006}         #创建目录
     2 ## 拷贝文件
     3 [root@Node1 src]# cp redis-cli redis-server /app/redis-cluster/{7001,7002,7003,7004,7005,7006}
     4 [root@Node1 redis-3.2.8]# cp redis.conf /app/redis-cluster/{7001,7002,7003,7004,7005,7006}
     5 [root@Node1 redis-3.2.8]# cd ../redis-cluster/7001/
     6 [root@Node1 7001]# vim redis.conf       #编辑配置文件
     7 port 7001
     8 daemonize yes
     9 pidfile /app/redis-cluster/7001/redis_7001.pid
    10 appendonly yes
    11 cluster-enabled yes
    12 cluster-config-file nodes-7001.conf
    13 cluster-node-timeout 15000

    将编辑好的redis.conf文件拷贝到另外几个目录下去,然后修改其中的端口号即可

    1 [root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7002/
    2 [root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7003/
    3 [root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7004/
    4 [root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7005/
    5 [root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7006/

    修改完成后就可以启动这六个redis了

     1 [root@Node1 redis-cluster]# ./redis-server 7001/redis.conf 
     2 [root@Node1 redis-cluster]# ./redis-server 7002/redis.conf 
     3 [root@Node1 redis-cluster]# ./redis-server 7003/redis.conf 
     4 [root@Node1 redis-cluster]# ./redis-server 7004/redis.conf 
     5 [root@Node1 redis-cluster]# ./redis-server 7005/redis.conf 
     6 [root@Node1 redis-cluster]# ./redis-server 7006/redis.conf 
     7 [root@Node1 redis-cluster]# ps -ef|grep redis
     8 root       5205      1  0 23:48 ?        00:00:00 ./redis-server 172.16.9.10:7001 [cluster]
     9 root       5209      1  0 23:48 ?        00:00:00 ./redis-server 172.16.9.10:7002 [cluster]
    10 root       5213      1  0 23:49 ?        00:00:00 ./redis-server 172.16.9.10:7003 [cluster]
    11 root       5217      1  0 23:49 ?        00:00:00 ./redis-server 172.16.9.10:7004 [cluster]
    12 root       5221      1  0 23:49 ?        00:00:00 ./redis-server 172.16.9.10:7005 [cluster]
    13 root       5225      1  0 23:49 ?        00:00:00 ./redis-server 172.16.9.10:7006 [cluster]
    14 root       5230   1987  0 23:49 pts/0    00:00:00 grep --color=auto redis

    在没有ruby环境的话,安装到此还是没问题的,但是现在的redis集群是不能正常使用的,因此后续必须要有ruby环境,我前面已经安装过了,所以先我就直接创建集群

     1 [root@Node1 redis-cluster]# ./redis-trib.rb create --replicas 1 172.16.9.10:7001 172.16.9.10:7002 172.16.9.10:7003 172.16.9.10:7004 172.16.9.10:7005 172.16.9.10:7006
     2 >>> Creating cluster
     3 >>> Performing hash slots allocation on 6 nodes...
     4 Using 3 masters:
     5 172.16.9.10:7001
     6 172.16.9.10:7002
     7 172.16.9.10:7003
     8 Adding replica 172.16.9.10:7004 to 172.16.9.10:7001
     9 Adding replica 172.16.9.10:7005 to 172.16.9.10:7002
    10 Adding replica 172.16.9.10:7006 to 172.16.9.10:7003
    11 M: 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a 172.16.9.10:7001
    12    slots:0-5460 (5461 slots) master
    13 M: c718f6a2593c9f9383ede404f5879be365b48b05 172.16.9.10:7002
    14    slots:5461-10922 (5462 slots) master
    15 M: 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5 172.16.9.10:7003
    16    slots:10923-16383 (5461 slots) master
    17 S: 03ea78465e980d40fe6eef10fb767bc4a25f00d7 172.16.9.10:7004
    18    replicates 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a
    19 S: f97391d5cfa351229963a91fd7800182c4a39961 172.16.9.10:7005
    20    replicates c718f6a2593c9f9383ede404f5879be365b48b05
    21 S: a8750aec28fad2abdefbe943c507547c690f2534 172.16.9.10:7006
    22    replicates 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5
    23 Can I set the above configuration? (type 'yes' to accept): yes
    24 >>> Nodes configuration updated
    25 >>> Assign a different config epoch to each node
    26 >>> Sending CLUSTER MEET messages to join the cluster
    27 Waiting for the cluster to join......
    28 >>> Performing Cluster Check (using node 172.16.9.10:7001)
    29 M: 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a 172.16.9.10:7001
    30    slots:0-5460 (5461 slots) master
    31    1 additional replica(s)
    32 M: c718f6a2593c9f9383ede404f5879be365b48b05 172.16.9.10:7002
    33    slots:5461-10922 (5462 slots) master
    34    1 additional replica(s)
    35 S: 03ea78465e980d40fe6eef10fb767bc4a25f00d7 172.16.9.10:7004
    36    slots: (0 slots) slave
    37    replicates 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a
    38 S: f97391d5cfa351229963a91fd7800182c4a39961 172.16.9.10:7005
    39    slots: (0 slots) slave
    40    replicates c718f6a2593c9f9383ede404f5879be365b48b05
    41 M: 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5 172.16.9.10:7003
    42    slots:10923-16383 (5461 slots) master
    43    1 additional replica(s)
    44 S: a8750aec28fad2abdefbe943c507547c690f2534 172.16.9.10:7006
    45    slots: (0 slots) slave
    46    replicates 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5
    47 [OK] All nodes agree about slots configuration.
    48 >>> Check for open slots...
    49 >>> Check slots coverage...
    50 [OK] All 16384 slots covered.

    集群创建完了,测试一下

    1 [root@Node1 redis-cluster]# ./redis-cli -c -h 172.16.9.10 -p 7006  #注意必须要有-c
    2 172.16.9.10:7006> keys *
    3 (empty list or set)
    4 172.16.9.10:7006> set name abc
    5 -> Redirected to slot [5798] located at 172.16.9.10:7002
    6 OK
    7 172.16.9.10:7002> 
    o(=•ェ•=)m纸上得来终觉浅,绝知此事要躬行o(=•ェ•=)m
  • 相关阅读:
    ps命令详解
    要做linux运维工程师的朋友,必须要掌握以下几个工具才行 ...
    Centos IP、DNS设置
    查看服务器 硬件参数命令(持续更新)
    Linux系统下配置短信猫
    vimrc 设置
    linux关于bashrc与profile的区别(转)
    Unix 设计哲学基础
    13年计算机真题
    华为卓越工作法读后感
  • 原文地址:https://www.cnblogs.com/occl/p/9041666.html
Copyright © 2011-2022 走看看