Redis+Centinelサービス構築
2407 ワード
本当は書きたくなかったのですが、先日仕事で3 Redis+3 Sentinelのアーキテクチャを新たに導入する必要があった時、手順の詳細がすっかり忘れていたことに気づき、もう一度検察官ステーションにやり直しました・・・やはり書きましょう.
Redis Masterノードのインストール
ソースパッケージのダウンロード
https://redis.io/download
コンパイルインストール
{destpath}にアクセスし、関連ディレクトリを作成
redis.conf
ソースパッケージからredisをconfは{destpath}にコピーしてredisを編集する.confは、主にいくつかの場所に注目しています.
OSパラメータの変更
/etc/sysctlを編集します.conf
今すぐ有効:
開始
検証#ケンショウ#
略
2つのSlaveノードのインストール
ステップ同上、唯一の違いはredisである.confに2行追加:
マスタスレーブ同期の検証
マスターノードでデータを書き、slaveノードから読み出します.具体的には
3つのSentinalノードの構成
sentinel.conf
{destpath}の下でsentinelを編集します.conf
開始
検証#ケンショウ#
3つのsentinelノードが起動したら、redis-cliを使用して任意のsentinelノードにログインし、実行します.
現在のマスターの情報が出力されます.現在のプライマリノードのipとportです.
slaveの情報を出力するには、master以外の2つのRedisインスタンスのipとportの上記の2つのコマンドが出力するflagsフィールドが「master」と「slave」であるべきであり、「sdown」、「odown」などの情報が表示された場合、構成に誤りがあることを示す
failoverテスト
マスターノードに接続し、コマンドを実行します.
このコマンドはmasterノードを10秒間停止させ、構成されたdown-after-millisecondsが10秒以内であればsentinelの選挙をトリガーするはずです.10秒待って任意のsentinelに接続し、実行
返されるmasterが別のipになるのを見てください.
返される2つのslaveには元のmasterが含まれている必要があります.
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が含まれている必要があります.