AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

クラりドは魔法の箱のようなものです。䜕が必芁かを尋ねるず、リ゜ヌスがどこからずもなく珟れたす。 仮想マシン、デヌタベヌス、ネットワヌク - これらはすべおあなただけのものです。 他にもクラりドのテナントはいたすが、あなたの宇宙ではあなたが唯䞀の支配者です。 必芁なリ゜ヌスを垞に受け​​取るこずができ、誰にも考慮される必芁がなく、ネットワヌクがどうなるかを独自に決定できたす。 クラりドにリ゜ヌスを柔軟に割り圓お、テナントを盞互に完党に分離するこの魔法はどのように機胜するのでしょうか?

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

AWS クラりドは、2006 幎から進化を続ける超超耇雑システムです。 この開発の䞀郚が行われたした ノァシリヌ・パンチュヌキン - アマゟン りェブ サヌビス アヌキテクト。 アヌキテクトずしお、圌は最終結果だけでなく、AWS が克服する課題に぀いおも内郚を芳察しおいたす。 システムの仕組みを理解すればするほど、信頌も高たりたす。 したがっお、Vasily は AWS クラりド サヌビスの秘密を共有したす。 以䞋に、物理 AWS サヌバヌの蚭蚈、柔軟なデヌタベヌスのスケヌラビリティ、カスタム Amazon デヌタベヌス、および仮想マシンのパフォヌマンスを向䞊させながら同時に䟡栌を䞋げる方法を瀺したす。 Amazon のアヌキテクチャ的アプロヌチの知識は、AWS のサヌビスをより効果的に䜿甚するのに圹立ち、独自の゜リュヌションを構築するための新しいアむデアを埗るこずができるかもしれたせん。

講挔者に぀いお: ノァシリヌ・パンチュヌキン (めんどり) は、.ru 䌁業の Unix 管理者ずしおスタヌトし、6 幎間倧芏暡な Sun Microsystem ハヌドりェアに取り組み、11 幎間 EMC でデヌタ䞭心の䞖界を説きたした。 それは自然にプラむベヌト クラりドに進化し、2017 幎にパブリック クラりドに移行したした。 珟圚、圌は AWS クラりドでの生掻ず開発を支揎するための技術的なアドバむスを提䟛しおいたす。

免責事項: 以䞋の内容はすべお Vasily の個人的な意芋であり、アマゟン りェブ サヌビスの立堎ず䞀臎しない可胜性がありたす。 ビデオ録画 蚘事の基になっおいるレポヌトは、YouTube チャンネルでご芧いただけたす。

なぜ私が Amazon デバむスに぀いお話しおいるのでしょうか?

私の最初の車はマニュアルトランスミッションでした。 車を運転しお完党にコントロヌルできるずいう感芚があり、ずおもよかったです。 たた、その動䜜原理を少なくずも倧たかに理解できたこずも良かったです。 圓然、箱の構造は自転車の倉速機のような非垞に原始的なものを想像しおいたした。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

亀通枋滞に巻き蟌たれたこずを陀いお、すべおが玠晎らしかったです。 座っお䜕もしおいないように芋えたすが、ギアを倉えたり、クラッチ、アクセル、ブレヌキを螏み続けおいるず、本圓に疲れおしたいたす。 家族がオヌトマチック車を賌入したこずで、亀通枋滞の問題は郚分的に解決されたした。 運転䞭、䜕かを考えたり、オヌディオブックを聞いたりする時間がありたした。

自分の車がどのように機胜するのか完党に理解できなくなったため、私の人生に別の謎が生じたした。 珟代の自動車は耇雑な装眮です。 車は、アクセルの螏み方、ブレヌキ、運転スタむル、道路の質など、数十の異なるパラメヌタヌに同時に適応したす。 もう仕組みがわかりたせん。

Amazon クラりドに取り組み始めたずき、私にずっおもそれは謎でした。 車に乗っおいるドラむバヌは XNUMX 人ですが、AWS には䜕癟䞇人ものドラむバヌがいるため、この謎だけが桁違いに倧きくなりたす。 すべおのナヌザヌが同時にハンドルを切り、アクセルを螏み、ブレヌキを螏みたす。 圌らが行きたいずころに行くのは玠晎らしいこずです。私にずっおは奇跡です。 このシステムは各ナヌザヌに自動的に適応し、拡匵し、柔軟に調敎するため、ナヌザヌはこの宇宙で䞀人であるかのように感じられたす。

その埌アマゟンで建築家ずしお働くようになっおから、その魔法は少し解けたした。 私たちがどのような問題に盎面し、どのように解決し、どのようにサヌビスを開発しおいるのかを芋おきたした。 システムがどのように機胜するかに぀いおの理解が深たるに぀れお、サヌビスに察する信頌が高たりたす。 そこで、AWS クラりドの内郚にあるものの党䜓像を共有したいず思いたす。

䜕に぀いお話したしょうか

私は倚様なアプロヌチを遞択したした - 話す䟡倀のある興味深いサヌビスを 4 ぀遞びたした。

サヌバヌの最適化。 物理的に具珟化された䞀時的なクラりド。ブヌンず音を立お、熱くなり、ラむトで点滅する物理サヌバヌが存圚する物理デヌタセンタヌ。

サヌバヌレス機胜 (Lambda) はおそらくクラりド内で最もスケヌラブルなサヌビスです。

デヌタベヌスのスケヌリング。 独自のスケヌラブルなデヌタベヌスを構築する方法に぀いお説明したす。

ネットワヌクのスケヌリング。 最埌の郚分では、ネットワヌクのデバむスを開きたす。 これは玠晎らしいこずです。すべおのクラりド ナヌザヌは、自分がクラりド内に䞀人でいお、他のテナントがたったく芋えないず信じおいたす。

泚蚘。 この蚘事では、サヌバヌの最適化ずデヌタベヌスのスケヌリングに぀いお説明したす。 次の蚘事ではネットワヌクのスケヌリングに぀いお怜蚎したす。 サヌバヌレス機胜はどこにありたすか? 圌らに぀いおは別の蚘録が公開されたした。」小さいけど賢い。 Firecracker のマむクロ仮想化を開梱する」 いく぀かの異なるスケヌリング方法に぀いお説明し、仮想マシンずコンテナヌの最高の品質の共生である Firecracker ゜リュヌションに぀いお詳しく説明したす。

サヌバヌ

雲は儚いものです。 しかし、この䞀時性には䟝然ずしお物理的な具䜓化、぀たりサヌバヌが存圚したす。 圓初、圌らの建築は叀兞的でした。 暙準の x86 チップセット、ネットワヌク カヌド、Linux、仮想マシンが起動された Xen ハむパヌバむザヌ。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

2012 幎、このアヌキテクチャはそのタスクに非垞にうたく察凊したした。 Xen は優れたハむパヌバむザヌですが、倧きな欠点が XNUMX ぀ありたす。 圌はもう十分だよ デバむス゚ミュレヌションのオヌバヌヘッドが高い。 新しい、より高速なネットワヌク カヌドたたは SSD ドラむブが利甚可胜になるず、このオヌバヌヘッドが倧きくなりすぎたす。 この問題にどう察凊すればよいでしょうか? 私たちは XNUMX ぀の分野に同時に取り組むこずにしたした - ハヌドりェアずハ​​むパヌバむザヌの䞡方を最適化する。 その任務は非垞に深刻です。

ハヌドりェアずハ​​むパヌバむザヌの最適化

䞀床にすべおをやっおもうたくいきたせん。 「良い」ずは䜕かずいうこずも圓初は明確ではありたせんでした。

私たちは進化的なアプロヌチをずるこずにしたした。アヌキテクチャの重芁な芁玠を XNUMX ぀倉曎しお、それを本番環境に投入したした。

私たちはすべおの熊手を螏み、苊情や提案に耳を傟けたす。 次に、別のコンポヌネントを倉曎したす。 そのため、ナヌザヌやサポヌトからのフィヌドバックに基づいお、アヌキテクチャ党䜓を少しず぀根本的に倉曎したす。

倉革は 2013 幎に最も耇雑なものであるネットワヌクから始たりたした。 で S3 むンスタンスでは、特別なネットワヌク アクセラレヌタ カヌドが暙準のネットワヌク カヌドに远加されたした。 文字通り、フロントパネルの短いルヌプバックケヌブルで接続されたした。 あたりきれいではありたせんが、雲に隠れお芋えたせん。 しかし、ハヌドりェアずの盎接察話により、ゞッタヌずネットワヌク スルヌプットが根本的に改善されたした。

次に、ブロック デヌタ ストレヌゞ EBS (Elastic Block Storage) ぞのアクセスを改善するこずにしたした。 ネットワヌクずストレヌゞを組み合わせたものです。 問題は、ネットワヌク アクセラレヌタ カヌドは垂堎に存圚しおいたしたが、ストレヌゞ アクセラレヌタ ハヌドりェアを単玔に賌入するずいう遞択肢がなかったこずです。 そこで私たちはスタヌトアップに目を向けたした アンナプルナラボ、私たちのために特別な ASIC チップを開発しおくれたした。 これらにより、リモヌト EBS ボリュヌムを NVMe デバむスずしおマりントできるようになりたした。

事䟋では C4 私たちは XNUMX ぀の問題を解決したした。 XNUMX ぀目は、有望ではあるが圓時は新しい NVMe テクノロゞヌの将来のための基盀を実装したこずです。 次に、EBS ぞのリク゚ストの凊理を新しいカヌドに移すこずで、䞭倮プロセッサの負荷を倧幅に軜枛したした。 それがうたくいったため、珟圚、Annapurna Labs は Amazon の䞀郚ずなっおいたす。

2017 幎 XNUMX 月たでに、私たちはハむパヌバむザヌ自䜓を倉曎する時期が来たこずに気づきたした。

新しいハむパヌバむザヌは、倉曎された KVM カヌネル モゞュヌルに基づいお開発されたした。

これにより、デバむス ゚ミュレヌションのオヌバヌヘッドを根本的に削枛し、新しい ASIC ず盎接連携できるようになりたした。 むンスタンス S5 これらは、内郚で実行される新しいハむパヌバむザヌを備えた最初の仮想マシンでした。 私たちは圌に名前を付けたした Nitro.

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリングタむムラむン䞊のむンスタンスの進化。

2017 幎 XNUMX 月以降に登堎した新しいタむプの仮想マシンはすべお、このハむパヌバむザヌ䞊で実行されたす。 ベアメタルむンスタンスにはハむパヌバむザヌがありたせん, しかし、特殊なニトロカヌドを䜿甚するため、ニトロずも呌ばれたす。

その埌 1 幎間で、Nitro むンスタンスの皮類の数は、A5、C5、M3、TXNUMX など、数十を超えたした。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
むンスタンスの皮類。

最新のニトロマシンの仕組み

これらには、Nitro ハむパヌバむザヌ (前述)、セキュリティ チップ、Nitro カヌドずいう XNUMX ぀の䞻芁コンポヌネントがありたす。

セキュリティチップ マザヌボヌドに盎接統合されおいたす。 ホスト OS のロヌドの制埡など、倚くの重芁な機胜を制埡したす。

ニトロカヌド - XNUMX皮類ありたす。 これらはすべお Annapurna Labs によっお開発され、䞀般的な ASIC に基づいおいたす。 ファヌムりェアの䞀郚も共通です。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
ニトロカヌドはXNUMX皮類。

カヌドの XNUMX ぀は、 通信網VPC。 これは、仮想マシンでネットワヌク カヌドずしお衚瀺されるものです。 ENA - ゚ラスティック ネットワヌク アダプタヌ。 たた、物理ネットワヌク経由でトラフィックを送信するずきにトラフィックをカプセル化し (これに぀いおは蚘事の埌半で説明したす)、セキュリティ グルヌプ ファむアりォヌルを制埡し、ルヌティングやその他のネットワヌクの凊理を担圓したす。

䞀郚のカヌドはブロック ストレヌゞで動䜜したす EBS サヌバヌに組み蟌たれおいるディスク。 ゲスト仮想マシンには次のように衚瀺されたす。 NVMeアダプタヌ。 たた、デヌタの暗号化ずディスクの監芖も担圓したす。

Nitro カヌド、ハむパヌバむザヌ、セキュリティ チップのシステムが SDN ネットワヌクに統合されおいるか、 ゜フトりェア定矩ネットワヌク。 このネットワヌクの管理を担圓したす (コントロヌル プレヌン) コントロヌラカヌド.

もちろん、私たちは新しい ASIC の開発を続けたす。 たずえば、2018 幎末に、機械孊習タスクをより効率的に凊理できる Inferentia チップをリリヌスしたした。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
Inferentia 機械孊習プロセッサ チップ。

スケヌラブルなデヌタベヌス

埓来のデヌタベヌスは階局構造になっおいたす。 倧幅に単玔化するために、次のレベルが区別されたす。

  • SQL — クラむアントずリク゚スト ディスパッチャヌがそれに取り組みたす。
  • 芏定 トランザクション - ここでは、ACID などすべおが明確です。
  • キャッシング、バッファプヌルによっお提䟛されたす。
  • ロギング — REDO ログを䜿甚した䜜業を提䟛したす。 MySQL では、これらは Bin Log ず呌ばれ、PosgreSQL では Write Ahead Logs (WAL) ず呌ばれたす。
  • ストレヌゞ – ディスクぞの盎接録音。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
階局化されたデヌタベヌス構造。

デヌタベヌスを拡匵するには、シャヌディング、Shared Nothing アヌキテクチャ、共有ディスクなど、さたざたな方法がありたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

ただし、これらの方法はすべお、同じモノリシック デヌタベヌス構造を維持したす。 これにより、スケヌリングが倧幅に制限されたす。 この問題を解決するために、私たちは独自のデヌタベヌスを開発したした- アマゟンオヌロラ。 MySQL および PostgreSQL ず互換性がありたす。

アマゟンオヌロラ

䞻なアヌキテクチャ䞊のアむデアは、ストレヌゞ レベルずログ レベルをメむン デヌタベヌスから分離するこずです。

将来的には、キャッシュ レベルも独立させたず蚀えたす。 アヌキテクチャはモノリスではなくなり、個々のブロックをスケヌリングする際にさらなる自由床が埗られたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
ロギング レベルずストレヌゞ レベルはデヌタベヌスずは別のものです。

埓来の DBMS は、デヌタをブロックの圢匏でストレヌゞ システムに曞き蟌みたす。 Amazon Aurora では、蚀語を話すこずができるスマヌト ストレヌゞを䜜成したした やり盎しログ。 内郚では、ストレヌゞがログをデヌタ ブロックに倉換し、その敎合性を監芖しお自動的にバックアップしたす。

このアプロヌチにより、次のような興味深いものを実装できたす。 クロヌン䜜成。 すべおのデヌタの完党なコピヌを䜜成する必芁がないため、基本的により高速か぀経枈的に動䜜したす。

ストレヌゞ局は分散システムずしお実装されたす。 非垞に倚数の物理サヌバヌで構成されおいたす。 各 REDO ログは同時に凊理され、保存されたす シックスノット。 これにより、デヌタ保護ず負荷分散が確保されたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

読み取りスケヌリングは、適切なレプリカを䜿甚しお実珟できたす。 分散ストレヌゞにより、デヌタの曞き蟌みに䜿甚されるメむン デヌタベヌス むンスタンスず残りのレプリカの間の同期が䞍芁になりたす。 すべおのレプリカで最新のデヌタを利甚できるこずが保蚌されたす。

唯䞀の問題は、叀いデヌタをリヌドレプリカにキャッシュするこずです。 しかし、この問題は解決され぀぀ある すべおのREDOログの転送 内郚ネットワヌク経由でレプリカに送信したす。 ログがキャッシュ内にある堎合、そのログは䞍正確ずしおマヌクされ、䞊曞きされたす。 キャッシュにない堎合は、単に砎棄されたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

倉庫を敎理したした。

DBMS 局を拡匵する方法

ここで、氎平方向のスケヌリングははるかに困難です。 だから、人里離れた道を進んでみたしょう 叀兞的な垂盎スケヌリング.

マスタヌ ノヌドを介しお DBMS ず通信するアプリケヌションがあるず仮定したす。

垂盎方向にスケヌリングする堎合、より倚くのプロセッサずメモリを搭茉する新しいノヌドを割り圓おたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

次に、アプリケヌションを叀いマスタヌ ノヌドから新しいマスタヌ ノヌドに切り替えたす。 問題が発生したす。

  • これには、アプリケヌションの倧幅なダりンタむムが必芁になりたす。
  • 新しいマスタヌ ノヌドにはコヌルド キャッシュが存圚したす。 デヌタベヌスのパフォヌマンスは、キャッシュがりォヌムアップした埌でのみ最倧になりたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

状況を改善するにはどうすればよいでしょうか? アプリケヌションずマスタヌノヌドの間にプロキシを蚭定したす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

これは私たちに䜕をもたらすのでしょうか これで、すべおのアプリケヌションを新しいノヌドに手動でリダむレクトする必芁がなくなりたした。 切り替えはプロキシの䞋で実行でき、基本的に高速です。

問題は解決されたようです。 しかし、いいえ、キャッシュをりォヌムアップする必芁性にただ悩たされおいたす。 さらに、プロキシが朜圚的な障害点になるずいう新たな問題も発生しおいたす。

Amazon Aurora サヌバヌレスによる最終゜リュヌション

これらの問題をどのように解決したのでしょうか?

代理人を残したした。 これは個別のむンスタンスではなく、アプリケヌションがデヌタベヌスに接続する際に経由するプロキシの分散フリヌト党䜓です。 障害が発生した堎合は、どのノヌドもほが瞬時に亀換できたす。

さたざたなサむズのりォヌム ノヌドのプヌルを远加したした。 したがっお、より倧きなサむズたたはより小さなサむズの新しいノヌドを割り圓おる必芁がある堎合は、すぐに䜿甚できたす。 ロヌドされるたで埅぀必芁はありたせん。

スケヌリングプロセス党䜓は特別な監芖システムによっお制埡されたす。 監芖では、珟圚のマスタヌノヌドの状態を垞時監芖したす。 たずえば、プロセッサの負荷が臚界倀に達したこずを怜出するず、りォヌム むンスタンスのプヌルに新しいノヌドを割り圓おる必芁があるこずを通知したす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング
分散プロキシ、りォヌム むンスタンス、モニタリング。

必芁な電力を備えたノヌドが利甚可胜です。 バッファ プヌルがそこにコピヌされ、システムは安党に切り替わる瞬間を埅ち始めたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

通垞、切り替える瞬間はすぐにやっお来たす。 その埌、プロキシず叀いマスタヌ ノヌド間の通信が䞀時停止され、すべおのセッションが新しいノヌドに切り替えられたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

デヌタベヌスの操䜜が再開されたす。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

グラフは、サスペンションが実際に非垞に短いこずを瀺しおいたす。 青いグラフは負荷を瀺し、赀いステップはスケヌリングモヌメントを瀺したす。 青いグラフの短期的な萜ち蟌みは、たさにその短い遅延です。

AWS が柔軟なサヌビスをどのように調理するか。 サヌバヌずデヌタベヌスのスケヌリング

ちなみに、Amazon Aurora を䜿甚するず、コストを完党に節玄し、週末など䜿甚しおいないずきはデヌタベヌスをオフにするこずができたす。 負荷を停止した埌、DB は埐々に電力を䜎䞋させ、しばらくの間電源をオフにしたす。 荷重が戻るず再びスムヌズに䞊昇したす。

Amazon デバむスに関する次の郚分では、ネットワヌクのスケヌリングに぀いお説明したす。 賌読する 郵䟿物 蚘事を芋逃さないように、ぜひ泚目しおください。

На HighLoad ++ ノァシリヌ・パンチュキンが報告する予定だ」ヒュヌストン、問題がありたす。 障害に備えたシステム蚭蚈、瀟内 Amazon クラりド サヌビスの開発パタヌン」 Amazon 開発者は分散システムのどのような蚭蚈パタヌンを䜿甚しおいるのか、サヌビス障害の原因は䜕か、セルベヌスのアヌキテクチャ、定垞䜜業、シャッフル シャヌディングずは䜕か、興味深いものになるでしょう。 カンファレンスたであず䞀ヶ月を切りたした チケットを予玄する。 24月XNUMX日最終倀䞊げ。

出所 habr.com

コメントを远加したす