Neutron環境構築編2016.9.30Tweetはじめに今回は、Keystone、Swift、Glance、Cinder、Novaに続けて、OpenStackのコンポーネントの1つであるNeutronを紹介したいと思います。Neutronは、仮想マシンインスタンスをネットワーク接続するための機能を提供しています。前回までと同様に、手動インストールを通して理解を深めていきましょう。今回のneutronインストールで、仮想マシンインスタンスを起動するために必要なコンポーネントが構築されたことになりますので、実際に仮想マシンを作成するところまで試してみます。サービスを参考にしてインストールを進めていきます。Neutronが使用するVirtualBoxの仮想マシンは、以下のようになります。updateneutronのデータベースを作成し、アクセス権を付与します。パスワード入力を求められるので、今回は全てのパスワードをubuntuと入力します。password:neutronユーザーでログインし、データベースの閲覧が可能であることを確認します。quitByeubuntu@controller:~$管理者用の環境設定ファイルを読み込みます。neutronユーザーを作成します。|+-----------+----------------------------------+neutronユーザーが作成されたか確認しましょう。|+----------------------------------+---------+ユーザーをadminロールに追加します。admin追加されたか確認してみましょう。|+----------------------------------+-------+---------+---------+neutronサービスエンティティーを作成します。|+-------------+----------------------------------+作成されたか確認してみましょう。|+-------------+----------------------------------+neutronサービスポイントを作成します。リージョンは、Keystoneをインストールしたときに設定したリージョン「RegionOne」を指定します。|+--------------+----------------------------------+作成されたか確認してみましょう。|+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+Neutronと必要なパッケージをインストールします。python-neutronclientコントローラノードのNeutronを設定しようneutron.confの設定を行います。/etc/neutron/neutron.conf[DEFAULT]#DEBUGレベルのロギングを有効にする。True#冗長ロギングを有効にする。True#ネットワークサービスのプラグインを設定する。ml2#追加プラグインを設定する。router#認証サービスへのアクセス方法をkeystoneに設定する。keystone#仮想ネットワークにおけるIPアドレスの重複を許す。True#ネットワークトポロジーの変更を通知するよう設定する。True#Novaサービスポイントを設定する。http://controller:8774/v2#使用するAMQPクライアントを設定する。rabbit[keystone_authtoken]#Keystoneサービス用エンドポイントを設定する。http://controller:5000#Keystone管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#KeystoneのプロジェクトドメインIDを設定する。default#KeystoneのユーザードメインIDを設定する。default#Keystoneのプロジェクト名を設定する。service#Keystoneへアクセスするユーザー名を設定する。neutron#Keystoneへアクセスするパスワードを設定する。ubuntu[database]#データベースのアクセス方法を設定する。mysql+pymysql://neutron:ubuntu@controller/neutron[nova]#NeutronがNovaへアクセスする時に必要になるKeystoneに関する情報を設定します。#管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#プロジェクトドメインIDを設定する。default#ユーザードメインIDを設定する。default#プロジェクト名を設定する。service#アクセスするユーザー名を設定する。nova#アクセスするパスワードを設定する。ubuntu#リージョンを設定する。RegionOne[oslo_concurrency]#ロックパスを設定する。/var/lib/neutron/tmp[oslo_messaging_rabbit]#Rabbitサーバーのホスト名を設定する。controller#Rabbitサーバーへアクセスするユーザー名を設定する。openstack#Rabbitサーバーへアクセスするパスワードを設定する。ubuntu次のコマンドを実行して正しく設定を行ったか確認しましょう。ubuntu[qos]ml2_conf.iniの設定を行います。/etc/neutron/plugins/ml2/ml2_conf.ini#タイプドライバを設定する。flat,vlan,vxlan#テナントのネットワークタイプを設定する。vxlan#メカニズムドライバを設定する。linuxbridge,l2population#拡張ドライバーを設定する。port_security[ml2_type_flat]#フラットネットワークを設定する。Identifier)の最小値と最大値を設定する。1:1000[securitygroup]#ipsetを設定する。True次のコマンドを実行して正しく設定を行ったか確認しましょう。Truelinuxbridge_agent.iniの設定を行います。/etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge]#パブリックネットワークに割り当てる物理インターフェースを設定する。public:eth1[vxlan]#VXLANオーバレイネットワークを設定する。True#VXLANのエンドポイントを設定する。10.0.0.101#VXLANフォワーディングテーブルを使用するためのプラグイン設定する。True[agent]#ARPスプーフィングの保護を設定する。True[securitygroup]#ファイアウォールドライバーを設定する。neutron.agent.linux.iptables_firewall.IptablesFirewallDriver#セキュリティグループを設定する。True次のコマンドを実行して正しく設定を行ったか確認しましょう。Truel3_agent.iniの設定を行います。/etc/neutron/l3_agent.ini[DEFAULT]#冗長ロギングを有効にする。True#インターフェースドライバーを設定する。neutron.agent.linux.interface.BridgeInterfaceDriver#外部ブリッジを無効にする。次のコマンドを実行して正しく設定を行ったか確認しましょう。[AGENT]/etc/neutron/dhcp_agent.iniの設定を行います。/etc/neutron/dhcp_agent.ini[DEFAULT]#インタフェースドライバを設定する。neutron.agent.linux.interface.BridgeInterfaceDriver#DHCPドライバを設定する。neutron.agent.linux.dhcp.Dnsmasq#Metadataサーバーを設定する。True#DHCPサーバーで自動的にMTUを設定する。/etc/neutron/dnsmasq-neutron.conf次のコマンドを実行して正しく設定を行ったか確認しましょう。/etc/neutron/dnsmasq-neutron.conf[AGENT]/etc/neutron/dnsmasq-neutron.confの設定を行います。/etc/neutron/dnsmasq-neutron.conf#MTUを1450に設定する。dhcp-option-force=26,1450次のコマンドを実行して正しく設定を行ったか確認しましょう。"^\s*#"dhcp-option-force=26,1450メタデータプロキシ接続用パスフレーズを決めます。10bfc7816152b08c529cc8metadata_agent.iniの設定を行います。/etc/neutron/metadata_agent.ini[DEFAULT]#冗長ロギングを有効にする。True#Keystoneで設定したリージョンを設定する。RegionOne#Keystoneサービス用エンドポイントを設定する。http://controller:5000#Keystone管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#KeystoneのプロジェクトドメインIDを設定する。default#KeystoneのユーザードメインIDを設定する。default#Keystoneのプロジェクト名を設定する。service#Keystoneへアクセスするユーザー名を設定する。neutron#Keystoneへアクセスするパスワードを設定する。ubuntu#Novaメタデータサーバーのホストを設定する。controller#メタデータプロキシ接続用パスフレーズを設定する。bfc7816152b08c529cc8次のコマンドを実行して正しく設定を行ったか確認しましょう。bfc7816152b08c529cc8[AGENT]nova.confの設定を行います。/etc/nova/nova.conf[neutron]#Neutronサービス用エンドポイントを設定する。http://controller:9696#Keystone管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#KeystoneのプロジェクトドメインIDを設定する。default#KeystoneのユーザードメインIDを設定する。default#Keystoneで設定したリージョンを設定する。RegionOne#Keystoneのプロジェクト名を設定する。service#Keystoneへアクセスするユーザー名を設定する。neutron#Keystoneへアクセスするパスワードを設定する。ubuntu#メタデータプロキシを使用するように設定する。True#メタデータプロキシ接続用パスフレーズを設定する。bfc7816152b08c529cc8次のコマンドを実行して正しく設定を行ったか確認しましょう。bfc7816152b08c529cc8データベースを初期化します。OK設定を反映させるため、再起動します。15486エラーが起きていないことをログで確認します。更新されるログをリアルタイムで確認するためにtailfコマンドを使用します。/usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423使用しないデータベースファイルを削除します。dist-upgradeNeutronプラグインのLinuxBridgeエージェントをインストールします。neutron-plugin-linuxbridge-agentコンピュートノードのNeutronを設定しようneutron.confの設定を行います。/etc/neutron/neutron.conf[DEFAULT]#DEBUGレベルのロギングを有効にする。True#冗長ロギングを有効にする。True#ネットワークサービスのプラグインを設定する。ml2#認証サービスへのアクセス方法をkeystoneに設定する。keystone#使用するAMQPクライアントを設定する。rabbit[keystone_authtoken]#Keystoneサービス用エンドポイントを設定する。http://controller:5000#Keystone管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#KeystoneのプロジェクトドメインIDを設定する。default#KeystoneのユーザードメインIDを設定する。default#Keystoneのプロジェクト名を設定する。service#Keystoneへアクセスするユーザー名を設定する。neutron#Keystoneへアクセスするパスワードを設定する。ubuntu[database]#コンピュートノードのneutron.confにはデータベースの指定は不要です。sqlite:////var/lib/neutron/neutron.sqlite[oslo_messaging_rabbit]#Rabbitサーバーのホスト名を設定する。controller#Rabbitサーバーへアクセスするユーザー名を設定する。openstack#Rabbitサーバーへアクセスするパスワードを設定する。ubuntu次のコマンドを実行して正しく設定を行ったか確認しましょう。ubuntu[qos]linuxbridge_agent.iniの設定を行います。/etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge]#テナントネットワークに割り当てる物理インターフェースを設定する。public:eth1[vxlan]#VXLANオーバレイネットワークを設定する。True#VXLANのエンドポイントを設定する。10.0.0.102#VXLANフォワーディングテーブルを使用するためのプラグイン設定する。True[agent]#ARPスプーフィングの保護を設定する。True[securitygroup]#ファイアウォールドライバーを設定する。neutron.agent.linux.iptables_firewall.IptablesFirewallDriver#セキュリティグループを設定する。True次のコマンドを実行して正しく設定を行ったか確認しましょう。Truenova.confの設定を行います。/etc/nova/nova.conf[neutron]#Neutronサービス用エンドポイントを設定する。http://controller:9696#Keystone管理用エンドポイントを設定する。http://controller:35357#パスワード認証に設定する。password#KeystoneのプロジェクトドメインIDを設定する。default#KeystoneのユーザードメインIDを設定する。default#Keystoneで設定したリージョンを設定する。RegionOne#Keystoneのプロジェクト名を設定する。service#Keystoneへアクセスするユーザー名を設定する。neutron#Keystoneへアクセスするパスワードを設定する。ubuntu次のコマンドを実行して正しく設定を行ったか確認しましょう。ubuntu設定を反映させるため、再起動します。32424エラーが起きていないことをログで確認します。更新されるログをリアルタイムで確認するためにtailfコマンドを使用します。/usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423Neutronの動作確認しようNeutronエージェントが正しく認識されており、動作していることを確認します。|+------------+-------+---------------------------+コントローラノードに仮想ネットワークを構築しようコントローラノードにデモ用の環境設定ファイルを作成します。~/demo-openrc.sh#Keysoneのリージョン名を設定する。OS_REGION_NAME=RegionOne#KeystoneのプロジェクトドメインIDを設定する。OS_PROJECT_DOMAIN_ID=default#KeystoneのユーザードメインIDを設定する。OS_USER_DOMAIN_ID=default#Keystoneのプロジェクト名を設定する。OS_PROJECT_NAME=demo#Keystoneのテナント名を設定する。OS_TENANT_NAME=demo#Keystoneへアクセスするユーザー名を設定する。OS_USERNAME=demo#Keystoneへアクセスするパスワードを設定する。OS_PASSWORD=ubuntu#Keystoneのサービス用エンドポイントを設定する。OS_AUTH_URL=http://controller:5000/v3#KeystoneのAPIバージョンを設定する。OS_IDENTITY_API_VERSION=3#GlanceのAPIバージョンを設定する。OS_IMAGE_API_VERSION=2#プロンプトを設定する。'管理者用の環境設定ファイルを読み込みます。仮想マシンインスタンスを接続するための仮想フラットネットワーク(ネイティブVLAN、タグなし)「ext-net」を作成します。この仮想フラットネットワークは、ホストの物理インターフェースに接続します。ホストの物理インターフェースは、ml2_conf.iniファイルの設定でeth1と設定しています。|+---------------------------+--------------------------------------+「ext-net」ネットワークの中にサブネットを作成します。サブネットは10.0.0.0/24を使用し、DHCPは使用せずに10.0.0.200から10.0.0.250までの範囲のIPアドレスを割り当て、デフォルトゲートウェイは10.0.0.1です。|+-------------------+----------------------------------------------+仮想マシンインスタンス管理用ネットワーク「demo-net」を作成します。|+-----------------------+--------------------------------------+「demo-net」ネットワークの中にサブネットを作成します。サブネットは192.168.0.0/24を使用し、デフォルトゲートウェイに192.168.0.1、DNSサーバーに8.8.8.8を割り当てます。デフォルトゲートウェイに割り当てられたインターフェースは存在しない為、仮想マシンインスタンスはインターネット接続できません。|+-------------------+--------------------------------------------------+デモ用の環境設定ファイルを読み込みます。仮想ルーター「demo-router」を作成します。|+-----------------------+--------------------------------------+仮想ルーターは、仮想マシンインスタンスを接続するためのネットワーク「ext-net」に接続します。demo-router.仮想ルーターは、仮想マシンインスタンス管理用ネットワーク「demo-subnet」に接続します。demo-router管理者用の環境設定ファイルを読み込みます。仮想ルーターのポートに割り当てられたIPアドレスを確認します。|+------------------------------------------------------------------------------------+ネットワークの確認のために、仮想マシンインスタンスを接続するためネットワーク「ext-net」のゲートウェイIPアドレスに疎通確認します。ms仮想マシンインスタンスを起動/削除しようデモ用の環境設定ファイルを読み込みます。仮想マシンインスタンスを起動するために必要な情報を集めましょう。フレーバー一覧を確認します。|+-----------+------+起動イメージ一覧を確認します。|+--------------------------------------+--------+ネットワーク一覧を確認します。|+--------------------------------------+----------+仮想マシンインスタンスを起動します。|+--------------------------------------+-----------------------------------------------+仮想マシンインスタンス一覧を確認します。|+--------------------------------------+------+--------+------------+-------------+----------------------+仮想マシンインスタンスを削除します。accepted.仮想マシンインスタンス一覧を確認します。Networks|+--------------------------------------+------+--------+------------+-------------+----------------------++--------------------------------------+------+--------+------------+-------------+----------------------+仮想マシンインスタンスを起動して、削除することができました。インストール中には各ノードの関連サービスでエラーと警告が出ますが、インストール後にはエラーが出ていないことをログで確認します。非常に長いのでコマンドだけの紹介にさせていただきます。/var/log/nova/*仮想マシンインスタンスに疎通確認し、SSH接続しようまず、セキュリティグループにおいてICMPとSSHを許可するようにします。次に、defaultのセキュリティグループを指定して、仮想マシンインスタンスを起動します。SSHキーを作成します。フローティングIPを作成し、仮想マシンインスタンスのポートに割り当てます。最後に、仮想マシンインスタンスに疎通確認して、SSH接続します。セキュリティグループに何があるのか確認してみましょう。|+--------------------------------------+---------+セキュリティグループ「default」があります。セキュリティグループ「default」のルールを一覧表示してみましょう。|+-------------+-----------+---------+----------+--------------+セキュリティグループ「default」は、外部から全てのパケットは破棄します。ICMPのパケットを許可するようにします。|+-------------+-----------+---------+-----------+--------------+SSHのパケットを許可するようにします。|+-------------+-----------+---------+-----------+--------------+再び、セキュリティグループ「default」のルールを一覧表示してみましょう。|+-------------+-----------+---------+-----------+--------------+ICMPのパケットもSSHのパケットも許可されています。adminというSSHキーを作成しましょう。demo-openrc.sh作成されたSSHキーのアクセス権を変更します。demo-openrc.shSSHキーが登録されているか確認してみましょう。Name」で表示されたdefaultのセキュリティグループIDを指定して、仮想マシンインスタンスを起動しましょう。|+--------------------------------------+-----------------------------------------------+仮想マシンインスタンスが起動されたことを確認します。|+--------------------------------------+------+--------+------------+-------------+----------------------+「ext-net」ネットワークのフローティングIPアドレスを作成しましょう。|+---------------------+--------------------------------------+フローティングIPアドレスが作成され、フローティングIPアドレスのIDを確認しましょう。list」コマンドで仮想マシンインスタンスに割り当てられたIDを指定して、仮想マシンインスタンスのポートIDを確認します。|+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+フローティングIPアドレスIDに仮想マシンインスタンスのポートIDを割り当てます。6a20a0e9-f233-4c25-baa5-9d4bdc48fa09フローティングIPアドレスの状態を表示し、管理用IPアドレス、仮想マシンインスタンスのポートID、仮想ルーターIDが割り当てられていることを確認します。|+---------------------+--------------------------------------+仮想マシンインスタンスに疎通確認を行います。ms仮想マシンインスタンスにSSH接続を行います。カレントディレクトリを表示してみましょう。pwd/home/cirros現在動作中のネットワークインターフェースを表示してみよう。B)仮想ルーター「demo-router」に接続できるのか、疎通確認してみましょう。msこれで、構築したネットワークが動作していることが確認できました。仮想マシンインスタンスを停止と起動をしよう仮想マシンインスタンスを一時停止します。vm1仮想マシンインスタンスの状態を確認します。|+--------------------------------------+------+--------+------------+-------------+----------------------------------+仮想マシンインスタンスを一時停止を解除します。vm1仮想マシンインスタンスの状態を確認します。|+--------------------------------------+------+--------+------------+-------------+----------------------------------+仮想マシンインスタンスをハイパーバイザーレベルで休止します。vm1仮想マシンインスタンスの状態を確認します。|+--------------------------------------+------+-----------+------------+-------------+----------------------------------+仮想マシンインスタンスをハイパーバイザーレベルで再開します。vm1仮想マシンインスタンスの状態を確認します。|+--------------------------------------+------+--------+------------+-------------+----------------------------------+おわりにKeystone、Swift、Glance、Cinder、Novaに引き続きNeutronの手動インストールを紹介しました。Neutronを活用することによって仮想マシンインスタンスを起動することができ、OpenStackらしく使用できるようになりました!次回は、Horizonについてご紹介したいと思っています。dist-upgrade」を行うと再起動できないというトラブルがありました。vSwitchを使用することもできます。Neutronは、SDNコントローラであるOpenDaylightと連携することもできます。OpenDaylight(Lithium)との連携に挑戦!)今回も最後までお付き合いを頂き、ありがとうございました。9新年あけましておめでとうございます。3何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~2013.6.12「何」を知っているかではなく、「誰」が知っているか2013.5.28戦後、人間尊重の信念を貫きとおした1人の経営者がいた!2013.5.24健康な心が、健康な会社を作る。2iPhone5発売!LTE普及には切実な背景が...2012.9.12「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。2012.8.17会社を回すのに大事な3つの感覚。7プロジェクトはたいてい失敗に終わるんです。6月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!2012.1.31【第4回】想いを語る夕べ~フォロー編~2012.1.23タニタの社員食堂は"トップの想い"から生まれた!?2012.1.13【第3回】想いを語る夕べ~実施編~2011.12.27オフィスで簡単エクササイズ!2011.12.13【第2回】想いを語る夕べ~準備編~2011.11.24【第1回】想いを語る夕べ~誕生編~2011.11.17「責任感だけで仕事をしていた・・・。