2019-04-10ノート-Redis哨兵モード

3188 ワード

Redis sentinelの紹介
Redis Centinelは、Redisが高可用性の実装スキームである.Centinelは、複数のRedisインスタンスを管理するツールで、Redisの監視、通知、自動フェイルオーバを実現します.
Redis Centinelの主な機能
Sentinalの主な機能は、プライマリノードの生存検出、プライマリ・スレーブの運転状況検出、自動フェイルオーバ(failover)、プライマリ・スレーブの切り替えを含む.RedisのSentineの最小構成は一主一従である.RedisのSentinelシステムは、次の4つのタスクを実行できる複数のRedisサーバを管理するために使用できます.
  • モニタ-Centinelは、プライマリ・サーバとセカンダリ・サーバが正常に動作しているかどうかを確認します.
  • 通知:監視対象のRedisサーバに問題が発生した場合、SentineはAPIスクリプトを使用して管理者または他のアプリケーションに通知を送信します.
  • 自動フェイルオーバ:プライマリ・ノードが正常に動作しない場合、Centinelは自動フェイルオーバ操作を開始し、失効したプライマリ・ノードとプライマリ・スレーブ関係の1つをノードから新しいプライマリ・ノードにアップグレードし、他のセカンダリ・ノードを新しいプライマリ・ノードに移動します.
  • プロビジョニングプロバイダ-Redis Sentineモードでは、クライアントアプリケーションが初期化時に接続するのはSentineノードのセットであり、そこからプライマリノードの情報を取得します.

  • Redis Centinelのワークフローリファレンスリンク(図を含む):http://www.cnblogs.com/jifeng/p/5138961.html
    Sentinelはクラスタ内のすべてのプライマリを監視し、Redisからプライマリ障害が検出されると、すべてのセカンダリから新しいプライマリを選択します.そして残りの従を新しい主の従に変える.同時にその問題のある旧主も新主の従者になり、つまり旧主が回復しても元の主の身分を回復するのではなく、新主の従者となる.Redis高可用性アーキテクチャでは、Centinelは1つではなく3つ以上あることが多い.目的はより信頼性を高めるためで、結局主と役を切り替える過程は複雑です
    関連概念
  • 主観失効
  • SDOWN(subjectively down)は、直接翻訳する「主観」が失効し、すなわち、現在のsentinelインスタンスは、あるredisサービスが「利用できない」状態であると考えている.
  • 客観失効
  • ODOWN(objectively down)は、直接「客観的」に訳すと失効します.すなわち、複数のsentinelインスタンスがmasterが「SDOWN」状態にあると判断すると、masterはODOWNになります.ODOWNは、masterがクラスタによって「使用不可」と判断されたと簡単に理解できます.failoverが開きます
    環境は3台の機械を準備し、そのうち各機械には2つの役割があり、以下のように割り当てられている.
    ホスト名
    IP:Port
    ロール#ロール#
    linux2019_1
    192.168.85.129:6379
    Redis Master
    linux2019_2
    192.168.85.130:6379
    Redis Slave1
    linux2019_3
    192.168.85.128:6379
    Redis Slave2
    linux2019_1
    192.168.85.129:6379
    Sentinel1
    linux2019_2
    192.168.85.130:6379
    Sentinel2
    linux2019_3
    192.168.85.128:6379
    Sentinel3
    操作手順:
  • Redis
  • をインストール
  • 導入主従
  • 配置Sentinal-3台のSentinalプロファイルは同じで、編集プロファイル
  • vi /etc/sentinel.conf #    
    #   
    port 26379
    
    #       
    daemonize yes
    
    # pid    
    pidfile /var/run/redis-sentinel.pid
    
    #       
    logfile "/var/log/sentinel.log"
    
    #       
    dir /var/redis
    
    #   Redis    , IP,   ,   2       2 Sentinel   Redis             
    sentinel monitor mymaster 192.168.85.129 6379 2
    
    #   mymaster 30      ,        
    sentinel down-after-milliseconds mymaster 30000
    
    #   master      ,  slave         master           ,      ,  slave               ,              slave,        ,      。       1,    ,         ,    slave      ,    slave                。
    sentinel parallel-syncs mymaster 1
    
    #           ,                ,              ,    
    sentinel failover-timeout mymaster 180000
    
    #      SENTINEL SET  notification-script client-reconfig-script。
    sentinel deny-scripts-reconfig yes
    
  • sentinel
  • を起動
    起動順序:メインRedis->Redis->Sentinal 1/2/3
    [root@linux2019_01 ~]# redis-sentinel /etc/sentinel.conf 
    [root@linux2019_01 ~]# redis-server /etc/sentinel.conf  --sentinel  #        
    [root@linux2019_01 ~]# ps aux|grep sentinel
    root       7609  0.4  0.3 153880  7944 ?        Ssl  22:50   0:02 redis-sentinel *:26379 [sentinel]
    root       7737  0.0  0.0 112724   988 pts/0    S+   22:59   0:00 grep --color=auto sentinel