redis哨兵クラスタ環境構築

1894 ワード

一、哨兵の紹介


哨兵(sentinal)はredisクラスタアーキテクチャにおいて非常に重要なコンポーネントであり、主な機能は以下の通りである.
  • クラスタモニタリング、redis masterとslaveプロセスが正常に動作しているかどうかをモニタリングする
  • メッセージ通知、あるredisインスタンスが故障した場合、哨兵は管理者
  • にメッセージ通知を送信する責任を負う.
  • フェイルオーバmaster nodeがオフの場合、slave node
  • が自動的に転送されます.
  • コンフィギュレーションセンタは、フェイルオーバが発生した場合、クライアントに新しいmasterアドレス
  • を通知する.
    哨兵の核心知識:
  • 哨兵クラスタの少なくとも3つのインスタンスは、2つの哨兵のクラスタの下で、Configuration:quorum=1(配置には1つの哨兵がmasterダウンタイムを考慮する必要がある)を仮定し、メインスタンバイ切替には1つの条件majority(多くの哨兵が実行されている)が必要であり、2つの哨兵ホストが存在する機械がダウンタイムした場合、残りの1つの哨兵インスタンスは、多くの哨兵が実行されているという条件を満たさない
  • 哨兵+redis主従アーキテクチャは、データのゼロ損失を保証することができず、redisクラスタの高可用性
  • しか保証できない.

    二、哨兵集団の環境構築

    # mkdir /etc/sentinel
    # mkdir -p /var/sentinel/5000
    # mkdir -p /var/log/sentinal/5000
    # cp /usr/local/redis-3.2.8/sentinel.conf /etc/sentinel
    # mv /etc/sentinel/sentinel.conf /etc/sentinel/5000.conf 
    
    # vi /etc/sentinel/5000.conf
        ##   
        port 5000
        bind 192.168.27.11      ##      ip  
        dir /var/sentinel/5000
        sentinel monitor mymaster 192.168.27.11 6379 2
        sentinel down-after-milliseconds mymaster 30000
        sentinel failover-timeout mymaster 60000
        sentinel parallel-syncs mymaster 1
        logfile /var/log/sentinel/5000/sentinel.log
    
    ##       
    # redis-sentinel /etc/sentinel/5000.conf
    # redis-server /etc/sentinel/5000.conf --sentinel
    
    ##       
    # redis-cli -h 192.168.27.11 -p 5000
    > sentinel master mymaster
    > sentinel slaves mymaster
    > sentinel sentinels mymaster
    > sentinel get-master-addr-by-name mymaster
    

    三、高可用性災害対応訓練テスト


    プライマリノードのredisを強制的に停止
    # ps -ef|grep redis 
    # kill -9    
    # rm -rf /var/run/redis_6379.pid
    
    ##         
    # cat /var/log/sentinel/5000/sentinel.log
    
    ##      master  
    # redis-cli -h 192.168.27.11 -p 5000
    > sentinel get-master-addr-by-name mymaster