機械室が火事になっても怖くないのか?白言盤は阿里雲負荷バランスSLBの災害対策レベルが高い
高可用性アーキテクチャについて話しているとき、多くの兄弟は「私のバックエンドサーバは10台、データベースも主な準備をして、私のアーキテクチャは泰山のように安定している」と誤解している。
しかし、この10台のサーバの前にあることを考えたことがありますか?
その「道案内党」 ― 負荷均衡(SLB) がハングアップしたらどうする?バックエンドのECSがどんなにタフであっても、ユーザーのトラフィックはドアに入らず、システム全体が瞬時に麻痺した。これが典型的な単点故障(SPOF) です
。
全網トラフィックの「総ゲート」として、阿里雲の負荷均衡SLB (現在は伝統型CLBと応用型ALBに細分化されている) は、機械室が火事になったり、骨幹網が切れたりしてもまだ古い犬のようにトラフィックを転送できるのか?今日、私たちはそれらの虚しいものを引っ張って、直接エンジンカバーを開けて、その高可用性シャーシを見てみましょう。
一、第一層保命甲: 使用可能エリア (Zone) にまたがる「スペアタイヤ」のメカニズム
阿里雲のバックグラウンドでSLBを購入すると、細心の注意を払って、システムは必ず二つのものを選んでくれることがわかります
メインの使用可能エリア
そして
バックアップゾーン
。例えば、北京の利用可能区A、北京の利用可能区Bを選ぶ。
これはSLBの最も基礎的で、最も核心的なクロスルームの高可用性アーキテクチャです。
普段の状態 (主な準備がはっきりしている): SLBは実際に基礎的な機械室で少なくとも2つのハードウェアまたは仮想マシンのインスタンスを起動しています。通常のすべてのトラフィックは、メインゾーンAのSLBインスタンスを100% 歩く。スペアゾーンBのインスタンスは「ホットスペア」状態で、車のスペアタイヤのように、回転しながら黙って見ている。
極端な状態 (秒レベルの切り替え): 北京の利用可能エリアAの機械室が突然電源を切ったり、光ケーブルが切れたりしたと仮定する。阿里雲の基礎的な健康検査システムは2 ~ 5秒以内に反応し、ドメイン名の仮想IP(VIP) を直接予備区BのSLBインスタンスにドリフトする。
ユーザーは、ユーザーのネットワーク要求が切断されて点滅する可能性があると感じていますが、すぐに正常なアクセスに戻ることができます。DNS解析を変更したり、バックグラウンドポイントを手動で切り替えたりする必要はなく、基本的に完全に自動化されています。
二、第二層の次元降下打撃: 超大規模クラスタとAnycastのシームレスな災害
「もしある地域の二つの利用可能な地域が同時にハングアップしたら?」と言いました
このとき、SLBのトップレベルのクラスタ設計を見てみましょう。阿里雲のSLBは単一のサーバーが戦っているわけではなく、その背後には巨大なものがある
LVS (4層) + Tengine (7層)
物理クラスター
四層負荷分散 (CLB) では、阿里雲は採用した
Anycast BGP(任意放送)
技術:
阿里雲は中堅ネットワーク上で、世界の複数のコアルームに同じSLBを同時に宣言させた
のパブリックipアドレス。
ユーザーのトラフィックが阿里雲ネットワークに入った瞬間、キャリアのBGPルーターがネットワーク通りの「渋滞状況」に基づいて、最近、最も健康なSLBクラスタに自動的に割り当てられた。
ある機械室のSLBクラスタ全体から煙が出た場合、BGPルーティングプロトコルは数秒以内に自動的にトラフィックを別の都市のSLBクラスタに「迂回」します。このような「多活」の枠組みは、すでに単一地域の制限を超えている。
三、第三層ミクロ防御線: SLBのバックエンドECSに対する「生死点呼」
SLB自身の高可用性はまだ十分ではなく、配布されたサーバも生きていることを保証しなければならない。これが関係しています
ヘルスチェック
。
多くの初心者が健康診断を自由に配置した結果、「雪崩効果」を招いた。SLBの健康診断はこのようにして命を守るのに役立ちます
4層 (TCP) 点呼: SLBは非情なカード機のようで、数秒ごとにバックエンドECSのポート (例えば80ポート) を握手します。握手が成功すれば、あなたが生きていることを示します握手が3回連続して失敗すると、SLBはミリ秒以内にあなたを追い出します。新しく来た流量は絶対にあなたに分けない。
7層 (HTTP)深度健康診断: 多くの場合、ポートは通じているが、バックエンドコードが詰まっている (例えば500エラーがスローされている)。SLBはブラウザをシミュレートして、指定したURL (/health.htmlなど) にアクセスします。返されたステータスコードが2xxまたは3xxでない場合は、このサーバを直接ハッキングします。
故障自己治癒: あなたのECSが再起動したら、コードは正常に戻り、SLBは健康診断に合格した後、自動的にキューに戻って仕事を続けます。全体の過程は人工的な介入がない。
四、実戦ピット回避ガイド: どうやって天物を暴かないのですか?
阿里雲はSLBの高利用を極限にしたが、もしあなた自身が配置時に馬鹿を犯したら、この高利用はダミーになる。次の3つの法律を覚えておいてください
1.バックエンドECSは、使用可能なゾーンにまたがって導入する必要があります
これは最も一般的な間違いです! 多くの人が利用可能なゾーンにまたがるSLB (メインゾーンA、スペアゾーンB) を購入したが、図の便宜のために、バックエンドの4台のECSをすべて利用可能ゾーンAに購入した。
その結果、利用可能エリアAが電源を切ると、SLBは確かに予備エリアBに切り替えることに成功したが、予備エリアBのSLBは後ろを見ると、空いていて、サーバが1台もない。高可用性直接破功。
正しい姿勢: SLBはA/Bゾーンにまたがり、バックエンドのECSもA/Bゾーンに均等に分散しなければならない。
2.「セッション保持(Session stick iness) 」をオンにする必要がありますか?
ビジネスにユーザーログインが必要な場合 (ステータスはサーバのメモリに保存されています) 、セッションをオンにすると、同じユーザーの要求を同じECSに送信することができます。
しかし! ECがあれば
Sが切れたので、このユーザーの会話は必然的に中断される。本当の高可用性のために
Sessionを切り離し、Redisキャッシュ (阿里雲Redis版など) に統一することを強くお勧めします
バックエンドのECSを「ステータスなし」にします。このようにECSが暴発すると、SLBはトラフィックを他のサーバにシームレスに切ることができ、ユーザーは全く無感覚である。
3.TTLとヘルスチェックしきい値を合理的に設定する
健康診断の間隔はあまり長くしないでください (例えば、10秒に1回検査し、5回連続して失敗して確認すると、サーバが1分近くSLBを切って初めて発見されることを意味します) この1分以内に多くのユーザーがエラーを報告しますが、過激 (例えば1秒に1回) に設定しないでください。健康診断自体のトラフィックはあなたのサーバを押し潰します。
金推奨: 応答タイムアウトは3秒、検査間隔は2 ~ 3秒、不健康しきい値は3回、健康しきい値は2回。
まとめ
阿里雲SLBの高可用性は
グローバルBGPルーティング、機械室間の主な準備ハードウェア、バックエンド・サーバ秒レベルのヘルス・チェック
の立体防御システム。
運送次元と設計者にとって、SLBはシステム全体の中で最もコストパフォーマンスの高いコンポーネントである。複雑なKeepalivedの仕組み、仮想IPのドリフト、LVSクラスタのメンテナンスを研究する必要はなく、月にわずかなお金を使うと、大手工場のトップ設計者が教えた災害対策レベルのゲートウェイを直接楽しむことができる。専門的なことをSLBに任せて、あなたがやるべきことは、バックエンドのサーバを正直に別の機械室に分けることだけです。
