OpenStack Ussuri マニュアルインストールその9―起動編
Controller
Horizon ダッシュボードからポチポチやってもできるしわかりやすい気がする
ネットワーク作成
プロバイダネットワーク
OpenStack Docs: Provider network - Create the provider network
admin
環境スクリプトの読み込みany user
. admin-openrc
プロバイダネットワーク作成
any user
flat (untagged なごくごく普通の)ネットワークの場合
openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
--provider-physical-network provider
ではOpenStack Ussuriマニュアルインストールその6―Neutron編の/etc/neutron/plugins/ml2/ml2_conf.ini
編集で設定したプロバイダネットワーク名を使用する- 例えば、複数 NIC に対して
flat_networks = provider1,provider2,...
やnetwork_vlan_ranges = provider1:<start Vlan ID>:<end Vlan ID>,provider2:<start Vlan ID>:<end Vlan ID>,...
のように設定した場合は、provider
ではなくprovider1
やprovider2
…を指定する
- 例えば、複数 NIC に対して
- 最後の
provider
は作成するプロバイダネットワークの名前なので適宜変更してよい
VLAN ネットワークの場合
openstack network create --share --external --provider-physical-network provider --provider-network-type vlan --provider-segment VLAN_ID provider
--provider-physical-network provider
ではOpenStack Ussuriマニュアルインストールその6―Neutron編の/etc/neutron/plugins/ml2/ml2_conf.ini
編集で設定したプロバイダネットワーク名を使用する- 例えば、複数 NIC に対して
flat_networks = provider1,provider2,...
やnetwork_vlan_ranges = provider1:<start Vlan ID>:<end Vlan ID>,provider2:<start Vlan ID>:<end Vlan ID>,...
のように設定した場合は、provider
ではなくprovider1
やprovider2
…を指定する
- 例えば、複数 NIC に対して
VLAN_ID
は引き込みたい VLAN ID に書き換える- 最後の
provider
は作成するプロバイダネットワークの名前なので適宜変更してよい
出力は以下の感じ
+---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-03-14T14:37:39Z | | description | | | dns_domain | None | | id | 54adb94a-4dce-437f-a33b-e7e2e7648173 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | None | | mtu | 1500 | | name | provider | | port_security_enabled | True | | project_id | 4c7f48f1da5b494faaa66713686a7707 | | provider:network_type | flat | | provider:physical_network | provider | | provider:segmentation_id | None | | qos_policy_id | None | | revision_number | 3 | | router:external | External | | segments | None | | shared | True | | status | ACTIVE | | subnets | | | updated_at | 2017-03-14T14:37:39Z | +---------------------------+--------------------------------------+
--external
オプションは外部ネットワーク(プロバイダネットワーク)の作成OpenStack Ussuriマニュアルインストールその6―Neutron編で編集した
/etc/neutron/plugins/ml2/ml2_conf.ini
の[ml2_type_flat]
や[ml2_type_vlan]
セクション、/etc/neutron/plugins/ml2/linuxbridge_agent.ini
の[linux_bridge]`セクションを読んで構成してくれるみたい
サブネット作成
any user
openstack subnet create \ --network provider \ --allocation-pool start=PROVIDER_START_IP,end=PROVIDER_END_IP \ --dns-nameserver DNS_IP \ --gateway PROVIDER_GATEWAY_IP \ --subnet-range PROVIDER_SUBNET(CIDR) \ provider
+-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | PROVIDER_START_IP-PROVIDER_END_IP | | cidr | PROVIDER_SUBNET(CIDR) | | created_at | 2017-03-29T05:48:29Z | | description | | | dns_nameservers | DNS_IP | | enable_dhcp | True | | gateway_ip | PROVIDER_GATEWAY_IP | | host_routes | | | id | e84b4972-c7fc-4ce9-9742-fdc845196ac5 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | provider | | network_id | 1f816a46-7c3f-4ccf-8bf3-fe0807ddff8d | | project_id | 496efd248b0c46d3b80de60a309177b5 | | revision_number | 2 | | segment_id | None | | service_types | | | subnetpool_id | None | | updated_at | 2017-03-29T05:48:29Z | +-------------------+--------------------------------------+
例えば、以下みたいな感じで作る
openstack subnet create \ --network provider \ --allocation-pool start=172.16.100.1,end=172.16.100.255 \ --dns-nameserver 1.1.1.1 \ --gateway 172.16.0.1 \ --subnet-range 172.16.0.0/16 \ provider
--allocation-pool
では OpenStack が適当に割り当ててくれるプロバイダネットワークの IP アドレスの範囲を指定--dns-nameserver
は適当に好きなやつ
セルフサービスネットワーク
OpenStack Docs: Self-service network - Create the self-service network
OpenStack Docs: Self-service network - Create a router
myuser
環境スクリプトの読み込みany user
. demo-openrc
- 当然
admin
プロジェクトに作ってもよいがドキュメントに倣う - セルフサービスネットワークはプロジェクトごとに作るのが普通だと思うので
admin
プロジェクト以外にも作成可能なことを確認する意味も込めて
- 当然
セルフサービスネットワーク作成
any user
openstack network create selfservice
+-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-11-04T18:20:59Z | | description | | | headers | | | id | 7c6f9b37-76b4-463e-98d8-27e5686ed083 | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | selfservice | | port_security_enabled | True | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-11-04T18:20:59Z | +-------------------------+--------------------------------------+
- 最後の
selfservice
は作成するセルフサービスネットワークの名前なので適宜変更してよい myuser
に強い権限がないのでオプションは原則指定できないらしい- 自動的にOpenStack Ussuriマニュアルインストールその6―Neutron編で編集した
/etc/neutron/plugins/ml2/ml2_conf.ini
の[ml2]
や[ml2_type_vxlan]
セクションを読んで構成してくれるらしい
- 最後の
サブネット作成
any user
openstack subnet create \ --network selfservice \ --dns-nameserver DNS_IP \ --gateway SELF_SERVICE_GATEWAY_IP \ --subnet-range SELF_SERVICE_SUBNET(CIDR) \ selfservice
+-------------------+-------------------------------------------+ | Field | Value | +-------------------+-------------------------------------------+ | allocation_pools | SELF_SERVICE_START_IP-SELF_SERVICE_END_IP | | cidr | SELF_SERVICE_SUBNET(CIDR) | | created_at | 2016-11-04T18:30:54Z | | description | | | dns_nameservers | DNS_IP | | enable_dhcp | True | | gateway_ip | SELF_SERVICE_GATEWAY_IP | | headers | | | host_routes | | | id | 5c37348e-e7da-439b-8c23-2af47d93aee5 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | selfservice | | network_id | b9273876-5946-4f02-a4da-838224a144e7 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 2 | | service_types | [] | | subnetpool_id | None | | updated_at | 2016-11-04T18:30:54Z | +-------------------+-------------------------------------------+
例えば、以下みたいな感じで作る
openstack subnet create \ --network selfservice \ --dns-nameserver 1.1.1.1 \ --gateway 10.0.0.1 \ --subnet-range 10.0.0.0/24 \ selfservice
allocation_pools
は自動的に設定され、上の例では10.0.0.2-10.0.0.254
とかになるはず
内部(NAT 越しのプライベートな)ネットワークなので、サブネットはプロバイダネットワークのサブネットと重ならないように自由に決めていいと思う
--dns-nameserver
は適当に好きなやつ
ルータ作成
any user
openstack router create router
+-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-11-04T18:32:56Z | | description | | | external_gateway_info | null | | flavor_id | None | | headers | | | id | 67324374-396a-4db6-9443-c70be167a42b | | name | router | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 2 | | routes | | | status | ACTIVE | | updated_at | 2016-11-04T18:32:56Z | +-------------------------+--------------------------------------+
- 最後の
router
は作成するルータの名前なので適宜変更してよい - プロバイダネットワークとセルフサービスネットワークをつなぐためのルータ作成
- 通常は双方向 NAT の仮想ルータが用意される
- 最後の
セルフサービスネットワークとルータを接続
any user
openstack router add subnet router selfservice
プロバイダネットワークとルータを接続
any user
openstack router set router --external-gateway provider
動作確認
OpenStack Docs: Self-service network - Verify operation
admin
環境スクリプトの読み込みany user
. admin-openrc
ネットワーク名前空間の一覧表示
any user
ip netns
qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083 qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
qrouter
1 つとqdhcp
2 つがあるはず- ルータ 1 つとネットワーク 2 つ(プロバイダとセルフサービスを 1 つずつ)作ったので
ルータのポート一覧表示
any user
openstack port list --router router
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+ | ID | Name | MAC Address | Fixed IP Addresses | Status | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+ | bff6605d-824c-41f9-b744-21d128fc86e1 | | fa:16:3e:2f:34:9b | ip_address='10.0.0.1', subnet_id='3482f524-8bff-4871-80d4-5774c2730728' | ACTIVE | | d6fe98db-ae01-42b0-a860-37b1661f5950 | | fa:16:3e:e8:c1:41 | ip_address='172.16.100.xxx', subnet_id='5cc70da8-4ee7-4565-be53-b9c011fca011' | ACTIVE | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
ルータのプロバイダネットワーク側のゲートウェイ IP アドレス (
172.16.100.xxx
) への疎通確認
コントローラノードまたは172.16.0.0/16
サブネット内の任意のホストからany user
ping -c 4 172.16.100.xxx
フレーバー作成
OpenStack Docs: Launch an instance - Create m1.nano flavor
- フレーバーは VM インスタンスに割り与えるリソース(VCPU の数やメモリ、ディスクサイズなど)のテンプレート
- Cirros 検証用の小さいフレーバーを用意しておくとよい
any user
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
+----------------------------+---------+
| Field | Value |
+----------------------------+---------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 1 |
| id | 0 |
| name | m1.nano |
| os-flavor-access:is_public | True |
| properties | |
| ram | 64 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+---------+
- 最後の
m1.nano
は作成するフレーバーの名前なので適宜変更してよい - 上記コマンドでは以下のテンプレートを
m1.nano
フレーバーとして作成しているResource Name Value VCPU 1 RAM 64M Disk 1G
フレーバー例
OpenStack Docs: Manage flavors
OpenStack Mitaka 以前はデフォルトでフレーバーが生成されていたらしい
Flavor VCPU RAM Disk m1.tiny 1 512M 1G m1.small 1 2048M 20G m1.medium 2 4096M 40G m1.large 4 8192M 80G m1.xlarge 8 16384M 160G 環境や使いたい OS にあわせて作りましょう
SSH 鍵生成
OpenStack Docs: Launch an instance - Generate a key pair
myuser
環境スクリプトの読み込みany user
. demo-openrc
- 当然
admin
プロジェクトに作ってもよいがドキュメントに倣う - プロジェクトごとに違う SSH 鍵を作るのが普通だと思うので
admin
プロジェクト以外にも作成可能なことを確認する意味も込めて
- 当然
SSH 鍵生成・登録
any user
ssh-keygen -q -N "" openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
+-------------+-------------------------------------------------+ | Field | Value | +-------------+-------------------------------------------------+ | fingerprint | ee:3d:2e:97:d4:e2:6a:54:6d:0d:ce:43:39:2c:ba:4d | | name | mykey | | user_id | 58126687cbcc4888bfa9ab73a2256f27 | +-------------+-------------------------------------------------+
- 最後の
mykey
は作成する鍵の名前なので適宜変更してよい - 検証用にコントローラノードで鍵を生成しているが、当然自分が普段作っている鍵を登録してもよい
- というか自分の鍵を登録したほうがいいと思う
- 最後の
確認
any user
openstack keypair list
+-------+-------------------------------------------------+ | Name | Fingerprint | +-------+-------------------------------------------------+ | mykey | ee:3d:2e:97:d4:e2:6a:54:6d:0d:ce:43:39:2c:ba:4d | +-------+-------------------------------------------------+
セキュリティグループのルール
OpenStack Docs: Launch an instance - Add security group rules
default
セキュリティグループではインスタンスへのリモートアクセスを拒否するようにファイアウォールが構成されている- なんらかのサービスを試して疎通が取れないときはここが原因のことが多い(個人の感想)
- 今回は ICMP、SSH だけ許可しておく
- Web サーバとか試すなら http (80), https (443)をあけ忘れないように
myuser
環境スクリプトの読み込みany user
. demo-openrc
- 当然
admin
プロジェクトに作ってもよいがドキュメントに倣う - プロジェクトごとに違うセキュリティグループのルールを作るのが普通だと思うので
admin
プロジェクト以外にも作成可能なことを確認する意味も込めて
- 当然
ICMP 許可
any user
openstack security group rule create --proto icmp default
+-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | created_at | 2017-03-30T00:46:43Z | | description | | | direction | ingress | | ether_type | IPv4 | | id | 1946be19-54ab-4056-90fb-4ba606f19e66 | | name | None | | port_range_max | None | | port_range_min | None | | project_id | 3f714c72aed7442681cbfa895f4a68d3 | | protocol | icmp | | remote_group_id | None | | remote_ip_prefix | 0.0.0.0/0 | | revision_number | 1 | | security_group_id | 89ff5c84-e3d1-46bb-b149-e621689f0696 | | updated_at | 2017-03-30T00:46:43Z | +-------------------+--------------------------------------+
SSH 許可
any user
openstack security group rule create --proto tcp --dst-port 22 default
+-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | created_at | 2017-03-30T00:43:35Z | | description | | | direction | ingress | | ether_type | IPv4 | | id | 42bc2388-ae1a-4208-919b-10cf0f92bc1c | | name | None | | port_range_max | 22 | | port_range_min | 22 | | project_id | 3f714c72aed7442681cbfa895f4a68d3 | | protocol | tcp | | remote_group_id | None | | remote_ip_prefix | 0.0.0.0/0 | | revision_number | 1 | | security_group_id | 89ff5c84-e3d1-46bb-b149-e621689f0696 | | updated_at | 2017-03-30T00:43:35Z | +-------------------+--------------------------------------+
インスタンス起動
OpenStack Docs: Launch an instance on the provider network
OpenStack Docs: Launch an instance on the self-service network
OpenStack Docs: Block Storage
OpenStack Docs: Launch an instance from a volume
- ドキュメントでは CLI ベースで書かれているが、Cinder ブロックストレージを有効化しているため CLI ベースでは結構コマンド数が多く面倒だったりする
- CLI ベースで試すとしたらOpenStack Docs: Launch an instance from a volumeがいいか…?
- 簡単に試すために Horizon ダッシュボードからポチポチやりましょう
- Horizon ダッシュボードに
myuser
ユーザでログイン - プロバイダネットワーク、セルフサービスネットワーク上に Cirros VM を
m1.nano
フレーバーで建てる
- Horizon ダッシュボードに
確認事項例
- インスタンスのコンソールから VM にログインして内部から外に向けて ping 疎通ができること
- インスタンスに外部から ping 疎通、SSH 接続ができること
- セルフサービスネットワーク上の VM インスタンスには floating IP を設定することでプロバイダネットワークから ping や SSH が通るようになる
おわり
以上で起動編終了です
構築と簡単な起動テストは完了したので、あとは自由に試してみてください
お疲れ様でした
関連記事一覧
- 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