このセクションでは、コンピュートノードに Compute サービスをインストールして設定する方法を説明します。 Compute サービスでは、インスタンス すなわち 仮想マシン を配備する ハイパーバイザー が数種類サポートされています。簡単のため、この設定では、仮想マシン向けにハードウェア支援機能をサポートするコンピュートノードにおいて、KVM 拡張を持つ QEMU ハイパーバイザーを使用します。古いハードウェアでは、この設定では汎用的な QEMU ハイパーバイザーを使用します。これらの手順を少し修正するだけで、追加のコンピュートノードを用いて、お使いの環境を水平的にスケールできます。
注釈
このセクションは、このガイドにあるステップバイステップの手順に従い、最初のコンピュートノードを設定して来ていることを前提にしています。追加のコンピュートノードを設定したい場合、サンプルアーキテクチャー セクションの最初のコンピュートノードと同じ方法で準備します。追加のコンピュートノードは、それぞれ一意な IP アドレスを必要とします。
注釈
設定ファイルのデフォルトは、ディストリビューションにより異なります。これらの既存のセクションとオプションを編集するのではなく、追加する必要があるかもしれません。また、設定のスニペットにある 省略 (...
) は、保持すべきデフォルトの設定オプションを意味します。
パッケージをインストールします。
# apt install nova-compute
/etc/nova/nova.conf
ファイルを編集し、以下の作業をすべて行います。
[DEFAULT]
セクションに、RabbitMQ
メッセージキューのアクセス方法を設定します。
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
RABBIT_PASS
を RabbitMQ
の openstack
アカウント用に選択したパスワードで置き換えます。
[api]
と [keystone_authtoken]
セクションに、Identity サービスへのアクセス方法を設定します。
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
NOVA_PASS
は Identity サービスで nova
ユーザー用に選択したパスワードで置き換えます。
注釈
[keystone_authtoken]
セクションにある他のオプションは、コメントアウトまたは削除します。
[DEFAULT]
セクションで、 my_ip
オプションが正しく設定されているか確認してください (この値は nova-common
パッケージのスクリプト config と postinst により debconf を使って設定されます)。
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
MANAGEMENT_INTERFACE_IP_ADDRESS
はコンピュートノードの管理ネットワークインターフェースの IP アドレスに置き換えます。一般的に、サンプルアーキテクチャー にある 1 番目のノードは 10.0.0.31 です。
[vnc]
セクションで、リモートコンソールアクセスを有効にし、その設定を行います。
[vnc]
# ...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
サーバーコンポーネントは、すべての IP アドレスをリッスンします。プロキシーコンポーネントはコンピュートノードの管理インターフェースの IP アドレスのみをリッスンします。ベース URL は、Web ブラウザーがこのコンピュートノードにあるインスタンスのリモートコンソールにアクセスするための場所を示します。
注釈
リモートコンソールにアクセスする Web ブラウザーをホスト名 controller
を解決できないホストで使用している場合、controller
をコントローラーノードの管理インターフェースの IP アドレスに置き換える必要があります。
[glance]
セクションで、Image サービス API の場所を設定します。
[glance]
# ...
api_servers = http://controller:9292
In the [placement]
section, configure the Placement API:
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
Replace PLACEMENT_PASS
with the password you choose for the
placement
user in the Identity service. Comment out any other options
in the [placement]
section.
カーネルモジュール nbd
が読み込まれていることを確認します。
# modprobe nbd
/etc/modules-load.d/nbd.conf
ファイルに nbd
を追加することで、確実に、モジュールが起動時に毎回読み込まれるようにします。
お使いのコンピュートノードが仮想マシンのハードウェア支援機能をサポートするかどうかを確認します。
$ egrep -c '(vmx|svm)' /proc/cpuinfo
このコマンドが 1 以上
の値を返した場合、お使いのコンピュートノードはハードウェア支援機能をサポートしており、通常は追加の設定は必要ありません。
このコマンドが 0
を返す場合、お使いのコンピュートノードはハードウェア支援機能をサポートしていません。libvirt
が KVM の代わりに QEMU を使用するように設定する必要があります。
nova-compute-kvm
パッケージを nova-compute-qemu
に置き換えてください。 nova-compute-qemu
パッケージは、自動的に /etc/nova/nova-compute.conf
ファイルを変更し、必要な依存パッケージをインストールします。
# apt install nova-compute-qemu
Compute Service を再起動します。
# service nova-compute restart
注釈
nova-compute
サービスが起動しない場合、/var/log/nova/nova-compute.log
を確認します。AMQP server on controller:5672 is unreachable
というエラーメッセージは、コントローラーノードにあるファイアウォールが 5672 番ポートへのアクセスを遮断していることを意味します。コントローラーノードにおいて 5672 番ポートが開いていることを確認してから、コンピュートノードにおいて nova-compute
サービスを再起動します。
重要
Run the following commands on the controller node.
Source the admin credentials to enable admin-only CLI commands, then confirm there are compute hosts in the database:
$ . admin-openrc
$ openstack hypervisor list
+----+---------------------+-----------------+-----------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+-----------+-------+
| 1 | compute1 | QEMU | 10.0.0.31 | up |
+----+---------------------+-----------------+-----------+-------+
Discover compute hosts:
# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
注釈
When you add new compute nodes, you must run nova-manage cell_v2
discover_hosts
on the controller node to register those new compute
nodes. Alternatively, you can set an appropriate interval in
/etc/nova/nova.conf
:
[scheduler]
discover_hosts_in_cells_interval = 300
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.