RedisクラスタのSentineを遊ぶ

3467 ワード

    Redis       ,          ,         ,            。                 ,master    ,   slave    ,      。  Redis              ,    ,              3   ,            ,         ,             。  ,Redis           :Redis Sentinel

  

Redis Sentinel     3 5     ,        ,         。     Redis       。       ,Sentinel                。          ,                  Redis  。

    

Sentinel             master,      ,     info    master      。Sentinel                   hello  (  Sentinel   ip、   id   )    Sentinel       。

Sentinel             Sentinel hello  。

Sentinel    ping            ,            ,        。

Sentinel  failover     ,       ,    (quorum)Sentinel   ,master      ODOWN  。             master。

Sentinel    master    :       ,        ;       ,      ,         ;         ,     ID   。

Sentinel    ,        master          (config-epoch), failover      ,               ,          Sentinel,   Sentinel     master   。

    

   Python  ,              Sentinel

1from redis.sentinel import Sentinel23if name == 'main':4 sentinel = Sentinel(['localhost', 26379], socket_timeout=0.1)5 print(sentinel.discover_master('mymaster'))6 print(sentinel.discover_slaves('mymaster'))7 master = sentinel.master_for('mymaster', socket_timeout=0.1)8 slave = sentinel.slave_for('mymaster', socket_timeout=0.1)9 master.set('follow', 'Jackeyzhe2018')10 follow = slave.get('follow')11 print(follow)master_forとslave_forメソッドは、接続プールから1つの接続を取り出して使用し、アドレスから複数ある場合はポーリングメソッドを使用します.
 redis        ,               ?   redis-py         。

画像の説明(最大50文字)
画像の説明(最大50文字)
    ,redis          ,   get_master_address          。get_master_address   ,           ,             。     ,      ,              。

        , Sentinel         ,      redis-py     。      ReadOnlyError   ,      ,              。  ,         ,         ,          ,      。

    

  Sentinel                     ,      ,           Sentinel  。

          redis    

   redis , redis        redis.conf  3 。     redis6379.conf,redis6380.conf,redis6381.conf。

 redis6381.conf         

1 bind 127.0.0.12 port 63813 logfile"6381.log"4 dbfilename"dump-63381.rdb"redis 6379.confでの変更
1bind 127.0.0.12port 63793logfile "6379.log"4dbfilename "dump-6379.rdb"5slaveof 127.0.0.1 6381redis6380.confの修正はredis 6379を参照する.conf.変更が完了したら、3つのインスタンスをそれぞれ起動します.私たちが望んでいるredis主従環境を構築しました.
画像の説明(最大50文字)
     master  ,            

画像の説明(最大50文字)
  ,     Sentinel  。            。  3 sentinel.conf  ,     sentinel-26379.conf,sentinel-26380.conf sentinel-26381.conf。

sentinel-26379.conf         

1port 26379 2daemonize yes 3logfile "26379.log"4dir/home/xxx/redis/data 5sentinel monitor mymaster 127.0.0.1 6381 26sentinel down-after-milliseconds mymaster 30000 7sentinel parallel-syncs mymaster 1 8sentinel failover-timeout mymaster 180000sentinel-26380.confとsentinel-26381.confの内容は上記と類似している.構成が完了したら、コマンドredis-sentinelを使用して3つのsentinelインスタンスを起動します.
画像の説明(最大50文字)
  ,   redis-cli    26379   ,  sentinel   。

画像の説明(最大50文字)
            3 redis   。              ,       。

kill master  ,  sentinel   ,   sentinel                 master。

画像の説明(最大50文字)
     sentinel  。

  ,6380      master。

   ,             Redis     。