公式ドキュメントに従ってやっていきます。
OpenStack Compute (nova)
クラウドコンピューティングシステムを構築し管理するために使用します。 OpenStack Compute は、Infrastructure-as-a-Service (IaaS) システムの主要な構成要素です。
OpenStack Compute は、認証については OpenStack Identity サービスと、ディスクやサーバーイメージについては OpenStack Image サービスと、ユーザーや管理者向けインターフェースについては OpenStack Dashboard と連携して動作します。
インストールと設定@コントローラノード
-
# mysql -u root -p
で以下を実行。NOVA_DBPASSにはroot++
create database nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
grant all privileges on nova.* TO 'nova'@'%' identified by 'NOVA_DBPASS';
- novaユーザの作成
-
# openstack user create --domain default --password-prompt nova
- NOVA_PASSとしてroot++を入力
-
- adminロールにをnovaユーザに追加
# openstack role add --project service --user nova admin
- novaサービスエンティティを作成
# openstack service create --name nova --description "Openstack Compute" compute
- Computeサービスのエンドポイント作成
# openstack endpoint create --region RegionOne compute public http://controller:8774/v2/%\(tenant_id\)s
# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2/%\(tenant_id\)s
-
# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2/%\(tenant_id\)s
- テナント(プロジェクト)ごとにエンドポイントが生成される
コンポーネントのインストール
# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
-
# vi /etc/nova/nova.conf
で以下を編集
nova.conf
# DBアクセス方法
[database]
connection = mysql://nova:NOVA_DBPASS@controller/nova # root++
# RabbitMQメッセージキューのアクセス方法
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS # root++
# Identityサービスへのアクセス方法
[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 = nova
password = NOVA_PASS # root++
# my_ipオプションの設定
[DEFAULT]
my_ip = 10.0.3.11
# Networking サービスのサポートを有効にする
[DEFAULT]
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
# VNCプロキシーを設定 コントローラノードの管理インタフェースIPアドレスを使用するように
# VNCセクションではなくDEFAULTセクションにあったのでそこに記述
# [vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
# Image serviceの場所を設定
[glance]
host = controller
# ロックパスを設定
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
# EC2 APIを無効にする
[DEFAULT]
enabled_apis=osapi_compute,metadata
- Computeデータベース展開
# su -s /bin/sh -c "nova-manage db sync" nova
- 起動設定
systemctl enable openstack-nova-api openstack-nova-cert openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
systemctl start openstack-nova-api openstack-nova-cert openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
インストールと設定@コンピュートノード
- インストール
# yum install openstack-nova-compute sysfsutils
- nova-computeが利用できない場合は,初期のパッケージインストールを行ってください。
-
# vi /etc/nova/nova.conf
で以下を編集
nova.conf
# RabbitMQメッセージキューのアクセス方法を設定
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS # root++
# Identityサービスへのアクセス方法を設定
[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 = nova
password = NOVA_PASS # root++
# my_ipオプションを設定
[DEFAULT]
# コンピュートノードの管理ネットワークインタフェースのIPアドレスに置き換え
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS # 10.0.3.12
# Networkingサービスのサポートを有効にする
[DEFAULT]
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
# リモートコンソールアクセスを有効にし,その設定を行う
# [vnc]がまたもやなかったため,DEFAULTにて行う
# [vnc]
enabled = True
vncserver_listen = 0.0.0.0 # すべてのIPアドレスをリッスン
vncserver_proxyclient_address = $my_ip # プロキシコンポーネントはコンピュートノードのIPのみリッスン
# Webブラウザがこのノードになるインスタンスのリモートコンソールにアクセスするための場所を示す
# 使用する予定のブラウザからcontrollerが解決できない場合は、解決できるIPを指定する
# 僕の場合は最終的にはhttp://192.168.12.11:6080/vnc_auto.htmlにしました
novncproxy_base_url = http://controller:6080/vnc_auto.html
# image serviceの場所を設定
[glance]
host = controller
# ロックパスの設定
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
- 使用しているコンピュートノードが仮想マシンのハードウェア支援機能をサポートするかどうか確認
-
# egrep -c '(vmx|svm)' /proc/cpuinfo
- vmx(intel), svm(amd)らしい
- 1以上の値を返した場合,サポートされている
- 0を返す場合,サポートされていないため,以下の設定を行う
-
nova.conf
# libvirtがKVMの代わりにQEMUを使用するように設定する
[libvirt]
virt_type = qemu
- 起動設定
# systemctl enable libvirtd openstack-nova-compute
# systemctl start libvirtd openstack-nova-compute
確認@コントローラノード
-
# source admin-openrc.sh
アクセス権読み込み -
サービスコンポーネントの一覧表示
- 各プロセスの起動と登録が正常であることを確認
-
# nova service-list
- この時点ではコントローラノードに4つ,コンピュートノードに1つのサービスコンポーネントが有効になっていればおk
-
IdentityサービスのAPIエンドポイントを一覧表示して,Identityサービスへの接続性を検証
-
# nova endpoints
- 3*3登録されていればおk
-
この出力の警告はすべて無視してください
-
-
イメージカタログにあるイメージをnova経由で一覧表示して,image serviceへの接続性を検証する
-
# nova image-list
- glanceで登録したimageが表示されていればおk
-