Nutanixクラスタ内にContrail SDNコントローラーを展開する

  • 11 August 2020
  • 0 replies
  • 471 views

Userlevel 3

本記事はNutanixのEnterprise ArchitectのAmin Aflatoonian氏によって2020年7月30日にNEXTコミュニティに投稿された記事の翻訳版です。

原文はこちら

以前の記事の中で、AHVクラスタへのContrail統合のアーキテクチャ上の概要をお伝えしました。今回の記事ではこのコントローラーの展開について詳細にお話していきます。

仮想マシンネットワークと仮想マシン作成の詳細についてはこの次の記事でお話します。

 

展開

Contrail on AHVの展開についてご説明するために、我々は3ノードのNutanixクラスタ環境で構成されているラボを利用します。ラボのアーキテクチャについては以下の図に示します。

Contrail AHV ラボ アーキテクチャ

ContrailのコントローラーのHAは必要ないので、1台のContrailコントローラー仮想マシンと3台のvRouter仮想マシンのみを展開します(各々のノードに1台のvRouter)。

Contrailの展開にはAnsibleを利用しました。このラボ上にAnsible deployer仮想マシン(Contrail deployerと呼びます)も作成し、これで展開ライフサイクルを管理します。このためにNutanixクラスタ上にprovisioningネットワークを作成し、このネットワークにすべてのContrail仮想マシン(コントローラーとvRouter)を接続します。以下の図はラボのネットワーク構成を顕したものです。

Contrail AHV ラボ - ネットワーク構成

ラボの準備

以下のテーブルはContrail仮想マシンの展開に資料したこのラボのネットワーク構成を顕しています。

ラボのネットワーク構成

オーバーレイブリッジとvRouterオーバーレイネットワーク

Contrail仮想マシンを展開する前に、すべてのNutanixノード上にオーバーレイブリッジ(brOvly)を作成します。このブリッジは隔離されており、物理NICや他のOVSブリッジとは一切接続されていません。このブリッジを作成するためにはCVMからallsshコマンドを利用することが出来ます。

オーバーレイブリッジを作成した後には、vRouter仮想マシンとこのブリッジを接続するオーバーレイネットワークを作成します。このブリッジを作成するためにはNutanix Acropolis CLI (acli)を利用しました。

ネットワークの展開

Contrail deployer、コントローラー、そしてvRouter仮想マシンはすべてprovisioningネットワークに接続されています。このネットワークはContrail DeployerがすべてのContrailノードに必要なパッケージをインストールするために特化して利用されます。我々のラボ内ではこのネットワークはacliを利用してVLAN ID 54で作成しました。

内部ネットワーク

Contrailノード(コントローラーとvRouter)間のデータとコントロールのための通信は内部ネットワークを通じて行われます。それぞれのContrail仮想マシンはこのネットワークに接続されています。

Contrail仮想マシン

すべての必要なブリッジとネットワークが作成できれば、Contrail仮想マシンの作成を始めることが出来ます。展開を始める前にContrail仮想マシンを作成しなければなりません。これらの仮想マシンはCentOS 7 OSをベースとしています。以下のテーブルでは我々が展開で利用するすべての仮想マシンとそのリソース、そのホストアフィニティルール(もしあれば)、そしてそのカーネルのヴァージョンをまとめたものです。

Contrail 仮想マシンのリソース構成

これらの仮想マシンはNutanix Prism Central (PC)経由で展開されます。シンプルさのため、それぞれの仮想マシンの作成の詳細については割愛します。

以下のテーブルはそれぞれのContrail仮想マシンインターフェイスのIPアドレスです。

Contrail 仮想マシンのネットワーク構成

Contrailの展開

Contrailの展開プロセス全体はContrail deployer仮想マシン内で行われます。以前に述べたとおり、展開はAnsibleで行われます。更に進む前に、この仮想マシンに3つのパッケージ : ansible, python-pip, requestsをインストールしなければなりません。

それから、Juniperのgithubから必要なすべてのAnsible playbookをクローンします。

最後に、instances.yamlファイルをカスタマイズします。以下は我々が展開に利用したinstancesファイルです。コンテナレジストリのユーザー名とパスワードをJuniper Networksから入手する必要があることに注意してください。

instancesファイルのカスタマイズが終わったら、Ansibleを利用してインスタンスを構成します。

その次に、Contrailを展開します。

Contrailの展開後

展開がうまく行ったら、Nutanixクラスタ上のvRouterをそれぞれのvRouterのgateway modeを有効にしてアクティベートします。

これを行うためにはそれぞれのvRouter仮想マシン上でContrail vRouterエージェントコンテナのentrypoint.shの[DEFAULT]セクションに”gateway_mode==server”を追加し、コンテナを再起動します。

vRouterが起動して、適切に動作していることを確認してください。

次のステップでは、3つのvRouterをContrailコントローラーに追加し、コントローラーとvRouter間の接続を確立します。これらのステップはContrail UIから行います。

ContrailのUI > Configure > Physical Devices > Physical Routers、 “+ Add”ドロップダウンメニューをクリックして、vCPE Routerを選択します。

ポップアップウィンドウ内で、vRouterのホスト名(vRouter仮想マシンでhostnameコマンドを実行して収集)と内部IPアドレスを追加します。

それからvRouterに物理インターフェイスを追加します。Configure > Physical Devices > InterfacesからvRouter名を選択し、新たなインターフェイスを追加します(+ ボタン)。新しいインターフェイスのTypeはPhysicalで、Nameはeth1です。また接続するインターインターフェイスもeth1です。

これを2つのステップ繰り返して、すべてのvRouterにContrailコントローラーを追加します。

 

3つすべてのvRouterがリストに追加されたら、Monitor > Infrastructure > Control Nodes > contrail_control > Peersから、vRouterとContrailコントローラーの間の接続が確立しているのを確認することが出来ます。

この記事ではNutanixクラスタ上にどうやってContrailを展開するのかを解説してきました。今回の例はラボ環境をベースとしており、今回ラボ環境での仮想マシンのサイズはデモを行うためのものです。こうした環境を本番環境に向けて利用したい場合にはContrail仮想マシンのサイジングをクラスタのキャパシティとJuniper Networksの推奨事項に照らして確認してください。

© 2020 Nutanix, Inc. All rights reserved. Nutanix, the Nutanix logo and the other Nutanix products and features mentioned on this post are registered trademarks or trademarks of Nutanix, Inc. in the United States and other countries. All other brand names mentioned on this post are for identification purposes only and may be the trademarks of their respective holder(s). This post may contain links to external websites that are not part of Nutanix.com. Nutanix does not control these sites and disclaims all responsibility for the content or accuracy of any external site. Our decision to link to an external site should not be considered an endorsement of any content on such a site.

This post may contain express and implied forward-looking statements, which are not historical facts and are instead based on our current expectations, estimates and beliefs. The accuracy of such statements involves risks and uncertainties and depends upon future events, including those that may be beyond our control, and actual results may differ materially and adversely from those anticipated or implied by such statements. Any forward-looking statements included in this post speak only as of the date hereof and, except as required by law, we assume no obligation to update or otherwise revise any of such forward-looking statements to reflect subsequent events or circumstances.


This topic has been closed for comments