目次
HA クラスターでのスプリット ブレインを防ぐ方法
1. はじめに
2. HA クラスターのスプリット ブレインを防ぐ方法
3. フェンスがなくてもデバイスは安全ですか? この問題を説明するために、PostgreSQL または MySQL のデータ レプリケーションを例に挙げます。
5. 上記の戦略を実装する方法
6. 参考資料
ホームページ バックエンド開発 PHPチュートリアル HA クラスターでスプリット ブレインを防ぐ方法_PHP チュートリアル

HA クラスターでスプリット ブレインを防ぐ方法_PHP チュートリアル

Jul 12, 2016 am 09:04 AM
android

HA クラスターでのスプリット ブレインを防ぐ方法

1. はじめに

スプリット ブレインとは、高可用性 (HA) システムにおいて、接続されている 2 つのノードが切断されると、システム全体が 2 つのノードに分割されることを指します。 2 つの独立したノード この時点で、2 つのノードが共有リソースをめぐって競合し始め、システムの混乱とデータの破損が発生します。

ステートレス サービスの HA の場合、スプリット ブレインかどうかは関係ありませんが、ステートフル サービス (MySQL など) の HA の場合は、スプリット ブレインを厳密に防止する必要があります。 (ただし、運用環境の一部のシステムでは、ステートレス サービス HA セットに従ってステートフル サービスが構成されており、その結果は想像できます...)

2. HA クラスターのスプリット ブレインを防ぐ方法

一般的に 2 つの方法を使用します
1. アービトレーション
2 つのノードが同意しない場合、サードパーティのアービターがどちらの決定を聞くかを決定します。このアービ​​ターは、ロック サービス、共有ディスク、またはその他のものである可能性があります。
2. フェンシング
ノードのステータスが判断できない場合は、フェンシングによって他のノードを強制終了し、共有リソースが完全に解放されるようにします。その前提として、信頼できるフェンス設備が必要です。

理想的には、上記のどちらも欠けてはいけません。
ただし、ノードがマスター/スレーブ レプリケーションに基づくデータベース HA などの共有リソースを使用しない場合は、フェンス デバイスを安全に省略して、クォーラムのみを保持することもできます。また、多くの場合、クラウド ホストなどの環境では利用可能なフェンス デバイスがありません。

それでは調停を省略してフェンス装置だけを維持してもいいでしょうか?
いいえ。 2 つのノードが相互に接続できなくなると、同時にお互いをフェンシングすることになるためです。フェンシング方法が再起動の場合、2 台のマシンは継続的に再起動します。フェンシング方法の電源がオフの場合、結果として 2 つのノードが一緒に停止するか、1 つが生き残る可能性があります。しかし、2 つのノードが相互に接続できなくなった理由が、一方のノードのネットワーク カード障害であり、生き残ったノードがたまたま障害のあるノードだった場合、結末は悲劇的になります。

つまり、単純な二重ノードでは、いずれにしてもスプリットブレインを防ぐことはできません。

3. フェンスがなくてもデバイスは安全ですか? この問題を説明するために、PostgreSQL または MySQL のデータ レプリケーションを例に挙げます。

レプリケーション ベースのシナリオでは、マスター/スレーブ ノードはリソースを共有しないため、両方のノードが稼働していても問題はありません。問題は、クライアントが停止しているはずのノードにアクセスするかどうかです。これには、やはりクライアントのルーティングの問題が関係します。

クライアントのルーティングには、VIP に基づく、プロキシに基づく、DNS に基づく、または単純にクライアントがサーバー アドレスのリストを保持し、マスターとスレーブを独自に決定するなど、いくつかの方法があります。どちらの方法を使用する場合でも、マスター/スレーブが切り替わったときに配線を更新する必要があります。

DNS はクライアントによってキャッシュされる可能性があり、クリアするのが難しいため、DNS に基づくルーティングは信頼できません。

VIP ベースのルーティングには、いくつかの変動要素があります。停止するはずのノードが VIP を削除しない場合、いつでも問題が発生する可能性があります (新しい所有者が arping を通じてすべてのホストの arp キャッシュを更新した場合でも)。 、ノードの場合、ホストの arp の有効期限が切れて arp クエリが送信されると、ip の競合が発生します。したがって、VIP も特別な共有リソースであり、障害が発生したノードから削除する必要があると考えることができます。ピッキング方法としては、障害ノードが通信が途絶えたことを発見した後、ノードが生きていれば自力でピッキングするのが最も簡単です(死んでいる場合はピッキングする必要はありません)。 VIP の抽出を担当するプロセスが機能しない場合はどうすればよいですか?現時点では、信頼できないソフト フェンス デバイス (ssh など) を使用できます。

プロキシが唯一のサービス入口であるため、プロキシベースのルーティングはより信頼性が高くなります。プロキシが 1 か所で更新される限り、クライアントの誤アクセスの問題は発生しませんが、プロキシの高可用性も考慮する必要があります。

サーバーアドレスリストに基づく方法に関しては、クライアントはバックグラウンドサービスを通じてマスターとスレーブを決定する必要があります(PostgreSQL/MySQLセッションが読み取り専用モードであるかどうかなど)。このときマスターが二人いるとクライアントは混乱してしまいます。この問題を防ぐには、元のマスター ノードが接続が失われたことを発見した後、サービスを自ら停止する必要があります。これは、前の VIP の削除と同じです。

そのため、障害ノードによるトラブルを防ぐために、障害ノードは通信が途絶えた後に自らリソースを解放する必要があり、リソースを解放するプロセスの障害に対処するために、ソフトフェンスを追加することができます。この前提の下では、信頼できる物理的なフェンス設備がなくても安全であると考えることができます。


4. マスター/スレーブ切り替え後にデータが失われないことは保証できますか? マスター/スレーブ切り替えとスプリットブレイン後にデータが失われるかどうかは、2 つの異なる問題であると考えられます。また、PostgreSQL または MySQL のデータ レプリケーションを例として説明します。

PostgreSQL の場合、同期ストリーミング レプリケーション用に構成されている場合、ルーティングが正しいかどうかに関係なく、データは失われません。間違ったノードにルーティングされたクライアントはデータをまったく書き込むことができないため、常にスレーブ ノードからのフィードバックを待ちます。マスターだと思っていたスレーブ ノードは当然それを無視します。もちろん、これが常に発生するのは良いことではありませんが、クラスター監視ソフトウェアがルーティング エラーを修正するのに十分な時間が得られます。

MySQL の場合、半同期レプリケーション用に構成されている場合でも、タイムアウトが発生すると、自動的に非同期レプリケーションにダウングレードされる場合があります。 MySQL レプリケーションの低下を防ぐために、rpl_semi_sync_master_wait_no_slave をオン (デフォルト値) に保ちながら、非常に大きな rpl_semi_sync_master_timeout を設定できます。ただし、このときスレーブに障害が発生するとマスターも停止します。この問題の解決策は PostgreSQL と同じで、1 つのマスターと 2 つのスレーブを構成する (両方のスレーブがダウンしていない限り問題ありません) か、外部クラスター監視ソフトウェアを使用して半同期と非同期を動的に切り替えるかのいずれかです。
非同期レプリケーションが設定されている場合は、データを失う可能性があることを意味します。現時点では、マスターとスレーブを切り替えるときに一部のデータが失われることは大きな問題ではありませんが、自動切り替えの数を制御する必要があります。たとえば、制御がフェイルオーバーされた元のマスターは自動的にオンラインになることはできません。そうしないと、ネットワークのジッターによりフェイルオーバーが発生すると、マスターとスレーブが切り替わり続け、データが失われ、データの一貫性が失われます。

5. 上記の戦略を実装する方法

上記のロジックに準拠する一連のスクリプトを最初から実装できます。ただし、私は、Pacemaker + Corosync + 適切なリソース エージェントなど、成熟したクラスター ソフトウェアに基づいて構築することを好みます。 Keepalived は、ステートフル サービスの HA には適していません。ソリューションにアービトレーションやフェンスを追加しても、常に不快に感じます。

Pacemaker+Corosyncソリューションを使用する際の注意事項もあります
1) リソースエージェントの機能と原理を理解する
リソースエージェントの機能と原理を理解することによってのみ、それが適用できるシナリオを知ることができます。たとえば、pgsql のリソース エージェントは比較的完成度が高く、同期および非同期ストリーム レプリケーションをサポートし、2 つを自動的に切り替えることができ、同期レプリケーション中にデータが失われないことを保証できます。ただし、現在の MySQL のリソース エージェントは非常に弱いため、GTID やログ補正がないとデータが失われやすくなります。これを使用せず、MHA を使用し続けることをお勧めします (ただし、MHA を導入する場合はスプリット ブレインに注意してください)。 )。

2) 正当な投票数 (クォーラム) を確保します
クォーラムは、クラスター内のすべてのノードの過半数がコーディネーターを選出し、クラスター内のすべての命令がこのコーディネーターによって発行されます。スプリットブレイン問題を完全に防ぎます。このメカニズムが効果的に機能するには、クラスター内に少なくとも 3 つのノードが必要であり、no-quorum-policy が stop に設定されており、これがデフォルト値でもあります。 (多くのチュートリアルでは、デモンストレーションの便宜上、no-quorum-policy を無視するように設定しています。他の調停メカニズムを使用せずに運用環境で同じことを行うと、非常に危険です!)

しかし、ノードが 2 つしかない場合はどうなるでしょうか?
1 つ目は、マシンを借りて 3 つのノードを集め、そのノードにリソースが割り当てられないように場所の制限を設定します。
2 つ目は、クォーラムを満たさない複数の小さなクラスターをまとめて大規模なクラスターを形成することです。リソース割り当ての場所を制御するために、場所の制限も適用されます。

しかし、多数の 2 ノード クラスターがある場合、その数を構成するほど多くのノードを見つけることができず、これらの 2 ノード クラスターをまとめて大きなクラスターを形成することは望ましくありません (たとえば、管理が不便だと思います)。次に、3 番目の方法を検討できます。
3 番目の方法は、プリエンプトされたリソースと、このプリエンプトされたリソースのサービスとコロケーション制約を設定することです。このプリエンプトされたリソースは、Zookeeper に基づいてパッケージ化されたロック サービスなどのロック サービスにすることも、以下の例のように単純に最初から作成することもできます。
http://my.oschina.net/hanhanztj/blog/515065
(この例は、http プロトコルに基づく短い接続です。より詳細なアプローチは、サーバーが接続を検出できるように、長い接続のハートビート検出を使用することです。ロックを解除してください)
ただし、このプリエンプトされたリソースの高可用性も確保する必要があります。プリエンプトされたリソースを提供するサービスを lingyig 高可用性にすることも、よりシンプルにして 3 つのサービスを 1 つずつデプロイすることもできます。デュアル ノードと 3 番目のノードは別の専用クォーラム ノードにデプロイされ、ロックが取得されたと見なされる前に 3 つのロックのうち少なくとも 2 つが取得されます。このクォーラム ノードは、多くのクラスターにクォーラム サービスを提供できます (マシンは 1 つの Pacemaker インスタンスのみをデプロイできるため、それ以外の場合は、N 個の Pacemaker インスタンスがデプロイされたアービター ノードを使用して同じことを行うことができます)。ただし、そうするしかない場合は、Pacemaker の法定投票数を満たすための以前の方法を使用してみてください。この方法の方が簡単で信頼性が高くなります。

6. 参考資料

http://blog.chinaunix.net/uid-20726500-id-4461367.html
http://my.oschina.net/hanhanztj/blog/515065
http://clusterlabs.org /doc/en-US/Pacemaker/1.1-plugin/html-single/Pacemaker_Explained/index.html
http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster
http://mysqllover.com/?p=799
http: //gmt-24.net/archives/1077

www.bkjia.com本当http://www.bkjia.com/PHPjc/1073479.html技術記事 HA クラスターでスプリット ブレインを防ぐ方法 1. はじめに スプリット ブレインとは、高可用性 (HA) システムにおいて、接続されている 2 つのノードが切断されると、元々は全体であったシステムが...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:23 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Sep 11, 2024 am 06:37 AM

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します Sep 07, 2024 am 06:35 AM

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Sep 12, 2024 pm 09:21 PM

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:22 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 Sep 10, 2024 am 06:45 AM

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T

See all articles