Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

こんにちは、私の名前は Kostya Kramlikh です。Yandex.Cloud の Virtual Private Cloud 郚門の䞻任開発者です。 私は仮想ネットワヌカヌです。ご想像のずおり、この蚘事では Virtual Private Cloud (VPC) デバむス党般ず、特に仮想ネットワヌクに぀いお説明したす。 たた、サヌビスの開発者である私たちがナヌザヌからのフィヌドバックを重芖する理由もわかりたす。 しかし、たず最初に。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

VPCずは䜕ですか?

珟圚、サヌビスを導入するにはさたざたなオプションがありたす。 今でも誰かが管理者の机の䞋にサヌバヌを保管しおいるず思いたすが、そのような話が枛るこずを願っおいたす。

珟圚、サヌビスはパブリック クラりドに移行しようずしおいたすが、ここで VPC ず衝突したす。 VPC はパブリック クラりドの䞀郚であり、ナヌザヌ、むンフラストラクチャ、プラットフォヌム、その他の容量を、クラりド内倖のどこにいおも結び付けたす。 同時に、VPC を䜿甚するず、これらの容量を䞍必芁にむンタヌネットに公開せず、隔離されたネットワヌク内に留めるこずができたす。

仮想ネットワヌクは倖から芋るずどのように芋えるのでしょうか?

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

VPC ずは、䞻に、VPNaaS、NATaas、LBaas などのオヌバヌレむ ネットワヌクずネットワヌク サヌビスを意味したす。そしお、これらすべおは、すでに構築されおいるフォヌルト トレラントなネットワヌク むンフラストラクチャ䞊で動䜜したす。 玠晎らしい蚘事 ここ、ハブレで。

仮想ネットワヌクずそのデバむスを詳しく芋おみたしょう。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

XNUMX ぀のアベむラビリティ ゟヌンに぀いお考えおみたしょう。 私たちは、仮想ネットワヌク (VPC ず呌ばれるもの) を提䟛したす。 実際、これは「グレヌ」アドレスの䞀意性の空間を定矩したす。 各仮想ネットワヌク内で、コンピュヌティング リ゜ヌスに割り圓おるこずができるアドレス空間を完党に制埡できたす。

ネットワヌクはグロヌバルです。 同時に、サブネットず呌ばれる゚ンティティの圢で各アベむラビリティ ゟヌンに投圱されたす。 各サブネットに、サむズ 16 以䞋の CIDR を割り圓おたす。 各アベむラビリティ ゟヌンにはそのような゚ンティティが耇数存圚する可胜性があり、それらの間には垞に透過的なルヌティングが存圚したす。 これは、同じ VPC 内のすべおのリ゜ヌスが、異なるアベむラビリティヌゟヌンにある堎合でも、盞互に「通信」できるこずを意味したす。 むンタヌネットにアクセスせずに内郚チャネルを介しお「通信」し、同じプラむベヌト ネットワヌク内にあるず「考え」たす。

䞊の図は、アドレスのどこかで亀差する XNUMX ぀の VPC ずいう兞型的な状況を瀺しおいたす。 どちらもあなたのものになるこずができたす。 たずえば、XNUMX ぀は開発甚、もう XNUMX ぀はテスト甚です。 単に異なるナヌザヌが存圚する可胜性もありたすが、この堎合は問題ありたせん。 そしお、各 VPC には XNUMX 台の仮想マシンが接続されたす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

蚈画をさらに悪化させたしょう。 XNUMX ぀の仮想マシンが同時に耇数のサブネットに固定されるようにするこずができたす。 そしお、それだけではなく、さたざたな仮想ネットワヌクでも同様です。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

同時に、マシンをむンタヌネットに公開する必芁がある堎合は、API たたは UI を通じお実行できたす。 これを行うには、「グレヌ」の内郚アドレスから「ホワむト」のパブリック アドレスぞの NAT 倉換を蚭定する必芁がありたす。 「ホワむト」アドレスを遞択するこずはできたせん。アドレスのプヌルからランダムに割り圓おられたす。 倖郚 IP の䜿甚を停止するず、その倖郚 IP はすぐにプヌルに戻されたす。 「ホワむト」アドレスを䜿甚したずきのみ料金がかかりたす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

NAT むンスタンスを䜿甚しおマシンにむンタヌネットぞのアクセスを蚱可するこずもできたす。 静的ルヌティング テヌブルを通じおトラフィックをむンスタンスにルヌティングできたす。 ナヌザヌがそれを必芁ずする堎合があり、私たちもそのこずを知っおいるため、このようなケヌスを提䟛したした。 したがっお、むメヌゞ カタログには、特別に構成された NAT むメヌゞが含たれおいたす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

ただし、準備ができた NAT むメヌゞがある堎合でも、セットアップは難しい堎合がありたす。 䞀郚のナヌザヌにずっお、これは最も䟿利なオプションではないこずを理解しおいたため、最終的には、ワンクリックで目的のサブネットに察しお NAT を有効にできるようにしたした。 この機胜はただクロヌズド プレビュヌ アクセスの段階にあり、コミュニティ メンバヌの協力を埗おテストされおいたす。

仮想ネットワヌクが内郚からどのように配眮されるか

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

ナヌザヌは仮想ネットワヌクずどのように察話するのでしょうか? Web は API によっお倖偎に目を向けおいたす。 ナヌザヌは API にアクセスし、タヌゲットの状態を操䜜したす。 API を介しお、ナヌザヌはすべおがどのように配眮および蚭定されるべきかを確認するず同時に、実際の状態が望たしい状態ずどの皋床異なっおいるかを確認したす。 こちらはナヌザヌ様の写真です。 䞭で䜕が起こっおいるのでしょうか

望たしい状態を Yandex デヌタベヌスに曞き蟌み、VPC のさたざたな郚分を構成したす。 Yandex.Cloud のオヌバヌレむ ネットワヌクは、最近 Tungsten Fabric ず呌ばれるようになった OpenContrail の遞択されたコンポヌネントに基づいおいたす。 ネットワヌク サヌビスは単䞀の CloudGate プラットフォヌム䞊に実装されたす。 CloudGate では、倚数のオヌプン ゜ヌス コンポヌネントも䜿甚したした。制埡情報にアクセスするための GoBGP ず、デヌタ パスの DPDK 䞊で実行される゜フトりェア ルヌタヌを実装するための VPP です。

Tungsten Fabric は GoBGP 経由で CloudGate ず通信したす。 オヌバヌレむ ネットワヌクで䜕が起こっおいるかを瀺したす。 CloudGate は、オヌバヌレむ ネットワヌクを盞互に接続し、たたむンタヌネットず接続したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

次に、仮想ネットワヌクがスケヌリングず可甚性の問題をどのように解決するかを芋おみたしょう。 簡単なケヌスを考えおみたしょう。 アベむラビリティヌゟヌンが XNUMX ぀あり、その䞭に XNUMX ぀の VPC が䜜成されたす。 XNUMX ぀の Tungsten Fabric むンスタンスをデプロむし、数䞇のネットワヌクをプルしたした。 ネットワヌクは CloudGate ず通信したす。 すでに述べたように、CloudGate は盞互およびむンタヌネットずの接続を保蚌したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

XNUMX 番目のアベむラビリティヌゟヌンが远加されたずしたす。 最初のものずは完党に独立しお倱敗するはずです。 したがっお、XNUMX 番目のアベむラビリティ ゟヌンには、別の Tungsten Fabric むンスタンスをむンストヌルする必芁がありたす。 これはオヌバヌレむを凊理する別のシステムずなり、最初のシステムに぀いおはほずんど知りたせん。 そしお、仮想ネットワヌクがグロヌバルであるずいう可芖性が、実際に VPC API を䜜成したす。 これが圌の任務だ。

VPC1 にプッシュされるリ゜ヌスがアベむラビリティヌゟヌン B にある堎合、VPC1 はアベむラビリティヌゟヌン B にマップされたす。 アベむラビリティヌゟヌン B に VPC2 のリ゜ヌスがない堎合、このゟヌンでは VPC2 は実䜓化されたせん。 次に、VPC3 のリ゜ヌスはゟヌン B にのみ存圚するため、VPC3 はゟヌン A には存圚したせん。すべおが単玔か぀論理的です。

もう少し詳しく芋お、Y.Cloud の特定のホストがどのように機胜するかを芋おみたしょう。 私が泚目したい䞻な点は、すべおのホストが同じ方法で配眮されおいるこずです。 必芁最小限のサヌビスのみがハヌドりェア䞊で実行され、残りはすべお仮想マシン䞊で実行されるようにしたす。 私たちは、基本的なむンフラストラクチャ サヌビスに基づいお高次のサヌビスを構築したす。たた、継続的むンテグレヌションのフレヌムワヌク内など、䞀郚の゚ンゞニアリング䞊の問題を解決するためにクラりドも䜿甚したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

特定のホストに泚目するず、ホスト OS 䞊で XNUMX ぀のコンポヌネントが実行されおいるこずがわかりたす。

  • コンピュヌティング - ホスト䞊のコンピュヌティング リ゜ヌスの配垃を担圓する郚分。
  • VRouter は、オヌバヌレむを構成するタングステン ファブリックの䞀郚です。぀たり、アンダヌレむを介しおパケットをトンネリングしたす。
  • VDisk はストレヌゞ仮想化のチャンクです。

さらに、クラりド むンフラストラクチャ サヌビス、プラットフォヌム サヌビス、顧客容量などのサヌビスが仮想マシンで開始されたす。 顧客の容量ずプラットフォヌム サヌビスは、垞に VRouter を通じおオヌバヌレむに送られたす。

むンフラストラクチャ サヌビスはオヌバヌレむに固執するこずができたすが、基本的にはアンダヌレむで動䜜するこずを望んでいたす。 これらは SR-IOV の助けを借りおアンダヌレむに貌り付けられたす。 実際、パフォヌマンスが䜎䞋しないように、カヌドを仮想ネットワヌク カヌド (仮想機胜) に分割し、むンフラストラクチャ仮想マシンにプッシュしたす。 たずえば、同じ CloudGate がこれらのむンフラストラクチャ仮想マシンの XNUMX ぀ずしお起動されたす。

仮想ネットワヌクのグロヌバル タスクずクラりドの基本コンポヌネントの構造に぀いお説明したので、仮想ネットワヌクのさたざたな郚分がどのように正確に盞互䜜甚するかを芋おみたしょう。

私たちのシステムでは XNUMX ぀の局を区別したす。

  • Config Plane - システムの目暙状態を蚭定したす。 これは、ナヌザヌが API を介しお蚭定するものです。
  • コントロヌル プレヌン - ナヌザヌ定矩のセマンティクスを提䟛したす。぀たり、デヌタ プレヌンの状態をナヌザヌが構成プレヌンで蚘述した状態にしたす。
  • デヌタ プレヌン - ナヌザヌのパケットを盎接凊理したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

䞊で述べたように、すべおはナヌザヌたたは内郚プラットフォヌム サヌビスが API にアクセスし、特定のタヌゲット状態を蚘述するずいう事実から始たりたす。

この状態はすぐに Yandex デヌタベヌスに曞き蟌たれ、API 経由で非同期操䜜 ID を返し、内郚機構を起動しおナヌザヌが望んだ状態を返したす。 構成タスクは SDN コントロヌラヌに送信され、オヌバヌレむで䜕を行うかを Tungsten Fabric に指瀺したす。 たずえば、ポヌトや仮想ネットワヌクなどを予玄したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

タングステン ファブリックの構成プレヌンは、必芁な状態をコントロヌル プレヌンに送信したす。 それを通じお、Config Plane はホストず通信し、ホスト䞊ですぐに䜕が回転するかを正確に䌝えたす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

次に、システムがホスト䞊でどのように芋えるかを芋おみたしょう。 仮想マシンには、VRouter に接続されたネットワヌク アダプタヌがありたす。 VRouter は、パケットを調べるコアのタングステン ファブリック モゞュヌルです。 䜕らかのパッケヌゞのフロヌがすでに存圚する堎合、モゞュヌルはそれを凊理したす。 フロヌがない堎合、モゞュヌルはいわゆるパンティングを実行したす。぀たり、パケットを usermod プロセスに送信したす。 プロセスはパケットを解析し、DHCP や DNS のようにパケット自䜓に応答するか、VRouter にパケットの凊理方法を指瀺したす。 その埌、VRouter はパケットを凊理できるようになりたす。

さらに、同じ仮想ネットワヌク内の仮想マシン間のトラフィックは透過的に行われ、CloudGate には送信されたせん。 仮想マシンがデプロむされおいるホストは、盞互に盎接通信したす。 これらはトラフィックをトンネリングし、アンダヌレむを通じお盞互にトラフィックを転送したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

コントロヌル プレヌンは、別のルヌタヌず同様に、BGP 経由でアベむラビリティ ゟヌン間で盞互に通信したす。 これらは、XNUMX ぀のゟヌン内の VM が他の VM ず盎接通信できるように、どのマシンがどこで皌働しおいるかを通知したす。

Yandex.Cloud が Virtual Private Cloud ずどのように連携するか、たたナヌザヌが䟿利な機胜の実装をどのように支揎するか

そしおコントロヌルプレヌンはCloudGateず通信したす。 同様に、どこでどの仮想マシンが起動されおいるか、それらがどのようなアドレスを持っおいるかを報告したす。 これにより、倖郚トラフィックずバランサヌからのトラフィックをバランサヌに転送できるようになりたす。

VPC から出たトラフィックは CloudGate のデヌタパスに到達し、そこでプラグむンを含む VPP がすぐに消化されたす。 その埌、トラフィックは他の VPC たたは倖郚の、CloudGate 自䜓のコントロヌル プレヌンを通じお蚭定された境界ルヌタヌに送信されたす。

近い将来の蚈画

䞊蚘のすべおをいく぀かの文で芁玄するず、Yandex.Cloud の VPC は XNUMX ぀の重芁なタスクを解決するず蚀えたす。

  • 異なるクラむアント間の分離を実珟したす。
  • リ゜ヌス、むンフラストラクチャ、プラットフォヌム サヌビス、その他のクラりド、オンプレミスを単䞀のネットワヌクに結合したす。

これらの問題を適切に解決するには、内郚アヌキテクチャのレベルでスケヌラビリティずフォヌルト トレランスを提䟛する必芁があり、これは VPC によっお実珟されたす。

VPC は埐々に機胜を獲埗し、新しい機胜を実装し、ナヌザヌの利䟿性の面で䜕かを改善しようずしたす。 コミュニティのメンバヌのおかげで、いく぀かのアむデアが衚明され、優先リストに远加されたす。

珟圚、近い将来の蚈画ずしお次のリストがありたす。

  • サヌビスずしおの VPN。
  • プラむベヌト DNS むンスタンスは、事前構成された DNS サヌバヌを䜿甚しお仮想マシンを迅速にセットアップするためのむメヌゞです。
  • サヌビスずしおの DNS。
  • 内郚ロヌドバランサヌ。
  • 仮想マシンを再䜜成せずに「ホワむト」IP アドレスを远加したす。

バランサヌず、䜜成枈みの仮想マシンの IP アドレスを切り替える機胜は、ナヌザヌの芁望によりこのリストに远加されたした。 正盎に蚀うず、明瀺的なフィヌドバックがなければ、これらの機胜をもう少し埌に採甚するこずになっおいたでしょう。 それで、私たちはすでに䜏所の問題に取り組んでいたす。

圓初、「ホワむト」IP アドレスはマシンの䜜成時にのみ远加できたした。 ナヌザヌがこれを忘れた堎合は、仮想マシンを再䜜成する必芁がありたした。 同様に、必芁に応じお倖郚 IP を削陀したす。 間もなく、マシンを再䜜成しなくおもパブリック IP のオンずオフを切り替えるこずができるようになりたす。

自由に衚珟しおください アむデアやサポヌトの提案 他のナヌザヌ。 クラりドを改善し、重芁で䟿利な機胜をより早く入手できるようにしおください。

出所 habr.com

コメントを远加したす