OpenStack Ussuri マニュアルインストールその6―Neutron 編
- Neutron はネットワークを管理する
- 複雑なネットワークを作りたいときは Open vSwitch プラグインを使うようだがドキュメントがあまり整っていない印象…
- DevStack は Open vSwitch 使ってるみたいだった
- 今回はドキュメントに載っている Linux Bridge ベースで構築する
- ネットワークオプションが 2 種類ある
- プロバイダネットワークオンリー
- プロバイダネットワーク+セルフサービスネットワーク
- プロバイダネットワークは NIC から引き込んでくるネットワーク
- セルフサービスネットワークは NAT 越し(?)の内部ネットワーク
- いろいろな機能を使いたかったらオプション 2 を選ぶべきということでオプション 2 で構築する
コントローラノード
OpenStack Docs: Install and configure controller node
Controller
- コントローラノードには Neutron サーバやプラグイン、エージェントが一通り入る
- ネットワークノードを分離する場合はコントローラノードには Neutron サーバやプラグインだけ入れることになると思うが分離の詳しい方法はわからないので調べてください
前提条件
OpenStack Docs: Install and configure controller node - Prerequisites
Neutron をインストールする前にデータベースを作成する必要がある
root user
mysql
# 以下は`MariaDB [(none)]>`のプロンプトに入力する 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';
-
Caution
NEUTRON_DBPASS
は適切なパスワードに書き換える neutron
データベースの作成とアクセス権限の付与- ドキュメントでは一般ユーザで
mysql -u root -p
と書いてあるが、他のサービスのインストール手順と同じく root ユーザでmysql
に変える
-
Caution
admin
環境スクリプトの読み込みany user
. admin-openrc
サービス資格情報
neutron
ユーザ作成any user
openstack user create --domain default --password-prompt neutron # 対話形式のパスワードプロンプトがでる User Password: Repeat User Password:
+---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | fdb0f541e28141719b6a43c8944bf1fb | | name | neutron | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+
-
パスワードプロンプトでは Caution
NEUTRON_PASS
を入力
-
パスワードプロンプトでは Caution
service
プロジェクト、neutron
ユーザにadmin
の役割を割り当てるany user
openstack role add --project service --user neutron admin
network
サービス (name: neutron
) を作成any user
openstack service create --name neutron --description "OpenStack Networking" network
+-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Networking | | enabled | True | | id | f71529314dab4a4d8eca427e701d209e | | name | neutron | | type | network | +-------------+----------------------------------+
network
サービスに API エンドポイント作成any user
openstack endpoint create --region RegionOne network public http://controller:9696
+--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 85d80a6d02fc4b7683f611d7fc1493a3 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+
any user
openstack endpoint create --region RegionOne network internal http://controller:9696
+--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 09753b537ac74422a68d2d791cf3714f | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+
any user
openstack endpoint create --region RegionOne network admin http://controller:9696
+--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 1ee14289c9374dffb5db92a5c112fc4e | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+
public
、internal
、admin
にそれぞれ作成
Neutron インストール
パッケージインストール
OpenStack Docs: Networking Option 2: Self-service networks - Install the components
root user
apt install \ neutron-server \ neutron-plugin-ml2 \ neutron-linuxbridge-agent \ neutron-l3-agent \ neutron-dhcp-agent \ neutron-metadata-agent
/etc/neutron/neutron.conf
編集(サーバの設定)OpenStack Docs: Networking Option 2: Self-service networks - Configure the server component
[DEFAULT] # ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = true # `RABBIT_PASS`は適切なパスワードに書き換える transport_url = rabbit://openstack:RABBIT_PASS@controller # `keystone`を利用することを指定 auth_strategy = keystone # ネットワークの変更をNovaに通知するための設定 notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true # ... [database] # 他のオプションはすべて削除またはコメントアウトする # `NEUTRON_DBPASS`は適切なパスワードに書き換える connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron [keystone_authtoken] # 他のオプションはすべて削除またはコメントアウトする # `NEUTRON_PASS`は適切なパスワードに書き換える www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS [nova] # 他のオプションはすべて削除またはコメントアウトする # `NOVA_PASS`は適切なパスワードに書き換える auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = NOVA_PASS [oslo_concurrency] # ... lock_path = /var/lib/neutron/tmp # ...
-
Caution
RABBIT_PASS
は適切なパスワードに書き換える -
Caution
NEUTRON_DBPASS
は適切なパスワードに書き換える -
Caution
NEUTRON_PASS
は適切なパスワードに書き換える -
Caution
NOVA_DBPASS
は適切なパスワードに書き換える
-
Caution
/etc/neutron/plugins/ml2/ml2_conf.ini
編集(L2 モジュールの設定)# ... [ml2] # ... # flat, VLAN, VXLANネットワークを有効化 type_drivers = flat,vlan,vxlan # セルフサービスネットワーク上でVXLANを有効化 tenant_network_types = vxlan # Linux BridgeとL2 Populationを有効化 mechanism_drivers = linuxbridge,l2population # ポートセキュリティの拡張ドライバを有効化 extension_drivers = port_security [ml2_type_flat] # ... # flatネットワークとしてプロバイダネットワークを指定する # (vlanネットワークを使う場合はここはコメントアウトする) # 複数NICがある場合は以下のようにカンマで列挙する # ex) flat_networks = provider1,provider2,... flat_networks = provider [ml2_type_vlan] # ... # vlanネットワークとしてプロバイダネットワークを指定する # (flatネットワークを使う場合はここはコメントアウトする) # 複数NICがある場合は以下のようにカンマで列挙する # ex) network_vlan_ranges = provider1:<start Vlan ID>:<end Vlan ID>,provider2:<start Vlan ID>:<end Vlan ID>,... # `:<start Vlan ID>:<end Vlan ID>`の部分を書かないと任意のVlan IDを引き込める # network_vlan_ranges = provider [ml2_type_vxlan] # ... # セルフサービスネットワーク上のVXLANの範囲 vni_ranges = 1:1000 [securitygroup] # ... # ipsetを有効化(セキュリティグループルールの効率を高めるためらしい) enable_ipset = true # ...
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
編集(Linux Bridge エージェントの設定)OpenStack Docs: Networking Option 2: Self-service networks - Configure the Linux bridge agent
# ... [linux_bridge] # `/etc/neutron/plugins/ml2/ml2_conf.ini`の[ml2_type_flat]または[ml2_type_vlan]で書いたもので記述する # `PROVIDER_INTERFACE_NAME`はプロバイダネットワークのインターフェース名に書き換える(ethxxとか、ensxxみたいな感じ) # 複数ある場合は以下のようにカンマで列挙する # ex) physical_interface_mappings = provider1:PROVIDER_INTERFACE_NAME1,provider2:PROVIDER_INTERFACE_NAME2,... physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME [vxlan] # ex) local_ip = 192.168.0.11 enable_vxlan = true local_ip = CONTROLLER_MANAGEMENT_IP l2_population = true [securitygroup] # ... enable_security_group = true # Linux Bridgeでセキュリティグループを有効化するにはiptablesのfirewallドライバを使用するらしい firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver # ...
コントローラノードがネットワークブリッジフィルターが有効になっているか確認する
root user
sysctl -a | grep net.bridge.bridge-nf-call-ip
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 ...
- これらの値が
1
なら OK - 有効になってない場合は
br_netfilter
カーネルモジュールをロードすればよいらしい
- これらの値が
/etc/neutron/l3_agent.ini
編集(L3 エージェントの設定)OpenStack Docs: Networking Option 2: Self-service networks - Configure the layer-3 agent
[DEFAULT] # ... # インターフェースドライバにLinux Bridgeを設定 interface_driver = linuxbridge # ...
/etc/neutron/dhcp_agent.ini
編集(DHCP エージェントの設定)OpenStack Docs: Networking Option 2: Self-service networks - Configure the DHCP agent
[DEFAULT] # ... # インターフェースドライバにLinux Bridgeを設定 interface_driver = linuxbridge # DHCPドライバにDNSMASQを設定 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq # ネットワーク上のメタデータにアクセスできるように設定(?) enable_isolated_metadata = true # ...
/etc/neutron/metadata_agent.ini
編集(メタデータエージェントの設定)OpenStack Docs: Install and configure controller node - Configure the metadata agent
[DEFAULT] # ... # `METADATA_SECRET`は適切なパスワードに書き換える nova_metadata_host = controller metadata_proxy_shared_secret = METADATA_SECRET # ...
-
Caution
METADATA_SECRET
は適切なパスワードに書き換える
-
Caution
/etc/nova/nova.conf
編集(Nova で Neutron ネットワークを使用するための設定)- Nova インストール時に設定済み
Neutron データベース同期
OpenStack Docs: Install and configure controller node - Finalize installation
root user
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
コントローラノードのサービス再起動
OpenStack Docs: Install and configure controller node - Finalize installation
root user
systemctl restart nova-api
systemctl restart neutron-server
systemctl restart neutron-linuxbridge-agent
systemctl restart neutron-dhcp-agent
systemctl restart neutron-metadata-agent
systemctl restart neutron-l3-agent
コンピュートノード
OpenStack Docs: Install and configure compute node
Compute
- コンピュートノードには原則エージェントのみが入る
- インスタンスのネットワーク接続やセキュリティグループの適応などを担う
Neutron エージェントインストール
パッケージインストール
OpenStack Docs: Install and configure compute node - Install the components
root user
apt install neutron-linuxbridge-agent
/etc/neutron/neutron.conf
編集(サーバの設定)OpenStack Docs: Install and configure compute node - Configure the common component
[DEFAULT] # ... # `RABBIT_PASS`は適切なパスワードに書き換える transport_url = rabbit://openstack:RABBIT_PASS@controller # `keystone`を利用することを指定 auth_strategy = keystone # ... [database] # ... # コンピュートノードからデータベースに直接アクセスしないのでコメントアウトする # connection = ... [keystone_authtoken] # 他のオプションはすべて削除またはコメントアウトする # `NEUTRON_PASS`は適切なパスワードに書き換える www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS [oslo_concurrency] # ... lock_path = /var/lib/neutron/tmp # ...
-
Caution
RABBIT_PASS
は適切なパスワードに書き換える -
Caution
NEUTRON_PASS
は適切なパスワードに書き換える
-
Caution
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
編集(Linux Bridge エージェントの設定)OpenStack Docs: Networking Option 2: Self-service networks - Configure the Linux bridge agent
# ... [linux_bridge] # コントローラノードの`/etc/neutron/plugins/ml2/ml2_conf.ini`の[ml2_type_flat]または[ml2_type_vlan]で書いたもので記述する # `PROVIDER_INTERFACE_NAME`はプロバイダネットワークのインターフェース名に書き換える(ethxxとか、ensxxみたいな感じ) # 複数ある場合は以下のようにカンマで列挙する # ex) physical_interface_mappings = provider1:PROVIDER_INTERFACE_NAME1,provider2:PROVIDER_INTERFACE_NAME2,... physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME [vxlan] # ex) local_ip = 192.168.0.12 enable_vxlan = true local_ip = COMPUTE_MANAGEMENT_IP l2_population = true [securitygroup] # ... enable_security_group = true # Linux Bridgeでセキュリティグループを有効化するにはiptablesのfirewallドライバを使用するらしい firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver # ...
コントローラノードがネットワークブリッジフィルターが有効になっているか確認する
root user
sysctl -a | grep net.bridge.bridge-nf-call-ip
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 ...
- これらの値が
1
なら OK - 有効になってない場合は
br_netfilter
カーネルモジュールをロードすればよいらしい
- これらの値が
/etc/nova/nova.conf
編集(Nova で Neutron ネットワークを使用するための設定)- Nova インストール時に設定済み
コンピュートノードのサービス再起動
OpenStack Docs: Install and configure compute node - Finalize installation
root user
systemctl restart nova-compute
systemctl restart neutron-linuxbridge-agent
動作確認
Controller
admin
環境スクリプトの読み込みOpenStack Docs: Verify operation
any user
. admin-openrc
ネットワーク拡張機能一覧を表示(Neutron Server の確認)
OpenStack Docs: Verify operation
any user
openstack extension list --network
+---------------------------+---------------------------+----------------------------+ | Name | Alias | Description | +---------------------------+---------------------------+----------------------------+ | Default Subnetpools | default-subnetpools | Provides ability to mark | | | | and use a subnetpool as | | | | the default | | Availability Zone | availability_zone | The availability zone | | | | extension. | | Network Availability Zone | network_availability_zone | Availability zone support | | | | for network. | | Port Binding | binding | Expose port bindings of a | | | | virtual port to external | | | | application | | agent | agent | The agent management | | | | extension. | | Subnet Allocation | subnet_allocation | Enables allocation of | | | | subnets from a subnet pool | | DHCP Agent Scheduler | dhcp_agent_scheduler | Schedule networks among | | | | dhcp agents | | Neutron external network | external-net | Adds external network | | | | attribute to network | | | | resource. | | Neutron Service Flavors | flavors | Flavor specification for | | | | Neutron advanced services | | Network MTU | net-mtu | Provides MTU attribute for | | | | a network resource. | | Network IP Availability | network-ip-availability | Provides IP availability | | | | data for each network and | | | | subnet. | | Quota management support | quotas | Expose functions for | | | | quotas management per | | | | tenant | | Provider Network | provider | Expose mapping of virtual | | | | networks to physical | | | | networks | | Multi Provider Network | multi-provider | Expose mapping of virtual | | | | networks to multiple | | | | physical networks | | Address scope | address-scope | Address scopes extension. | | Subnet service types | subnet-service-types | Provides ability to set | | | | the subnet service_types | | | | field | | Resource timestamps | standard-attr-timestamp | Adds created_at and | | | | updated_at fields to all | | | | Neutron resources that | | | | have Neutron standard | | | | attributes. | | Neutron Service Type | service-type | API for retrieving service | | Management | | providers for Neutron | | | | advanced services | | resources: subnet, | | more L2 and L3 resources. | | subnetpool, port, router | | | | Neutron Extra DHCP opts | extra_dhcp_opt | Extra options | | | | configuration for DHCP. | | | | For example PXE boot | | | | options to DHCP clients | | | | can be specified (e.g. | | | | tftp-server, server-ip- | | | | address, bootfile-name) | | Resource revision numbers | standard-attr-revisions | This extension will | | | | display the revision | | | | number of neutron | | | | resources. | | Pagination support | pagination | Extension that indicates | | | | that pagination is | | | | enabled. | | Sorting support | sorting | Extension that indicates | | | | that sorting is enabled. | | security-group | security-group | The security groups | | | | extension. | | RBAC Policies | rbac-policies | Allows creation and | | | | modification of policies | | | | that control tenant access | | | | to resources. | | standard-attr-description | standard-attr-description | Extension to add | | | | descriptions to standard | | | | attributes | | Port Security | port-security | Provides port security | | Allowed Address Pairs | allowed-address-pairs | Provides allowed address | | | | pairs | | project_id field enabled | project-id | Extension that indicates | | | | that project_id field is | | | | enabled. | +---------------------------+---------------------------+----------------------------+
Neutron エージェント一覧を表示
OpenStack Docs: Networking Option 2: Self-service networks
any user
openstack network agent list
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+ | f49a4b81-afd6-4b3d-b923-66c8f0517099 | Metadata agent | controller | None | True | UP | neutron-metadata-agent | | 27eee952-a748-467b-bf71-941e89846a92 | Linux bridge agent | controller | None | True | UP | neutron-linuxbridge-agent | | 08905043-5010-4b87-bba5-aedb1956e27a | Linux bridge agent | compute1 | None | True | UP | neutron-linuxbridge-agent | | 830344ff-dc36-4956-84f4-067af667a0dc | L3 agent | controller | nova | True | UP | neutron-l3-agent | | dd3644c9-1a3a-435a-9282-eb306b4b0391 | DHCP agent | controller | nova | True | UP | neutron-dhcp-agent | +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
OVN インストール
OpenStack Docs: OVN Install Documentation
- Linux Bridge を使う場合はいらない気がしたので無視して終了
おわり
以上で Newtron 編終了です
お疲れ様でした
関連記事一覧
- OpenStack Ussuriをマニュアルインストールしてみたメモ
- OpenStack Ussuriマニュアルインストールその1―環境構築編
- OpenStack Ussuriマニュアルインストールその2―Keystone編
- OpenStack Ussuriマニュアルインストールその3―Glance編
- OpenStack Ussuriマニュアルインストールその4―Placement編
- OpenStack Ussuriマニュアルインストールその5―Nova編
- OpenStack Ussuriマニュアルインストールその6―Neutron編(当記事)
- OpenStack Ussuriマニュアルインストールその7―Horizon編
- OpenStack Ussuriマニュアルインストールその8―Cinder編
- OpenStack Ussuriマニュアルインストールその9―起動編
- OpenStack Ussuri 追加インストールその1―Octavia編
- OpenStack Victoriaをマニュアルインストールしてみたメモ
- OpenStack Tips
- Issues