Redis+Centinelサービス構築

2407 ワード

本当は書きたくなかったのですが、先日仕事で3 Redis+3 Sentinelのアーキテクチャを新たに導入する必要があった時、手順の詳細がすっかり忘れていたことに気づき、もう一度検察官ステーションにやり直しました・・・やはり書きましょう.
Redis Masterノードのインストール
ソースパッケージのダウンロード
https://redis.io/download
コンパイルインストール
make PREFIX={destpath} install

{destpath}にアクセスし、関連ディレクトリを作成
mkdir logs conf rdb

redis.conf
ソースパッケージからredisをconfは{destpath}にコピーしてredisを編集する.confは、主にいくつかの場所に注目しています.
bind {ip}  #  bind 127.0.0.1
port {port}
protected-mode yes  #    protected-mode
daemonize yes #    
logfile "{destpath}/logs/redis.log"
requirepass "{password}"
dir "{destpath}/rdb"  #dump.rdb    

OSパラメータの変更
/etc/sysctlを編集します.conf
vm.overcommit_memory = 1
net.core.somaxconn = 1024

今すぐ有効:
sysctl -p

開始
bin/redis-server ./redis.conf

検証#ケンショウ#

2つのSlaveノードのインストール
ステップ同上、唯一の違いはredisである.confに2行追加:
slaveof  
masterauth "{password}"

マスタスレーブ同期の検証
マスターノードでデータを書き、slaveノードから読み出します.具体的には
3つのSentinalノードの構成
sentinel.conf
{destpath}の下でsentinelを編集します.conf
daemonize yes
loglevel notice
logfile "{destpath}/logs/sentinel.log"
bind {ip}
port {port}
dir "/tmp"
sentinel monitor {name} {masterip} {masterport} 2  #name        ,     
sentinel down-after-milliseconds {name} 8000  #master         
sentinel auth-pass {name} {password}  #{password}  redis.conf    

開始
bin/redis-sentinel ./sentinel.conf

検証#ケンショウ#
3つのsentinelノードが起動したら、redis-cliを使用して任意のsentinelノードにログインし、実行します.
SENTINEL master {name}

現在のマスターの情報が出力されます.現在のプライマリノードのipとportです.
SENTINEL slaves {name}

slaveの情報を出力するには、master以外の2つのRedisインスタンスのipとportの上記の2つのコマンドが出力するflagsフィールドが「master」と「slave」であるべきであり、「sdown」、「odown」などの情報が表示された場合、構成に誤りがあることを示す
failoverテスト
マスターノードに接続し、コマンドを実行します.
DEBUG sleep 10

このコマンドはmasterノードを10秒間停止させ、構成されたdown-after-millisecondsが10秒以内であればsentinelの選挙をトリガーするはずです.10秒待って任意のsentinelに接続し、実行
SENTINEL master {name}

返されるmasterが別のipになるのを見てください.
SENTINEL slaves {name}

返される2つのslaveには元のmasterが含まれている必要があります.