関連するブログ、参照この一連のオタクの時間-ネットワークプロトコルについての何か
ネットワークプロトコルについての楽しい話-講義24 |インターネットのクラウド:土地を所有するコストは高く、アパートを購入する方が柔軟性があります
前述のように、データセンターには多数の大型マシンが積み重ねられ、ネットワークで接続されています。マシンの数が非常に多くなると、そのような多数のマシンを維持するのは非常に面倒であり、柔軟性に欠ける場所がたくさんあります。
- 購入には柔軟性がありません。顧客がコンピュータを必要とする場合、購入し、棚に置き、ネットワークケーブルを接続し、オペレーティングシステムを単独でインストールする必要があります。サイクルは非常に長いです。一度ご利用になればN年となり、返品はできませんが、取引をしなくてもデータセンター内に残ります。
- 運用と保守には柔軟性がありません。CPU、メモリ、ハードディスクを拡張する必要がある場合、コンピュータルームに移動して手動で取得する必要があり、非常に面倒です。
- 柔軟性のない仕様:購入したマシンは数百ギガバイトのメモリを移動する傾向があり、各アプリケーションには4コアと8Gしか必要ないため、多くのアプリケーションが混在し、さまざまなポートの競合が互いに影響し合う可能性があります。
- 再利用には柔軟性がありません。あるユーザーが使用しないマシンを別のユーザーが使用する場合は、オペレーティングシステムを再インストールする必要があります。元のオペレーティングシステムは大量のデータを残す可能性があるため、非常に面倒です。
物理マシンから仮想マシンへ
これらの問題を解決するために、人々は仮想マシンと呼ばれるものを発明し、それに基づいてクラウドコンピューティング技術を生み出しました。
実際、仮想マシンはパーソナルコンピュータで使用できます。仮想マシンについてわからない場合は、デスクトップ仮想化ソフトウェアをダウンロードして、自分で試してみてください。これにより、CPU数、メモリサイズ、ハードディスクサイズを柔軟に指定でき、複数のネットワークカードを使用して、ラップトップ内に1つ以上の仮想コンピューターを作成できます。使用しない場合は、削除は一切ありません。
データセンターには、同様のオープンソース技術qemu-kvmがあり、巨大な物理マシン内の小さなマシンを取り出すことができます。このソフトウェアセットは、上記の問題を解決できます。1つのポイントを作成でき、1つのポイントを破棄できます。必要なだけ、新しいシステムを作成するたびに。
多くの場合、物理マシンと自分の土地で家を建てるのを比較しますが、仮想マシンはアパートを購入することと同じです。より柔軟で、いつでも売買できます。では、なぜこのソフトウェアはこれらのことを実行できるのでしょうか?
ソフトウェアを使用してハードウェアをシミュレートします。ちょうど今、qemu-kvmがデータセンターで使用されています。名前から、emuはエミュレーター(エミュレーター)を意味し、主にCPU、メモリ、ネットワーク、ハードディスクをシミュレートし、仮想マシンが独立したデバイスを使用しているように感じさせますが、実際に使用されているときは、もちろん物理デバイスです。
たとえば、複数の仮想マシンが物理CPUを順番に使用し、メモリも仮想メモリを使用してマップされます。仮想メモリは最終的に物理メモリにマップされます。ハードディスクは、大きなファイルシステム上にN-Gファイルを作成し、仮想マシンのハードディスクとして機能します。
簡単に例えると、仮想化ソフトウェアは仮想マシンのアプリケーションを「チート」、「チート」するようなものであり、物理マシンからの排他的なリソースを感じます。
仮想ネットワークカードの原理
ネットワークはどのようにアプリケーションを「チート」しますか?仮想マシンのネットワークと物理マシンのネットワークを接続するにはどうすればよいですか?
まず、仮想マシンにはネットワークカードが必要です。qemu-kvmの場合、これはLinuxのTUN / TAPテクノロジーによって実現されます。
仮想マシンは、物理マシン上で実行されるソフトウェアの一部です。このソフトウェアは、他のアプリケーションと同様に、TUN / TAPと呼ばれるChar Dev(キャラクターデバイスファイル)を開くことができます。キャラクターデバイスファイルを開くと、物理マシン上に仮想TAPネットワークカードが表示されます。
「詐欺師」として、仮想化ソフトウェアは仮想マシンのネットワークカードを仮想化して、仮想マシンのアプリケーションが実際にネットワークカードを持っていると感じさせます。したがって、すべてのネットワークパケットがここに送信されます。
もちろん、ネットワークパッケージは仮想化ソフトウェアに送られます。なりキャラクタデバイスを作成し、ネットワークパケットファイルストリームに変換され、同じファイルの書き込みのように、。カーネルのファイルストリームを受信しますTUN / TAPキャラクタデバイスドライバが書き込まれている、仮想ネットワークアダプタTUN / TAPドライバに。このドライバーはファイルストリームを再度ネットワークパケットに変換し、TCP / IPプロトコルスタックに渡します。最終的に仮想TAPネットワークカードから送信され、標準のネットワークパケットになります。
このように、手を交換した後、データは最終的に仮想マシンから仮想マシンの外部に送信されました。
クラウドに接続された仮想ネットワークカード
仮想TAPネットワークカードがあります。次のステップは、このカードが巨大なデータセンターネットワークにどのように接続されているかを確認することです。
接続する前に、クラウドコンピューティングネットワークで注意が必要な点を見てみましょう。
- 共有:各仮想マシンには1つ以上の仮想NICがありますが、物理マシン上にあるNICの数は限られている場合があります。非常に多くの仮想ネットワークカードが同じコンセントを共有するにはどうすればよいですか?
- 分離:2つの側面があります。1つはセキュリティの分離です。2つの仮想マシンが2人のユーザーに属している可能性があります。1人のユーザーのデータが別のユーザーに盗聴されないようにするにはどうすればよいですか?1つはトラフィックの分離です。2つの仮想マシンです。クレイジーな映画があれば、もう1つはオンラインにできません。
- インターワーキング:2つの側面があります。1つは、同じマシン上の2つの仮想マシンが同じユーザーに属している場合、2つはどのように互いに通信するのですか?もう1つは、異なる物理マシン上の2つの仮想マシンが同じユーザーに属している場合、これら2つはどのように相互に通信するのですか?
- 柔軟性:仮想マシンは物理とは異なります。多くの場合、仮想マシンは作成および削除され、あるマシンから別のマシンに移動します。相互運用可能なものとそうでないものがあります。柔軟性は物理ネットワークよりもはるかに優れており、柔軟に構成する必要があります。
共有と相互運用性の問題
これらの問題を一つずつ解決していきます。
まず、物理マシン上に複数の仮想マシンと複数の仮想NICがありますが、これらの仮想NICを相互に接続して外部ネットワークにアクセスするにはどうすればよいですか。
仮想マシンはどのように接続する必要がありますか?
大学の寮で何をしたか覚えていますか?物理マシンが寮で仮想マシンがパーソナルコンピュータであると想像できますが、これらのコンピュータはどのように接続する必要がありますか?**もちろん、スイッチを購入する必要があります。
物理マシン上で、仮想スイッチがあるはず、のLinux上で呼ばれるコマンドがありbrctl、あなたは仮想ブリッジBR0のaddbrのbrctlを作成することができます。作成後、2つの仮想マシンの仮想ネットワークカードを仮想ブリッジbrctl addif br0 tap0に接続して、2つの仮想マシンが同じサブネットセグメントで構成され、2つの仮想マシンが互いに通信できるようにします。
仮想マシンはどのようにインターネットに接続しますか?
これらの仮想マシンはどのようにインターネットに接続しますか?デスクトップ仮想化ソフトウェアでは、次のオプションを確認できます。
ここで、ホストオンリーネットワークは、上記の2つの仮想マシンがbr0仮想ブリッジに接続されているという事実に対応し、仮想マシンが相互にアクセスできる限り、外部にアクセスするシナリオに関係ありません。
外部にアクセスしたい場合、多くの場合2つの方法があります。
橋渡し
1つの方法は、ブリッジングと呼ばれます。デスクトップ仮想化ソフトウェアでネットワークをブリッジすることを選択した場合、次の構造がラップトップで形成されます。
各仮想マシンには仮想ネットワークカードがあり、ラップトップには、実際には仮想スイッチであるネットワークカードがさらにいくつかあります。この仮想スイッチは、仮想マシンを相互に接続します。ブリッジモードでは、物理ネットワークカードもこの仮想スイッチに接続されており、物理ネットワークカードは、デスクトップ仮想化ソフトウェアの[ インターフェイス名]で選択されています。
ブリッジネットワークを使用している場合、仮想マシンにログインしてIPWを見ると、仮想マシンのアドレスがラップトップおよび同僚のコンピューターと同じネットワークセグメント上にあることがわかります。これはなぜですか?これは実際には、物理マシンと仮想マシンを同じネットワークブリッジに配置することと同じであり、ネットワークブリッジに3つのマシンを配置し、すべて同じネットワークセグメントに配置することと同じです。その絵は次のようにわかります。
データセンターでも同様のテクノロジーが採用されていますが、すべてLinuxです。各マシンでブリッジbr0が作成され、仮想マシンのネットワークカードがbr0に接続され、物理ネットワークカードもbr0に接続されます。すべてのbr0物理ネットワークカードを介して物理スイッチに接続されている。
また、このトポロジーを別の角度から見ていきます。同じことがネットワークを結びつけることであり、仮想的な機会とあなたの物理的なネットワークは同じネットワークセグメントを持っています。
このようにして、同じマシンの相互運用性の問題だけでなく、物理マシン間の相互運用性の問題も解決されます。これらはすべてレイヤ2ネットワーク内にあり、同じネットワークセグメントからアクセスできるためです。ただし、規模が大きい場合は問題があります。
覚えていますか?レイヤ2ネットワークでは、最大の問題はブロードキャストです。データセンターにはすでに多くの物理マシンがあり、ブロードキャストはすでに非常に深刻であり、VLANで分割する必要があります。仮想マシンを使用する場合、10台の仮想マシンが物理マシン内に作成され、すべてレイヤー2ネットワーク内にあると想定され、ブロードキャストは非常に深刻になるため、デスクトップ仮想マシンまたはデータセンターが非常に小さい場合を除き、この比較的簡単な方法を使用します。
NAT
別の方法はNATと呼ばれます。デスクトップ仮想化ソフトウェアでNATモードを使用する場合、次のネットワーク構造がラップトップに表示されます。
このように、仮想マシンにログインしてIPアドレスを確認すると、仮想マシンのネットワークが仮想マシンであり、物理マシンのネットワークが物理マシンであることがわかります。仮想マシンが物理マシンにアクセスする場合、アドレスを物理マシンのアドレスにNAT変換する必要があります。
さらに、ラップトップに組み込まれたDHCPサーバーを使用して、ラップトップ上の仮想マシンにIPアドレスを動的に割り当てます。仮想マシンのネットワークは自己完結型であるため、IP管理が必要です。なぜブリッジ法は必要ないのですか?ブリッジがネットワークを平準化したため、仮想マシンのIPアドレスは、物理ネットワークのDHCPサーバーによって割り当てられる必要があります。
データセンターでも同様のアプローチが使用されています。この方法は、寮の状況を実際のマシンに移動するようなものです。
仮想マシンはコンピューターです。ルーターとDHCPサーバーは、ホームルーターまたは寝室のコンピューターに相当します。物理ネットワークカードは、インターネットにアクセスするための寮の外部ネットワークポートに相当します。すべてのコンピューターは、内部ネットワークポートを介してブリッジbr0に接続されています。インターネットにアクセスするには、仮想マシンをbr0を介してルーターに接続する必要があります。ルーターは、NATに物理ネットワークのアドレスになるように要求し、それを物理ネットワークに転送します。
物理マシンにログオンして単純な構成を作成すると、それを簡略化できます。たとえば、仮想マシンが配置されているネットワークのゲートウェイアドレスは、DHCPサーバーを使用せずにbr0で直接構成され、各仮想マシンのIPアドレスを手動で構成し、コマンドをiptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
使用して物理ネットワークカードethXで直接NATを実行しますNATがこのネットワークカードのアドレスになります。設定net.ipv4.ip_forward = 1
により、物理マシンの転送機能が有効になり、別のルーターの代わりにルーターが直接使用されるため、仮想マシンはインターネットに直接アクセスできます。
問題を特定する
相互運用性の問題を解決し、次のステップは分離の問題です。
マシン上の2つの仮想マシンが同じユーザーに属していない場合はどうなりますか?幸いにも、brctlによって作成されたブリッジはVLAN機能もサポートします。2つの仮想マシンのタグを設定できるため、この仮想ブリッジでは2つの仮想マシンは相互運用できません。
しかし、物理マシン間でどのように相互作用し、VLAN分離を実現するのでしょうか
brctlによって作成されたブリッジのタグはブリッジの外部では機能しないため、他の方法を見つける必要があります。
コマンドがありvconfigは、あなたはVLANベースの物理的なネットワークカードと仮想ネットワークカードはeth0を作成することができそうだとすれば、物理マシンと隔離間の相互運用性は、このカードによって達成することができ、すべてのVLANで、すべて離れてこの仮想ネットワークアダプタのパッケージから、。
最初に、各ユーザーに異なるVLANを割り当てます。たとえば、1つのユーザーVLAN 10と1つのユーザーVLAN 20があります。物理マシン上で、物理NICに基づいて、vconfigを使用して、ユーザーごとにVLANを持つNICを作成します。異なるユーザーが異なる仮想ブリッジを使用し、VLANを備えた仮想ネットワークカードも仮想ブリッジに接続されています。
これは2人のユーザーの分離を保証できますか?ブリッジの障害により、異なるユーザーは互いに通信できません。ブリッジが停止すると、VLANが異なるため、パケットは別のブリッジに転送されません。さらに、物理マシンにはVLAN IDが付属しています。
物理スイッチがVLANもサポートしている限り、VLAN IDは別の物理マシンに到着してもそのまま存在し、パケットを同じVLAN NICとブリッジに転送するだけなので、物理マシン間で異なるVLANが互いに通信することはありません。 。
brctlを使用して作成されたブリッジ機能はシンプルで、VLANベースの仮想ネットワークカードもシンプルな分離を実現できます。しかし、これは大規模なクラウドプラットフォームに対応するには十分ではありません。1つはVLANの分離で、数は小さすぎます。以前に学習したように、VLAN IDは4096しかなく、明らかに十分ではありません。もう1つのポイントは、この構成には十分な柔軟性がないということです。相互に通信できる人と通信できない人、トラフィックの分離は達成されておらず、改善の余地がたくさんあります。
まとめ
さて、このセクションはここにあります、要約しましょう:
- クラウドコンピューティングの主要なテクノロジは仮想化ですが、ここでは、仮想ネットワークカードがTUN / TAPキャラクターデバイスを開くことによって仮想マシンの内部と外部を接続するという事実に焦点を当てます。
- クラウド内のネットワークは、共有、分離、インターワーキング、および柔軟性の4つの側面に焦点を当てています。その中には、共有とインターワーキングの2つの一般的な方法、つまりブリッジングとNATがあり、VLANを介して分離を行うことができます。
次に、2つの考えてみよう。
- 直感のために、このセクションでは例としてデスクトップ仮想化システムを使用します。データセンターには、よく知られているオープンソースソフトウェアOpenStackがあります。このセクションのどのネットワーク接続モードがOpenStackのどのモデルに対応していますか?
- このセクションの最後で、このセクションで説明したネットワーク構成方法は柔軟性が低いことについても触れましたが、もっと柔軟な方法を知っていますか?