2017-08-31 6 views
1

私は2つのRedisサーバーを1つのマスターともう1つのスレーブ(レプリケーション)を持っています。何らかの理由でマスターがダウンした場合、スレーブはマスターになり、何か問題が発生するまでマスターとして機能し続けます。nodeJSのsentinalを使用してRedis Masterを識別する

私は現在マスターとして動作しているRedisにデータをプッシュしたいnodeJSサーバーを持っています。私はRedisサーバーを監視する監視を持っていますが、私の質問はnodeJSを使って監視情報からマスター情報を取り出す方法ですか? 方法がある場合、サービスを再起動せずにデータを自動的に代替のRedisサーバーにプッシュしますか?

答えて

1

ioredisは、センチネルをサポートします。

var redis = new Redis({ 
    sentinels: [{ host: 'localhost', port: 26379 }, { host: 'localhost', port: 26380 }], 
    name: 'mymaster' 
}); 

redis.set('foo', 'bar'); 

名前はredis sentinel.confで指定する必要があるredisクラスタを識別します。このpageは、センチネルの設定方法を参照できます。あなたの2番目の質問について

、以下を参照:

ioredisはにあなたが接続されたノードがあっても、常にフェイルオーバー後のマスターであることを保証します。フェールオーバーが発生した場合、障害ノードに再接続しようとすると(iノードが再び使用可能になったときにスレーブに降格されます)、ioredisは新しいマスタノードをセンチネルに問い合わせて接続します。フェールオーバー中に送信されたすべてのコマンドはキューに入れられ、新しい接続が確立されたときに実行され、コマンドが失われないようにします。

node-redisはこれをサポートしていません。

関連する問題