搭建Redis集群

Redis集群
一、简况
    一台虚拟机,六个redis实例,三主三从,版本号:redis-3.2.9.tar.gz

二、安装流程

1.上传redis-3.2.9.tar.gz到虚拟机目录:/opt/software    

2.直接解压redis-3.2.9.tar.gz
    tar -zxvf redis-3.2.9.tar.gz
    
3.详细步骤
    3.1 进入到加压后的文件夹
        cd redis-3.2.9
    3.2 执行编译安装命令
        yum -y install gcc gcc-c++ [如果本来没有的话]
        make && make install
        
    3.3 进入到redis-3.2.9/src目录,看到如下文件
        adlist.c     cluster.h     geo.o            networking.o       redis-check-aof.c  sds.o           t_hash.o
        adlist.h     cluster.o     help.h           notify.c           redis-check-aof.o  sentinel.c      t_list.c
        adlist.o     config.c      hyperloglog.c    notify.o           redis-check-rdb    sentinel.o      t_list.o
        ae.c         config.h      hyperloglog.o    object.c           redis-check-rdb.c  server.c        t_set.c
        ae_epoll.c   config.o      intset.c         object.o           redis-check-rdb.o  server.h        t_set.o
        ae_evport.c  crc16.c       intset.h         pqsort.c           redis-cli          server.o        t_string.c
        ae.h         crc16.o       intset.o         pqsort.h           redis-cli.c        setproctitle.c  t_string.o
        ae_kqueue.c  crc64.c       latency.c        pqsort.o           redis-cli.o        setproctitle.o  t_zset.c
        ae.o         crc64.h       latency.h        pubsub.c           redis-sentinel     sha1.c          t_zset.o
        ae_select.c  crc64.o       latency.o        pubsub.o           redis-server       sha1.h          util.c
        anet.c       db.c          lzf_c.c          quicklist.c        redis-trib.rb      sha1.o          util.h
        anet.h       db.o          lzf_c.o          quicklist.h        release.c          slowlog.c       util.o
        anet.o       debug.c       lzf_d.c          quicklist.o        release.h          slowlog.h       valgrind.sup
        aof.c        debugmacro.h  lzf_d.o          rand.c             release.o          slowlog.o       version.h
        aof.o        debug.o       lzf.h            rand.h             replication.c      solarisfixes.h  ziplist.c
        asciilogo.h  dict.c        lzfP.h           rand.o             replication.o      sort.c          ziplist.h
        bio.c        dict.h        Makefile         rdb.c              rio.c              sort.o          ziplist.o
        bio.h        dict.o        Makefile.dep     rdb.h              rio.h              sparkline.c     zipmap.c
        bio.o        endianconv.c  memtest.c        rdb.o              rio.o              sparkline.h     zipmap.h
        bitops.c     endianconv.h  memtest.o        redisassert.h      scripting.c        sparkline.o     zipmap.o
        bitops.o     endianconv.o  mkreleasehdr.sh  redis-benchmark    scripting.o        syncio.c        zmalloc.c
        blocked.c    fmacros.h     multi.c          redis-benchmark.c  sdsalloc.h         syncio.o        zmalloc.h
        blocked.o    geo.c         multi.o          redis-benchmark.o  sds.c              testhelp.h      zmalloc.o
        cluster.c    geo.h         networking.c     redis-check-aof    sds.h              t_hash.c
    
    3.4 我们需要将redis-trib.rb 复制到 /usr/local/bin目录下
        cp redis-trib.rb /usr/local/bin/
        
    3.5 创建redis_cluster目录,并且在目录下建立6个节点文件夹,7001-7006
        mkdir -p /usr/local/redis-3.2.9/redis_cluster
        cd /usr/local/redis-3.2.9/redis_cluster
        mkdir 7001
        mkdir 7002
        mkdir 7003
        mkdir 7004
        mkdir 7005
        mkdir 7006
        
    3.5 将redis.conf文件拷贝至7001-7006文件夹下
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7001
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7002
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7003
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7004
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7005
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7006
        修改这六个配置文件,修改内容如下
            # bind 127.0.0.1
            port  7001    #依次为:7001, 7002, 7003, 7004, 7005, 7006
            daemonize    yes
            pidfile /var/run/redis_7001.pid    #依次为:redis_7001.pid, redis_7002.pid, redis_7003.pid, redis_7004.pid, redis_7005.pid, redis_7006.pid
            cluster-enabled yes
            cluster-config-file nodes-7001.conf    #依次为:nodes-7001.conf, nodes-7002.conf, nodes-7003.conf, nodes-7004.conf, nodes-7005.conf, nodes-7006.conf
            cluster-node-timeout 15000
            appendonly yes
            protected-mode no    #特别注意
    
    3.6 启动这六个节点
        进入cd /opt/software/redis-3.2.9/src,执行如下命令
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7001/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7002/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7003/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7004/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7005/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7006/redis.conf
    
    3.7 查看六个节点启动情况
        [root@redis-cluster src]# ps -ef | grep redis
        root       4703      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7001 [cluster]                            
        root       4709      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7002 [cluster]                            
        root       4713      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7003 [cluster]                            
        root       4717      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7004 [cluster]                            
        root       4721      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7005 [cluster]                            
        root       4725      1  0 18:45 ?        00:00:00 ./redis-server 127.0.0.1:7006 [cluster]                            
        root       4729   1441  0 18:45 pts/0    00:00:00 grep redis
        
    3.8 redis官方提供了redis-trib.rb工具来创建集群,此工具是用ruby编写,所以需要先安装ruby
        yum install ruby
        yum install rubygems
        上传redis-3.0.0.gem到/opt/software
        gem install redis-3.0.0.gem
    
    3.9 执行redis-trib.rb,创建集群
        进入cd /opt/software/redis-3.2.9/src,执行如下命令
            ./redis-trib.rb create --replicas 1 192.168.1.76:7001 192.168.1.76:7002 192.168.1.76:7003 192.168.1.76:7004 192.168.1.76:7005  192.168.1.76:7006
        运行结果:
            >>> Creating cluster
            >>> Performing hash slots allocation on 6 nodes...
            Using 3 masters:
            192.168.1.76:7001
            192.168.1.76:7002
            192.168.1.76:7003
            Adding replica 192.168.1.76:7004 to 192.168.1.76:7001
            Adding replica 192.168.1.76:7005 to 192.168.1.76:7002
            Adding replica 192.168.1.76:7006 to 192.168.1.76:7003
            M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
               slots:0-5460 (5461 slots) master
            M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
               slots:5461-10922 (5462 slots) master
            M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
               slots:10923-16383 (5461 slots) master
            S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
               replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
            S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
               replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
            S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
               replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
            Can I set the above configuration? (type 'yes' to accept): yes
            >>> Nodes configuration updated
            >>> Assign a different config epoch to each node
            >>> Sending CLUSTER MEET messages to join the cluster
            Waiting for the cluster to join....
            >>> Performing Cluster Check (using node 192.168.1.76:7001)
            M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
               slots:0-5460 (5461 slots) master
               1 additional replica(s)
            M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
               slots:5461-10922 (5462 slots) master
               1 additional replica(s)
            M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
               slots:10923-16383 (5461 slots) master
               1 additional replica(s)
            S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
               slots: (0 slots) slave
               replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
            S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
               slots: (0 slots) slave
               replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
            S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
               slots: (0 slots) slave
               replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
            [OK] All nodes agree about slots configuration.
            >>> Check for open slots...
            >>> Check slots coverage...
            [OK] All 16384 slots covered.

4.查询集群节点信息和状态信息
    4.1 连接集群的某一个节点
        [root@redis-cluster src]# ./redis-cli -h 192.168.1.76 -p 7001 -c
        说明:
            -h表示ip地址
            -p表示端口号
            -c表示以集群方式连接redis
        
    4.2 查看集群的节点信息
        192.168.1.76:7001> cluster nodes
        1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002 master - 0 1504621801582 2 connected 5461-10922
        42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003 master - 0 1504621800577 3 connected 10923-16383
        21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004 slave 49f9efa388837e6484f1ac9b2db5689b35df838d 0 1504621798569 4 connected
        6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005 slave 1a06750acd98c010f4afbddadb2a26628cf808c5 0 1504621799573 5 connected
        59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006 slave 42a3d216c3f1e20bd038989301fdc8dfdbec392a 0 1504621794548 6 connected
        49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001 myself,master - 0 0 1 connected 0-5460
    
    4.3 查看集群状态信息
        192.168.1.76:7001> cluster info
        cluster_state:ok
        cluster_slots_assigned:16384
        cluster_slots_ok:16384
        cluster_slots_pfail:0
        cluster_slots_fail:0
        cluster_known_nodes:6
        cluster_size:3
        cluster_current_epoch:6
        cluster_my_epoch:1
        cluster_stats_messages_sent:22424
        cluster_stats_messages_received:22424
        192.168.1.76:7001> 


    4.4 检查集群是否ok
        [root@redis-cluster src]# ./redis-trib.rb check 192.168.1.76:7001
        >>> Performing Cluster Check (using node 192.168.1.76:7001)
        M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
           slots:0-5460 (5461 slots) master
           1 additional replica(s)
        M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
           slots:5461-10922 (5462 slots) master
           1 additional replica(s)
        S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
           slots: (0 slots) slave
           replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
        M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
           slots:10923-16383 (5461 slots) master
           1 additional replica(s)
        S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
           slots: (0 slots) slave
           replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
        S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
           slots: (0 slots) slave
           replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
        [OK] All nodes agree about slots configuration.
        >>> Check for open slots...
        >>> Check slots coverage...
        [OK] All 16384 slots covered.    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        

    

猜你喜欢

转载自my.oschina.net/architectliuyuanyuan/blog/1627689