第7回 Neutron

  • OpenStack

最終更新⽇:

掲載⽇:

ICTインフラソリューション部のグエンです。前回は、Glanceについて説明しました。
今回は、NeutronというOpenstackのネットワークを管理するサービスを説明しようと思います。

Neutronとは

Neutronは、他のOpenStackサービスによって管理されるインターフェースデバイスをネットワークに作成し、接続することを可能にします。

プラグインを実装することで、さまざまなネットワーク機器やソフトウェアに対応でき、OpenStackのアーキテクチャと展開に柔軟性を提供します。

Neutronの主要機能

主要機能

説明

ネットワークの抽象化と管理

Neutronは、物理ネットワークを抽象化し、仮想ネットワークを簡単に作成、管理するためのAPIを提供します。これにより、ユーザーは物理ネットワークの詳細を気にすることなく、仮想ネットワークを柔軟に設定できます。

IPアドレスの管理

Neutronは、仮想マシンに自動的にIPアドレスを割り当てるための機能を提供します。これには、DHCPサービスやフローティングIP(Floating IP)の管理が含まれます。

ネットワーク分離とセキュリティ

Neutronは、仮想ネットワーク間のトラフィックを分離し、セキュリティグループを使用してネットワークトラフィックを制御します。これにより、高度なセキュリティとトラフィック管理が可能となります。

プラグインとエージェントのサポート

Neutronは、さまざまなネットワーキング技術やプロバイダーをサポートするために、プラグインとエージェントを使用します。これにより、ネットワーキングの柔軟性と拡張性が確保されます。


nova-networkとNeutronの違い

Openstack-vol0007_img01.png


OpenStack には 2 つのネットワークモデルがあります。nova-networkとNeutronです。

nova-networkは、OpenStackの初期のネットワークコンポーネントで、仮想マシンのネットワーク管理を行うサービスです。nova-networkは nova(Compute プロジェクト)の一部であるサブプロセスとして機能します。

ネットワーク標準化やネットワーク統合を進める際、nova-networkでは対応できない部分が出てくることがあります。そのような場合、Neutronが提供する高度なネットワーク機能を利用することで、解決策を提供することが可能です。nova-networkとNeutronの違いについて、以下の表に示します。

nova-network

Neutron

アーキテクチャ

シンプルなアーキテクチャで、初期のOpenStackリリースから利用されています。ネットワーキング機能はnovaコンポーネントに統合されています。

モジュラーでプラグインベースのアーキテクチャを持ち、様々なネットワーク技術やベンダーソリューションをサポートしています。ネットワークサービスは独立したコンポーネントとして提供され、より高度なネットワーク機能を実現します。

機能

基本的なネットワーク機能(フラットネットワーク、VLANなど)のみを提供し、スケーラビリティや複雑なネットワークトポロジーに対応するのが難しいです。

高度なネットワーク機能(ロードバランシング、ファイアウォール、VPNなど)を提供し、柔軟でスケーラブルなネットワーク構成が可能です。

拡張性とプラグイン

拡張性が限られており、特定のネットワーク技術やベンダーに依存します。

拡張性が高く、プラグインを使用して様々なネットワーク技術(Open vSwitch、Linuxブリッジ、Cisco、VMwareなど)をサポートできます。

将来

開発が停止され、徐々に廃止される予定です。

継続的に開発・改善されており、将来的なOpenStackのネットワーキング標準として推奨されています。

現在は、より高度な機能を持つNeutronに置き換えられ、nova は非推奨となっています。

Neutronのコンポーネント

Neutronサービスには以下の主要なコンポーネントがあります。

●neutron-server:

APIリクエストを受け取り、適切なプラグインにルーティングします。これにより、ネットワークの作成や管理が実行されます。

●OpenStack Networkingプラグインとエージェント:

  ・L2エージェント: コンピュートノード上で動作し、新しいデバイスの接続と配線を管理します。OVS(Open vSwitch)エージェントが一般的に使用されます。
  ・L3 エージェント: ルーターサービスを提供し、異なるネットワーク間のルーティングを処理します。外部ネットワークとの接続(Floating IPsの管理)やSNAT/DNATを実施します。
  ・DHCP エージェント: テナントのネットワークに対してDHCPサービスを提供し、インスタンスに自動的にIPアドレスを割り当てます。

●メッセージングキュー:

多くのOpenStack Networkingインストールで使用され、neutron-serverと各種エージェント間の情報ルーティングに使用されます。また、特定のプラグインのネットワーク状態を保存するデータベースとしても機能します。

●neutron-database:

ネットワーク設定やステータス情報を保存するためのデータベースです。neutron-serverはこのデータベースとやり取りを行い、ネットワークの状態を管理します。

Openstack-vol0007_img02.png


ネットワーク作成例

プライベートネットワークの作成、ルーターの作成、フローティングIPの確保について説明します。Neutronを使用して、ネットワーク、ルーター、フローティングIP、セキュリティグループを作成できます。

★ネットワーク作成

Step 1: 「プロジェクト」 > 「ネットワーク」 > 「ネットワーク」に移動し、「ネットワークの作成」をクリックします。

Openstack-vol0007_img03.png

Step 2: ネットワーク作成

ネットワーク名: これはネットワークの名前です。この例では、ネットワーク名に network1 を設定します。
管理状態有効: これによりネットワークが有効になります。チェックしたままにします。
共有: ネットワークを他のプロジェクトと共有する場合はチェックします。
サブネットの作成: サブネットを作成するために、チェックしたままにします。
アベイラビリティゾーン ヒント: このオプションのデフォルト設定で十分です。

Openstack-vol0007_img04.png

Step 3: サブネット作成

サブネット名: サブネットの名前を指定します。この例ではsubnet1に設定されます。
ネットワークアドレス: CIDR表記でネットワークを選択します。この例では192.168.19.0/24を使用します。
IPバージョン: IPv4/ IPv6
ゲートウェイIP: 任意でこのネットワークのゲートウェイIPを選択します。ゲートウェイIPを入力しない場合、Neutronサービスによって選択されます。

「サブネットの詳細」タブについて、ネットワークとサブネットを作成するためにはこのタブを入力する必要はありません。この手順では、ここで止めますが、このStep ではDHCPの有効化または無効化、特定のIPアドレスの割り当て、DNSネームサーバーの設定、ホストルートの設定が可能です。

Openstack-vol0007_img05.png

Step 4: 作成したネットワークの確認

Openstack-vol0007_img06.png


★ルーター作成

Step 1: 「プロジェクト」 > 「ネットワーク」 > 「ルーター」に移動し、「ルーターの作成」ボタンをクリックします。

Openstack-vol0007_img07.png

Step 2: ルーター作成

ルーター名: ルーターの名前を選択します。この例ではルーターをrouter1に設定されます。
管理状態有効: ルーターを有効にするためにチェックされたままにします。
外部ネットワーク: 外部ネットワークを使用します。
アベイラビリティゾーン ヒント: このオプションのデフォルト設定で十分です。

ルーターは外部ネットワーク、つまりプロバイダーネットワークに接続する必要があります。この手順では、publicという名前のネットワークを使用します。

Openstack-vol0007_img08.png

Step 3: 作成したルーターの確認

Openstack-vol0007_img09.png

Step 4: ルーターをプライベートネットワークに接続する

ネットワークトポロジーで確認すると、router1publicネットワークとnetwork1ネットワークと通信できません。ルーターがpublicnetwork1と通信できるようにするためには、network1を接続する必要があります。ルーターをネットワークに接続することをインターフェースの追加と呼びます。

Openstack-vol0007_img10.png

まず、Horizonの「ネットワーク」 > 「ルーター」を選択します。このルーターにインターフェースを追加するため、ルーターの名前(この例では、router1)をクリックします。

Openstack-vol0007_img11.png

右上にある「インターフェースの追加」ボタンをクリックします。

Openstack-vol0007_img12.png

次の画面で、ルーターに接続するためのサブネットとしてsubnet1を選択し、任意でインターフェースのIPアドレスを指定します。IPアドレスを指定しない場合は、サブネットのゲートウェイIPが使用されます。

Openstack-vol0007_img13.png


Step 5: ネットワーク接続のを確認

インターフェースをルーターに追加すると、publicnetwork1ネットワークが接続されます。

Openstack-vol0007_img14.png

★フローティングIP

OpenStackにおけるフローティングIPは、公開可能なルーティング可能なIPアドレスで、インスタンスにアタッチしたりデタッチしたりすることができます。たとえば、プライベートネットワークに関連付けられたインスタンスがインターネットからアクセスする必要がある場合、フローティングIPをインスタンスに関連付けることで、インターネットからの通信を可能にします。

フローティングIPの確保

「ネットワーク」 > 「Floating IP」 > 「Floating IPの確保」をクリックします。

Openstack-vol0007_img15.png

「Floating IPの確保」画面上で必要な情報を入力します。
Openstack-vol0007_img16.png

IPはpublicネットワークから取得されます。フローティングIPはこのネットワークからのみ確保されます。
IPが追加されると、フローティングIPリストに表示されます。

Openstack-vol0007_img17.png

このフローティングIPアドレスは、将来的にインスタンスへのSSHアクセスに使用されます。具体的には、インスタンスにアクセスできるために、確保したフローティングIPを選択し、「割り当て」ボタンをクリックします。

IPを割り当てるポートに、作成したインスタンスを選択し、「割り当て」ボタンをクリックすると、そのインスタンスにフローティングIPを割り当てます。つまり、そのIPを使用してSSHでインスタンスにアクセスできます。

Openstack-vol0007_img18.png

Neutronの設定に関するCLIでのコマンド

Horizonで設定を行うこともできますが、Neutronの設定はCLIでも可能です。

ネットワークの作成

openstack network create mynet

サブネットの追加(一般的な方法)

openstack subnet pool list //サブネットプールは事前に存在している必要あり


openstack subnet create --subnet-pool <プール> --network mynet mysubnet

サブネットの追加(IPアドレス範囲を制御する方法)

openstack subnet create --subnet-range 10.100.100.0/24 --network mynet mysubnet

ルーターの作成

openstack router create myrouter

ルーターをpublic と新しいネットワークに接続

openstack router set --external-gateway public myrouter


openstack router add subnet myrouter mysubnet

作成されたポートの確認

openstack port list --router myrouter

ポートの詳細

openstack port show <ポートID>

ルーターの詳細

openstack router show myrouter --fit-width

サブネットの詳細

openstack subnet show mysubnet



第7回は以上となります。次回、Cinder、Swiftを説明します。