問題タブ [redis-sentinel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Sentinel 構成用に ASP.NET Redis セッション状態プロバイダーを構成する
しばらくの間、アプリでASP.NET Redis セッション状態プロバイダーを構成しようとしています。この投稿のおかげで、最終的にマスターに直接接続し、キーを設定/取得することができました: ASP.NET セッション状態プロバイダーを使用して Redis サーバーに接続できません
さて、私の次の質問は... これを Sentinel 構成で動作させることです。
SENTINEL get-master-addr-by-name master-dev-sessionstate
マスターを決定するコマンドを熟知しています。このプロバイダーにはこれが組み込まれていますか? 上にリンクされたブログ投稿のコメント (これは、これに関する唯一のドキュメントでもあります) に基づいて、connectionString 属性を使用して複数のホストを渡すことができるように思われます。ただし、これらの複数のホストが Sentinel を意図しているかどうかはわかりません。
このように接続を構成すると、次のエラーが表示されます。
追加情報: redis サーバーに接続できませんでした。切断されたマルチプレクサを作成するには、AbortOnConnectFail を無効にします。
接続文字列にマスター IP しかない場合でも、このエラーが発生します。上記のように、接続文字列に abortConnect="false" が含まれています。これは、実行するように指示しているものです。これが接続文字列に存在するかどうかに関係なく、同じエラーが発生します。
これを念頭に置いて、ここに私の質問があります...
- このプロバイダーは Sentinel 構成をサポートしていますか?
- はいの場合、接続文字列の正しい形式は何ですか?
- これに関する他の優れたドキュメントリソースはありますか? Microsoft のサイトで、そのブログ投稿以外の情報を見つけることさえできませんでした。
編集: これはカスタムのローカル Redis インストールであることに注意してください。Azure を介して実行していません。
編集: 最近、作業構成を Sentinel に向けようとしましたが、「この操作にサービスを提供するための接続がありません: EVAL.」というメッセージが表示されます。これにより、このプロバイダーには Sentinel のサポートがないと思われます。誰でもこれを確認できますか?
redis - Redis Sentinel は再起動されるまでマスター -> スレーブを復活させません
Sentinel でマスター ノードを復活させるのに問題があります。特に、マスターが失われた場合、スレーブは適切に昇格されますが、再起動時にマスターが降格されることはありません。ただし、Sentinel をすぐに再起動すると、マスター ノードが降格されます。私の構成が悪いのでしょうか、それとも基本的なものが欠けていますか?
編集: https://groups.google.com/forum/#!topic/redis-db/4AnGNssqYTwで Xpost
次のようにいくつかの VM をセットアップしました。すべて Redis 3.1.999 を使用しています。
両方のセンチネルの私のセンチネル構成:
マスター ノードで redis を停止します。予想通り、センチネルはそれをキャッチし、スレーブをマスターに昇格させます。
数分待ってから、以前のマスター ノードで Redis を再起動します。予想外に (私には) ノードがスレーブに降格されません。
さらに数分待ってから、センチネルの 1 つを再起動します。すぐに、ぶら下がっている以前のマスター ノードを検出し、降格させます。
python-2.7 - Python から Sentinel フェイルオーバーを呼び出す
3 つのサーバーと 3 つの Sentinel (ただし、異なるインスタンス) で実行されている単純な Redis 構成があります。この構成はほとんど問題なく実行されており、最終的にはマスターが失敗します (バックグラウンド保存を完了できなかった一般的な Redis の問題)。
私の問題は、何かを保存 (または削除) しようとするたびにエラーが発生することです。
新しいマスターを選択する「フェイルオーバー」強制を呼び出すように Sentinel に依頼する方法はありますか? redis-cli を使用するのは非常に簡単ですが、Python(2.7) プログラム (redis.py を使用) からそれを行う方法が見つかりませんでした。
何か案は?
redis - Redis - マスターがシャットダウンした場合にスレーブを選択するようにセンチネルを構成する
こんにちは、3 つの aws インスタンスで構成された Sentinel を使用してクラスター Redis を作成しました。HA redis クラスターと動作するように Sentinel を構成しましたが、マスターのクラッシュ (マスター インスタンスのシャットダウン) をシミュレートすると、スレーブにインストールされた Sentinel が見つかりませんマスターの歩哨と選挙は失敗します。私のセンチネル構成は次のとおりです。
すべてのインスタンスに同じファイル
redis - Redis Sentinel と fix-slave-config: Redis ノードが 2 つのマスターのスレーブとして設定されるべきではないときに、スレーブとして設定される
大規模な redis フリート (12 個のセンチネル、それぞれ 1 つのマスターと 1 つのスレーブの 500 以上のシャード) でフェールオーバーにセンチネルを使用しようとしています。センチネルがコマンド +fix-slave-config を特定の redis ノードに繰り返し発行するという非常に奇妙な問題に遭遇しています。それだけの価値があるため、これが小規模で起こっていることに気づきませんでした。
2 つの特定の問題に気付きました。
- +上で述べたように、fix-slave-config メッセージ
- sentinel.conf は、特定のスレーブが 2 つのマスターを持つことを示しています (マスターは 1 つだけであるべきです)。
初期状態のフリートには、特定のスレーブ ノード XXX.XXX.XXX.177 とマスター XXX.XXX.XXX.244 があります (これらを合わせて、フリート内のシャード 188 を構成します)。ノードの停止がなければ、スレーブのマスターは XXX.XXX.XXX.96 (シャード 188 のマスター) に切り替えられ、その後切り替えられます。これは、スレーブ ノードとマスター ノードに SSH で接続し、redis-cli 情報を確認することで確認できます。すべての Redis ノードが正しい構成で開始されました。Sentinel ノードはすべて、sentinel.conf に正しい構成がありました。各 Sentinel には、これらのスレーブからマスターへの変更のたびにクエリを実行すると、まったく同じマスターのリストがあります。
私の 12 の歩哨全体で、次のログが記録されます。毎分、+fix-slave-config メッセージが送信されます。
SENTINEL MASTERS コマンドの出力を次に示します。奇妙なことに、shard-188 には 2 つのスレーブがありますが、実際には 1 つしかないはずです。XXX.XXX.XXX.177 が shard-172 と shard-182 の下にある場合、出力は同じに見えます。
ケース 1) XXX.XXX.XXX.244 が XXX.XXX.XXX.177 のマスター
ケース 2) XXX.XXX.XXX.96 が XXX.XXX.XXX.177 のマスター
各センチネルの開始時の sentinel.conf は
数分後に結果として得られる sentinel.conf (すべてのセンチネル) を次に示します。2 つのスレーブに注意してください。