基盤の原則
数年前には、仮想化はサーバーの構築方法に革命を示すため、IT で最も構築キーワードとなっていました。仮想化は、新しいアプリケーションのホスティングと構築のための専用の物理サーバーではなく、仮想マシン (Vm) を採用することでした。拡張性、移植性、容量管理、コストなどに直面した場合、Vm は明らかになりつつあります。2つのアプローチの比較結果を探すことができます。
仮想化がキーワードである場合、キーワードはクラウド、SDN、コンテナになります。
現在、Vm とコンテナの間の比較が非常によく議論されており、コンテナがアプリケーションの構築と拡張の新たな方法を約束しています。多くの小規模組織では、コンテナが非常に複雑であったり早過ぎたりしているように考えていますが、これは、Gmail から YouTube までのすべてのものがコンテナで実行され、20億コンテナを週単位で実行するということです。これにより、業界がどこにあるかについて手掛かりを得ることができます。
しかし、コンテナとはどのようなもので、VM に匹敵するのでしょうか。この’Day Oneガイドを比較してみましょう。
コンテナの概要
技術的な観点から見ると、コンテナの概念は Linux におけるネームスペースと Cgroups の概念をルートとしていますが、この用語は seafaring 船で見られる実際の金属貨物輸送用コンテナによってもヒントになります。どちらのコンテナでも、コンテンツの分離、キャリアの独立性の維持、移植性の確保などを実行できます。
コンテナは、論理的なパッケージメカニズムです。コンテナーは軽量な仮想化と考えることができますが、それは、Figure 1に示すように、os 全体を複製する必要性を排除する、異なるコンテキストで、アプリケーションとその依存関係を実行します。このようにすることで、アプリケーションは、個別に開発およびテストでき、従来の VM よりもはるかに迅速に実装および拡張できる軽量パッケージに限定されます。開発者は、この軽量ソフトウェアを構築して構成するだけで、アプリケーションの管理やサポートを必要としなくても、OS のアプリケーションを簡単に使用できるようにすることができます。

多くの開発者は、コンテナのハイパーバイザーとして、図1.1 のようなコンテナーランタイムを呼び出すことがあります。この用語は技術的には正しいものではありませんが、階層を可視化する場合に役立ちます。
多くの VM テクノロジと同様に、最も一般的なハイパーバイザーは KVM および VMware ESX/ESXi です。コンテナ技術において、docker と Rkt は最も一般的なものであり、Docker は最も広く導入されています。Vm’とコンテナを比較して、有用な数字を確認してみましょう。
Juniper vSRX と cSRX
Redis、Ngnix、Mongo、MySQL、WordPress、Jenkins、Kibana、Perl など、現在最も一般的なアプリケーションはコンテナ化され、 https://hub.docker.comにパブリックに提供されているため、開発者はアプリケーションを迅速に構築してテストできます。
コンテナと VM の実行中に、特定のアプリケーションのパフォーマンスとスケーリングを比較する、利用可能なテストが多数あります。滞在は、すべてのアプリケーションをコンテナで実行するメリットについて比較していますが、ファイアウォール、NAT、ルーティングなど、ネットワーク機能の仮想データ (NFV) についてはどうでしょうか。
VM ベースの NFV に関しては、ほとんどのネットワークベンダーが、標準の x86 ハードウェアのハイパーバイザで実行可能な、ハードウェア機器の仮想化されたフレーバーを既に実装しています。Junos、vSRX は、仮想化された筐体のジュニパーネットワークス SRX シリーズサービスゲートウェイであり、コンテナベースの NFV と同様に、物理 SRX に使用できるものと同様のネットワーク機能とセキュリティを提供します。’新しいトレンドが挙げられます。Juniper cSRX は、コンパクト’なフットプリントを備えた業界初のコンテナ化されたファイアウォールであり、仮想環境とクラウド向けの高密度ファイアウォールに対応します。Table 1は vSRX と cSRX の比較を示しており、cSRX が、その概念を理解できるようになっています。
Table 1: vSRX と cSRX
vSRX | cSRX | |
使用事例 | 統合型ルーティング、セキュリティ、NAT、VPN、ハイパフォーマンス | L4 ~ L7 セキュリティ、低フットプリント |
メモリ要件 | 4GB 以上 | Mb 単位で |
NAT | あり | あり |
IPSec VPN | あり | なし |
起動時間 | ~ 数分 | < 1 秒 |
画像のサイズ | Gb 単位で | Mb 単位で |
マイクロサービス手法を使用すると、アプリケーションを小規模なサービスに分割し、各部分 (このケースではコンテナ) で特定のジョブを実行することができます。
Docker について
すでに説明したように、コンテナを使用することで、開発者は、必要なすべてのパーツ (ライブラリやその他の依存関係など) をアプリケーションにパッケージ化し、それらすべてを1つのパッケージとして出荷できます。Docker は、コンテナの作成、導入、および実行を容易にするソフトウェアです。
開始点は、Docker イメージファイルのソースコードであり、そこからは、最も一般的な Docker ハブ––であるレジストリに格納して配布するイメージを作成し、このイメージを使用してコンテナを実行することができます。
Docker は、Figure 2に示すクライアント/サーバーアーキテクチャを使用しています。Docker クライアントとデーモンは同じシステムで実行することも、Docker クライアントをリモートの Docker デーモンに接続することもできます。Docker デーモンは、Docker コンテナの構築、運用、配布の大きな取り組みを実行しています。Docker クライアントとデーモンは、UNIX ソケットまたはネットワークインターフェイスを介して、REST API を使用して通信を行います。

’コンテナは真空ではありません。実稼働環境では’、複数のコンテナを持つ1台のホストを保有していますが、何千ものコンテナを実行する複数のホストが存在することで、2つの重要な疑問が発生します。
これらのコンテナは、どのようにして同じホストまたは異なるホストで相互に通信しますか? (基本的には、コンテナのネットワーク構成要素です)。
どのコンテナーがどのホストで起動されるかを誰が判断するか。何に基づいていますか? ブレード? アプリケーション当たりのコンテナ数基本的に、それを指揮しているのでしょうか。
この2つの質問については、本書の残りの部分で詳しく説明されていますが、簡単な回答が必要な場合は Juniper Contrail と Kubernetes を考えてみてください。
Juniper’Contrail プラットフォームの基本的な基盤から始めましょう。
Contrail プラットフォームの概要
Juniper Contrail プラットフォームは、あらゆるクラウド、ワークロード、あらゆる導入において、単一のユーザーインターフェイスから動的なエンドツーエンドのネットワーク、ネットワークポリシー、制御を提供します。本書では、Kubernetes によってオーケストレーションされたセキュアコンテナネットワークを構築していますが、コンテナ、Vm、およびベアメタルサーバーを統合した仮想ネットワークを構築する Contrail できます。
仮想ネットワークは、Contrail システムの重要な概念です。仮想ネットワークは、物理ネットワーク上に実装された論理構造です。これらは、VLAN ベースの分離を置き換えるために使用され、仮想化されたデータセンターでマルチテナントを提供します。各テナントまたはアプリケーションは、1つ以上の仮想ネットワークを持つことができます。各仮想ネットワークは、ネットワークポリシーによって明示的に許可されない限り、他のすべての仮想ネットワークから分離されています。ゲートウェイを使用すると、仮想ネットワークを物理ネットワークに拡張できます。最後に、仮想ネットワークを使用して–、サービス連鎖を構築します。
Figure 3に示すように、ネットワーク運用担当者はネットワークの論理抽象化を処理するだけで、ポリシーの作成、ルートの交換、物理的なトポロジーに対するトンネルの構築などを含む大きな揚力が Contrail されます。

Contrail アーキテクチャの基礎
Contrail は、2つの主要コンポーネント、Contrail コントローラ、Contrail vRouter を使用して、論理的に集中管理された物理的に分散したモデルで動作します。コントローラは、vRouter の管理と設定、分析の収集と提示を行うコントロールおよび管理プレーンです。Contrail vRouter は、レイヤー2およびレイヤー3サービス、分散型ファイアウォール機能を提供し、仮想ネットワーク間でのポリシーの実装を可能にする、転送プレーンです。
Contrail は、OpenStack、VMware、Kubernetes、Openstack、またはその他の Os など、多くのオーケストレーションと統合されています。複数のプロトコルを使用して、これらのオーケストレーションに SDN を提供します。Figure 4に示すように、拡張可能なメッセージングとプレゼンスプロトコル (xmpp) は、RFC 6120 で定義されたリアルタイム通信用のオープン XML テクノロジです。Contrail では、XMPP が2つの主な機能を提供しています。ルーティング情報の分散と構成のプッシュは、IBGP が何を MPLS Vpn モデルにも、さらにデバイス管理の NETCONF と同様になります。

Figure 4は、以下の特長も示しています。
BGP は物理ルーターとルートを交換するために使用されます。また Contrail デバイスマネージャーは、NETCONF を使用してこのゲートウェイを構成できます。
イーサネット VPN (EVPN) は、標準ベースのテクノロジである RFC 7432 であり、IP ネットワークを介して、異なるレイヤー2ドメイン間の仮想マルチポイントブリッジ接続を提供します。Contrail コントローラは、EVPN ルートを TOR スイッチと交換し (レイヤー 2 VXLAN ゲートウェイとして機能します)、アクティブ/アクティブな VXLAN 転送により高速な回復を提供します。
MPLSoGRE、MPLSoUDP、または VXLAN は、IP ネットワーク上でトラフィックを伝送するための3つの異なる種類のオーバーレイトンネルです。これらはすべて IP パケットです VXLAN VXLAN が、MPLSoGRE と MPLSoUDP では、セグメント化に MPLS ラベルの値を使用してセグメンテーションすることができます。
Contrail vRouter 間の関係を簡素化するために、Contrail コントローラと IP ファブリックは、考えられるアーキテクチャから MPLS VPN モデルと比較します。’ただし、任意のサービスプロバイダ s VROUTER は PE ルーターとして、VM/コンテナは CE に似ていますが、vRouter は Contrail コントローラのツールであり、ベアメタルサーバーに関しては、ラックの上面が PE です。
このDay Oneガイドでは、「コンピュートノード」と「ホストとの区別」を使用しています。どちらも、このエンティティーは、コンピューティングノードをホストするために必要なコンテナをホストしていることを意味します。このホストは DC の物理サーバーでも、データセンターまたはパブリッククラウド内の VM の仮想マシンのものだったりする可能性があります。
Contrail vRouter
Contrail vRouter は、Figure 5に示すような、コンピューティングノード/ホスト上の Contrail のコンポーネントで構成されています。デフォルトの Docker 設定でコンピューティングノードを使用する場合、同じホスト上のコンテナは相互に通信し、さらには、Docker ブリッジを使用して他のホストでホストされている他のコンテナやサービスにも接続します。Contrail ネットワークでは、各計算ノードで vRouter によって、仮想ネットワークごとに VRF テーブルが作成されます。これにより、機能の長いリストを提供します。
制御プレーンの視点から見ると、Contrail vRouter:
低レベルの構成 (ルーティングインスタンスと転送ポリシー) を受信します。
ルートを交換します。
転送プレーンに転送状態をインストールします。
分析 (ログ、統計、イベント) をレポートします。
データプレーンの見込みからは、Contrail vRouter を採用しています。
オーバーレイネットワークから受信したパケットを、MPLS ラベルまたは仮想ネットワーク識別子 (VNI) に基づいてルーティングインスタンスに割り当てます。
DHCP、ARP、および DNS をプロキシにします。
新しいフローの最初のパケットに転送ポリシーを適用してから、転送プレーンのフローテーブルのフローエントリにアクションをプログラムします。
パケットを転送する宛先アドレスのルックアップ (IP または MAC) の後、オーバーレイネットワークとの間で送信または decapsulating のパケットを送受信するカプセル化/FIB を実行した後、packetst を転送します。
