redis-cluster公式ドキュメント

10363 ワード


Redis cluster tutorial

Redis    

             Redis Cluster,                  。

            ,       ,    redis cluster      

                 Redis Cluster          .

  :      Redis 3.0      :

         Redis Cluster    

Redis Cluster 101


Redis Cluster             Redis   ,          Redis nodes.


Redis Cluster               ,

                                


          ,         (    master        )

         ,Redis        ?


                

               ,         

Redis Cluster TCP ports

  Redis Cluster     2 TCP     ,  Redis TCP port      clients,

   6379,   1000      ,   16379

 2      Cluster bus,    node-to-node         2    

Cluster             ,          

cliet      cluster bus port   ,   normal Redis command port   

                ,    Redis cluster nodes     

     cluster bus          ,   10000


      Redis cluster       ,        :

   client     (   6379)                           ,

          (         keys  )

    (client port   10000)             

Redis       

Redis Cluster        hashing,           ,  key  hash slot    


   16384  hash slots   Redis Cluster,        key     hash slot 






192.168.137.4:7004> CLUSTER nodes
bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 192.168.137.4:7005@17005 master - 0 1585427745845 24 connected 5461-10922
1b83e27acd5235726aea44702526a8ca0ede9a48 192.168.137.2:7000@17000 slave 9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 0 1585427744837 26 connected
3c6510bd29af80703ae7c0be5a5884caaa60cd4e 192.168.137.2:7001@17001 slave a7287834bc7db37249614d23e06ed8f9a6c7b3d3 0 1585427746348 14 connected
191d7306b81ffa85b5837898562eb6bf1479122c 192.168.137.3:7002@17002 slave,fail bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 1585427709565 1585427709532 24 connected
a7287834bc7db37249614d23e06ed8f9a6c7b3d3 192.168.137.4:7004@17004 myself,master - 0 1585427744000 14 connected 10923-16383
9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 master,fail - 1585427709565 1585427709532 26 connected 0-5460

0 16383



Redis cluster         hash slots    ,          cluster  3   :

Node A contains hash slots from 0 to 5500.
Node B contains hash slots from 5501 to 11000.
Node C contains hash slots from 11001 to 16383.



              ,            D          hash slots  A,B,C  D

              A           hash slots  A B C  

   A                  

    hash slots                  ,       ,         hash slots         down   


Redis Cluster      key        keys          (      ,  lua     )
                 。

Redis Cluster master-slave model Redis       

                                ,

Redis Cluster      master-slave    hash slot  1 N   

            A,B,C ,    B          ,

               hash slots  5501-11000   hash slots

         (    )        slave      master,

          A,B,C master   A1,B1,C1  slaves             B  

  B1   B,  B          B1     master        

         B B1             


Redis       

Redis Cluster            。                        


         Redis Cluster               ,                :

1.       MASTER B

2.MASTER B   OK      

3.MASTER B     slaves B1,B2 B3

    ,B           B1B2,B3          

                  Redis

    client      , B    ,              slave   

slaves    (     )    master,      



                           

                                          

                                                

   ,             :

Redis Cluster            ,  WAIT   ,             ,     


Redis Cluster                                ,  slae          master



            Redis Cluster     ,               client             master   


    6        ,  A,B,C ,A1,B1,C1   3     3 slaves  。

      ,  Z1


        ,               A, C, A1, B1, C1,          B Z1

Z1      B ,      。             ,       

               B1    B1   master , Z1   B   


             Z1        B                           slave  master

  master               


              ,   node timeout



         ,  master           ,         。

                                    

Redis Cluster configuration parameters


             。     ,      Redis Cluster       redis.conf file. 

        ,               

cluster-enabled  yes

cluster-enabled :    yes,  Redis Cluster        Redis instance

                 

cluster-config-file nodes.conf

cluster-config-file :            ,              ,

         Redis Cluster       cluster   (  ,    )       

             。

                   ,     ,      

                      

cluster-node-timeout :    

        Redis Cluster          ,        

    master                    slaves      。

                ,               ,       

cluster-slave-validity-factor : 

     0,   slave            master,

          Master slave        。

     ,                          

       slave,                  master             。


  ,          5 ,         10

  slave   master   50            master 

   ,      0     Redis Cluster          master    

    slave                        ,          。



cluster-migration-barrier : slaves        master         

Creating and using a Redis Cluster


       Redis Cluster


  :

       Redis Cluster                

     ,              Redis instances    cluster mode

        clusters        redis                   

  redis      Cluster         

      REDIS       :

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

node1:/root/cluster/7001#netstat -na | grep 700
tcp        0      0 192.168.137.2:7000          0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.137.2:7001          0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.137.2:17000         0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.137.2:17001         0.0.0.0:*                   LISTEN   


       ,         cluster-enabled   。

                               nodes.conf

           ,    Redis Cluster instances         ,


    ,              3 master  。                    6       

   3 masters  3 slaves

  ,        ,        

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

          redis.conf file, 7000   7005

cd 7000
../redis-server ./redis.conf

node1:/opt/redis/data/7000#ls
appendonly.aof  dump.rdb  nodes.conf
node1:/opt/redis/data/7000#cat nodes.conf 
9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 master,fail - 1585496423812 1585496423812 26 connected 0-5460
3c6510bd29af80703ae7c0be5a5884caaa60cd4e 192.168.137.2:7001@17001 slave a7287834bc7db37249614d23e06ed8f9a6c7b3d3 0 1585496430857 14 connected
a7287834bc7db37249614d23e06ed8f9a6c7b3d3 192.168.137.4:7004@17004 master,fail? - 1585496423838 1585496423812 14 disconnected 10923-16383
1b83e27acd5235726aea44702526a8ca0ede9a48 192.168.137.2:7000@17000 myself,slave 9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 0 1585496430000 23 connected
bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 192.168.137.4:7005@17005 master,fail? - 1585496423838 1585496423812 24 disconnected 5461-10922
191d7306b81ffa85b5837898562eb6bf1479122c 192.168.137.3:7002@17002 slave,fail bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 1585496423812 1585496423812 24 connected
vars currentEpoch 27 lastVoteEpoch 24

Creating the cluster


             ,                         :

     Redis 5,                 Redis Cluster command line utility

  Redis   3  4,     redis-trib.rb   ,    

    scr     ,     redis gem     redis-trib.

gem install redis


     ,     ,  redis 5    redis-cli


redis-trib in Redis 3 and 4. 

                 redis-cli,                

   Redis cli Redis 5    ,    :



redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
--cluster-replicas 1

Using redis-trib.rb for Redis 4 or 3 type:

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005



            ,              。

      --cluster-replicas 1           slave       master

              

              3 3  cluster

Redis-cli         ,           yes

         ,                 


      :

  :        ,       tab open          

        ,           (                    )        ,

             :




              master       :

$ redis-cli -p 7000 cluster nodes | grep master
3e3a6cb0d9a9a87168e266b0a0b24026c0aae3f0 127.0.0.1:7001 master - 0 1385482984082 0 connected 5960-10921
2938205e12de373867bf38f1ca29d31d0ddb3e46 127.0.0.1:7002 master - 0 1385482983582 0 connected 11423-16383
97a3a64667477371c4479320d683e4c8db5858b1 :0 myself,master - 0 0 0 connected 0-5959 10922-11422


node1:/root#redis-cli -h 192.168.137.2 -p 7000 cluster nodes | grep master
9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 master - 0 1585502413836 26 connected 0-5460
a7287834bc7db37249614d23e06ed8f9a6c7b3d3 192.168.137.4:7004@17004 master - 0 1585502412324 14 connected 10923-16383
bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 192.168.137.4:7005@17005 master - 0 1585502414342 24 connected 5461-10922



  7000,7001 7002     ,   crash   7002    DEBUG SEGFAULT command:

node1:/root#redis-cli -h 192.168.137.2 -p 7000 cluster nodes | grep master
9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 master - 0 1585502413836 26 connected 0-5460
a7287834bc7db37249614d23e06ed8f9a6c7b3d3 192.168.137.4:7004@17004 master - 0 1585502412324 14 connected 10923-16383
bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 192.168.137.4:7005@17005 master - 0 1585502414342 24 connected 5461-10922
node1:/root#
node1:/root#
node1:/root#
node1:/root#redis-cli -h 192.168.137.2 -p 7000 cluster nodes | grep master
9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 master,fail - 1585502528397 1585502525874 26 disconnected
a7287834bc7db37249614d23e06ed8f9a6c7b3d3 192.168.137.4:7004@17004 master - 0 1585502532945 14 connected 10923-16383
1b83e27acd5235726aea44702526a8ca0ede9a48 192.168.137.2:7000@17000 myself,master - 0 1585502530000 29 connected 0-5460
bf0edaba80c4f31e9b56101572d2a5ccc8aa145c 192.168.137.4:7005@17005 master - 0 1585502532541 24 connected 5461-10922



             ,      578   577  ,

               。

                 (  ,                     cluster     slave)

Manual failover

      :