1. はじめにRedis はエンタープライズ レベルの開発では非常に一般的ですが、単一の Redis では安定した使用を保証できないため、クラスターを構築する必要があります。
1 つ目は、今回構築する高可用性のセンチネルです。メインの Redis がハングアップした場合、Sentinel はフェイルオーバーに投票します。 2 つ目はシャード クラスターです。 Sentinel の欠点の 1 つは、マスター ノードが 1 つしか存在できず、書き込み効率が低すぎることです。シャード化されたクラスターはセンチネル問題を解決し、水平方向に拡張して Redis のパフォーマンスを向上させることができます。 センチネルの最小数は 3 で、奇数の場合は増加します。シャード クラスターの最小構成は、マスター 3 つとスレーブ 3 つです。今回は仮想マシンを使用して構築しました。編集者がそれを構築するのに1週間かかりました。マスターとスレーブには問題はありませんでしたが、フェイルオーバーは機能しませんでした。根本的な原因は、Docker ネットワークの問題でした。 Redis と Sentinel は同じネットワーク セグメントにありませんでした。多くのチュートリアルではホストが使用されていますが、現在正常に起動できないかどうかはわかりません。そのため、ネットワーク内にある必要があります。 これは主に体験であり、知識ベースの質問が多すぎるため、公式 Web サイトにアクセスして確認できます。
2. dockerとdocker composeのインストールdocker と docker compose のインストールと使い方 [最新バージョン] 3. Redisマスタースレーブを起動する1. redis-sentinel-testフォルダを作成するmkdir redis -センチネル-テスト 2. その中に2つのフォルダを作成するcd redis -センチネル-テスト/ 3. RedisでComposeファイルを作成するdocker-compose.yml にちなんで名前を付ける必要があります。このテストでは、redis はディレクトリをホストにマウントしません。必要に応じて、ボリュームを使用してホストにマウントすることもできます。 vim docker - compose 。 yml 4. 作成ファイルを編集するテストの便宜上、ここではパスワードは設定されていません。 protected-mode no: 無効にすると、他の場所から接続を使用できます。 slave-announce-ip: ホストマシンの IP を使用します。 バージョン: "4.1" 5. Redisマスタースレーブを起動するCompose が更新され、開始文字が - からスペースに変更されました。 docker -作成-d 6. 重要な注意事項起動すると、docker compose によってフォルダー名 + _default という名前のネットワークが自動的に作成されます。 dockerネットワークls 7. マスタースレーブステータスを確認するメインの redis を入力します。 e77 はコンテナ ID です: docker exec -it e77 / bin / bash ステータス情報を表示します: 情報 8. マスターとスレーブをテストする4. 3人のセンチネルを起動する1. センチネルフォルダに切り替えるCD .. 2. sentinel.confファイルを作成する公式ウェブサイトにアクセスして、最小限の構成ファイルを見つけましょう。
これらは 2 つのインスタンスですが、必要なのは 1 つだけなので、最初の 4 行だけが必要です。 保護モードなし 最初の行: Redis は、自由に書き込むことができる mymaster という名前の Redis クラスターを監視します。以下は IP アドレスです。これはホスト マシンの IP アドレスにすることができ、ポートはマスター Redis のポートになります。 2はセンチネルの投票数です。マスター Redis がダウンすると、3 つの Sentinel のうち 2 つによって投票される Redis がマスターになります。 ! sentinel1.conf ファイルを作成し、上記の 4 行を貼り付けます。 vimセンチネル1 。会議 変更せずに 2 つのコピーを作成します。 センチネル1をcpします。 conf sentinel2 。会議 3. コンポーズファイルを書き込むバージョン: "4.2" ネットワーク: これは上で述べたことと一致します。フェイルオーバーを完了するには、Sentinel と Redis が同じネットワーク内にある必要があります。 4. ファイルツリーを表示する木 そうでない場合は、インストールできます: yum -y ツリーをインストール 5. Sentinelを起動するdocker-compose を起動 -d 6. センチネル情報を表示するセンチネル コンテナに入ります: docker exec -it c8 /bin/bash Sentinel に接続: redis - cli - p 26379 ==マスター 1 名、スレーブ 2 名、センチネル 3 名が完成== 7. フェイルオーバーテストマスターを停止します: ドッカー停止e77 8. フェイルオーバーログdocker -ログを作成-f 9. センチネルのステータスを確認するこの時点で、マスターノードは自動的にポート 6381 に切り替わります。 10. `6379` サービスを再起動するdocker を再起動 e77 新しく追加された 6379 がスレーブ ノードとしてマスター ノードに参加することがわかりました。 5. SpringBootを統合する1. 依存関係をインポートするエディターの Springboot バージョンは 2.3.7.RELEASE です。 <依存関係> 2. yml設定サーバー: 3. JSONシリアル化構成/** 4. 新しいコントローラーテストを作成する/** 5. プロジェクト構造6. テスト7. Redisに値があるかどうかを確認するVI.結論編集者は1週間の作業を経て、ついにそれを完成させました。一番の問題はネットワークの問題でしたが、ついに解決しました! !私はたくさんのビデオやチュートリアルを見てきましたが、その中にはあまりにも漠然としたものもあったので、後から来る人たちの役に立てればと思い、ピットフリーバージョンを 1 日かけて作成しました。 ! |
<<: G-Bank のクラウドネイティブ ビジネス レジリエンスの探求と実践
>>: 2023 年のマルチクラウドに関する 4 つの重要な考慮事項
これまで、誰もがトラフィックの考え方について語ってきました。オンラインとオフラインの両方でトラフィッ...
ネットワーク インターフェイス カードは広く普及しているテクノロジですが、SmartNIC は比較的...
ゲームの広告はなぜこんなにも混乱しているのでしょうか? 01パソコン上で最も人気のある広告は、かつて...
ElasticSearchとは何か、なぜESを使うべきなのかオープンソースの分散検索および分析エンジ...
360総合検索は、前回の3Bサイト事件以降、沈静化しているようで、大きなニュースは漏れていません。3...
前回のメールプロモーションの後、私はある程度の成功を収めました。私の努力は報われました。プロモーショ...
一般人にとって、中秋節は家族が集まる良い日ですが、マーケティング担当者にとっては頭を悩ませ、頭がゾク...
業界が低迷しているとき、私たちは皆、デビッド・オグルビーの有名な言葉を何度も繰り返して考えます。「広...
共同購入は過去のものなのでしょうか?百連隊作戦を経験し、百連隊勝利の興奮を目にしたにもかかわらず、共...
SEO 業界は規制される必要がありますか?はい、しかし規範は道徳から来るものではありません。倫理を利...
今月中旬、Godaddyは社内従業員の操作ミスによりサーバートラブルが発生し、多数のウェブサイトに影...
Hostshare(ホスト共有組織)は2017年にドメイン名をhostyunに変更し、それから12年...
毎年恒例のハロウィーンまであと 3 日です。この期間中はプロモーションが欠かせません。VPS 販売業...
先日、「良い x: 修正済み - 年間支払い $12/KVM/1000M ポート/無制限トラフィック...
今日、Namecheap がサーバー サービスを全面的に更新したというニュースを受け取りました。最低...