環境編
Identity編
Image編
Compute編
の続きです。
公式ドキュメントに従ってやっていきます。
途中、プロバイダーネットワークとセルフサービスネットワークのどちらを構築するかの分岐がありますが、単純なプロバイダーネットワークの方をやっていきます。
セルフサービスネットワークはOpenStack内部でさらにネットワーク空間を切り分けられるイメージです。AWSのVPC的な?
OpenStack Networking
OpenStack Networking (neutron) を使うと、他の OpenStack サービスにより管理されているインターフェースデバイスを作成して、ネットワークに接続できます。様々なネットワーク装置やネットワークソフトウェアに対応するプラグインを実装することができ、 OpenStack のアーキテクチャーと環境に柔軟性をもたらします。
OpenStack Networking は、おもに OpenStack Compute を連携して、コンピュートインスタンスにネットワークと接続性を提供します。
- neutronの概念: http://docs.openstack.org/liberty/ja/install-guide-rdo/neutron-concepts.html
- わかりやすい参考記事: http://labs.gree.jp/blog/2015/02/13598/
- (メモ)フラットネットワーク: テナント(ユーザのグループ, プロジェクトとも)の通信を分離するの VLAN もトンネルも使用しない仮想ネットワーク方式。各フラットネットワークは、一般的にブリッジマッピングにより定義される専用の物理インターフェースを必要とする。ただし、フラットネットワークに複数のサブネットを割り当てることはできる。
インストールと設定@コントローラノード
- DB作成 mysqlで以下を実行。 NEUTRON_DBPASSにはroot++
- `create database neutron;`
- `GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';`
- `grant all privileges on neutron.* TO 'neutron'@'%' identified by 'NEUTRON_DBPASS';`
- neutronユーザ作成
-
# openstack user create --domain default --password-prompt neutron
- NEUTRON_PASSとしてroot++を入力
-
- adminロールにneutronユーザを追加
# openstack role add --project service --user neutron admin
- neutronサービスエンティティ作成
-
# openstack service create --name neutron --description "OpenStack Networking" network
- neutronのエンドポイント作成 # openstack endpoint create --region RegionOne network public http://controller:9696
# openstack endpoint create --region RegionOne network internal http://controller:9696
# openstack endpoint create --region RegionOne network admin http://controller:9696
-
コンポーネントのインストール
-
# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset
-
# vim /etc/neutron/neutron.conf
で以下を編集
# データベースへのアクセス方法を定義
[database]
connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron # root++
# ML2プラグインを有効にして,追加プラグインを無効にする
[DEFAULT]
core_plugin = ml2
service_plugins =
# Rabbitメッセージキューの設定
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS # root++
# identifyサービスへの接続
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = NEUTRON_PASS # root++
# 他はコメントアウトする
# Networking が Compute にネットワークトポロジーの変更を通知するよう設定
[DEFAULT]
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controller:8774/v2
[nova]
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS # root++
# ロックパスの設定
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
ML2プラグインの設定
ML2 プラグインは、Linux ブリッジ機構を使用して、インスタンス用の L2 (ブリッジとスイッチ) 仮想ネットワークインフラを構築します
-
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
で以下を編集
[ml2]
# フラットネットワーク,VLANネットワークを有効にする
type_drivers = flat,vlan
# プロジェクト(プライベート)ネットワークを無効にする
tenant_network_types =
# Linuxブリッジ機構を有効にする
mechanism_drivers = linuxbridge
# ポートセキュリティ拡張ドライバーを有効にする
extension_drivers = port_security
# パブリックフラットプロバイダーネットワークを設定
[ml2_type_flat]
flat_networks = public
# ipset を有効にし、セキュリティーグループルールの効率性を向上させます。
[ml2_type_flat]
flat_networks = public
Linuxブリッジエージェントの設定
プライベートネットワーク向けの VXLAN トンネルなどの、インスタンス用の L2 (ブリッジおよびスイッチ) 仮想ネットワークインフラを構築して、セキュリティーグループを処理します。
-
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
で以下を編集
# 仮想パブリックネットワークを物理パブリックネットワークのインタフェースに結びつける
[linux_bridge]
# public:enp0s3とした
physical_interface_mappings = public:PUBLIC_INTERFACE_NAME
# VXLANオーバレイネットワークを無効
[vxlan]
enable_vxlan = False
# ARPスプーフィングの保護を有効
[agent]
prevent_arp_spoofing = True
# セキュリティグループを有効にし、 Linux ブリッジ iptables ファイアウォールドライバーを設定
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
DHCPエージェントの設定
-
# vi /etc/neutron/dhcp_agent.ini
で以下を編集
# Linux ブリッジインターフェースドライバー、Dnsmasq DHCP ドライバーを設定して、 isolated metadata を有効にします。これにより、パブリックネットワークにあるインスタンスがネットワーク経由でメタデータにアクセスできます。
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
メタデータエージェントの設定
メタデータエージェント は、クレデンシャルなどの設定情報をインスタンスに提供する
# vi /etc/neutron/metadata_agent.ini
# アクセスパラメータを設定
[DEFAULT]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_region = RegionOne
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = NEUTRON_PASS # root++
# メタデータホストの設定
[DEFAULT]
nova_metadata_ip = controller
# メタデータプロキシーの共有シークレットを設定します。
[DEFAULT]
metadata_proxy_shared_secret = METADATA_SECRET # meta++
Networkingを利用するためのComputeの設定
# vi /etc/nova/nova.conf
# アクセス用のパラメーターを設定し、メタデータプロキシーを有効にし、シークレットを設定
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS # root++
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET # meta++
シンボリックリンクの作成
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
-
ll /etc/neutron/
してplugin.ini -> /etc/neutron/plugins/ml2/ml2_conf.ini
なっていればおk
DB展開
-
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
- Failed to parse /etc/neutron/neutron.conf: at /etc/neutron/neutron.conf:3, Unexpected continuation line: ' verbose = True'
- とでたのでコメントアウト
- Failed to parse /etc/neutron/neutron.conf: at /etc/neutron/neutron.conf:60, Unexpected continuation line: ' core_plugin = ml2'
- 頭に半角スペース入っていると刺さるっぽい 刺さらないパラメータもあるが,削除しておいた方が身のためか
- 多分↑のverboseも同じ原因
- パラメータ前のスペースを全て消した後再度実行 -> いけた
- Failed to parse /etc/neutron/neutron.conf: at /etc/neutron/neutron.conf:3, Unexpected continuation line: ' verbose = True'
-
Compute API サービスを再実行
# systemctl restart openstack-nova-api
-
起動設定
# systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
# systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
インストールと設定@コンピュートノード
-
コンポーネントのインストール
# yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset
-
# vi /etc/neutron/neutron.conf
# Rabbitメッセージキューの設定
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS # root++
# identifyサービスへの接続
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = NEUTRON_PASS # root++
# 他はコメントアウトする
# ロックパスの設定
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
Linuxブリッジエージェントの設定
-
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
で以下
# 仮想パブリックネットワークを物理パブリックネットワークのインタフェースに結びつける
[linux_bridge]
# public:enp0s3とした
physical_interface_mappings = public:PUBLIC_INTERFACE_NAME
# VXLANオーバレイネットワークを無効
[vxlan]
enable_vxlan = False
# ARPスプーフィングの保護を有効
[agent]
prevent_arp_spoofing = True
# セキュリティグループを有効にし、 Linux ブリッジ iptables ファイアウォールドライバーを設定
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
Networkingを利用するためのComputeの設定
# vim /etc/nova/nova.conf
# neutronアクセス用のパラメーターを設定
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS # root++
- 起動設定
# systemctl enable neutron-linuxbridge-agent
# systemctl start neutron-linuxbridge-agent
確認
- ロード済拡張機能一覧を表示して,neutron-serverプロセスが正しく起動していることを確認する
-
neutron ext-list
- オプション1を選択したのでチュートリアルの例より少ない
-
- neutronエージェントが正常に起動したことを確認するため,エージェント一覧を表示
-
neutron agent-list
- コントローラノードに3つのエージェント,コンピュートノードに1つのエージェントがあることを確認
-
- ここまで終われば,基本的なインスタンスを起動するために必要なコンポーネントがOpenStack環境に追加されたことになります。