Show Table of Contents
8.2. コンピュートノードのインストール
8.2.1. Compute サービスのパッケージのインストール
OpenStack Compute サービスには以下のパッケージが必要です。
- openstack-nova-api
- OpenStack Compute API サービスを提供します。環境内で少なくとも 1 台のノード API サービスのインスタンスをホストしている必要があります。これは、Identity サービスのエンドポイントの定義によって、Compute サービスにポイントされているノードである必要があります。
- openstack-nova-compute
- OpenStack Compute サービスを提供します。
- openstack-nova-conductor
- Compute コンダクターサービスを提供します。コンダクターは、コンピュートノードによって作成されるデータベース要求を処理し、各コンピュートノードがデータベースに直接アクセスする必要がないようにします。各環境で少なくとも 1 台のノードが Compute のコンダクターとして機能する必要があります。
- openstack-nova-scheduler
- Compute のスケジューラーサービスを提供します。スケジューラーは利用可能な Compute リソース全体にわたり、API に対する要求のスケジューリングを処理します。各環境で、少なくとも 1 台のノードが Compute スケジューラーとして稼働する必要があります。
- python-cinderclient
- Block Storage サービスによって管理されるストレージにアクセスするためのクライアントユーティリティーを提供します。インスタンスに Block Storage ボリュームを接続しない場合や、Block Storage サービス以外のサービスを使用して Block Storage ボリュームを管理する場合には、このパッケージは必要ありません。
パッケージをインストールします。
#
yum install -y openstack-nova-api openstack-nova-compute \
openstack-nova-conductor openstack-nova-scheduler \
python-cinderclient
注記
上記の例では、すべての Compute サービスのパッケージが単一のノードにインストールされます。Red Hat は、実稼働環境にデプロイする場合に、API、コンダクター、スケジューラーのサービスを 1 つのコントローラーノードにインストールするか、それぞれを別々のノードにインストールすることを推奨します。Compute サービス自体は、仮想マシンインスタンスをホストする各ノードにインストールする必要があります。
8.2.2. Compute サービスのデータベースの作成
Compute サービスが使用するデータベースとデータベースユーザーを作成します。以下の手順の全ステップは、データベースサーバーに
root
ユーザーとしてログインして実行する必要があります。
手順8.3 Compute サービスのデータベースの作成
- データベースサービスに接続します。
#
mysql -u root -p
nova
データベースを作成します。mysql>
CREATE DATABASE nova;nova
データベースユーザーを作成し、nova
データベースへのユーザーアクセスを許可します。mysql>
GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY 'PASSWORD';mysql>
GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'PASSWORD';PASSWORD は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。- データベースの特権をフラッシュして、設定が即時に反映されるようにします。
mysql>
FLUSH PRIVILEGES; mysql
クライアントを終了します。mysql>
quit
8.2.3. Compute サービスのデータベース接続の設定
Compute サービスによって使用されるデータベース接続文字列は、
/etc/nova/nova.conf
ファイルで定義されます。サービスを起動する前に、有効なデータベースサーバーをポイントするように更新しておく必要があります。 データベース接続文字列は、コンダクターサービス (
openstack-nova-conductor
) をホストするノードのみで設定する必要があります。コンピュートノードがメッセージングインフラストラクチャーを使用してコンダクターに通信すると、コンダクターはそれに応えてデータベースとの通信をオーケストレートするので、個別のコンピュートノードは、データベースに直接アクセスする必要がありません。どのようなコンピュート環境においても、コンダクターサービスのインスタンスが少なくとも 1 つ必要です。 以下の手順に記載するステップはすべて、Compute コンダクターサービスをホストするサーバーに
root
ユーザーとしてログインして実行する必要があります。
手順8.4 Compute サービスの SQL データベース接続の設定
sql_connection
設定キーの値を設定します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT sql_connection mysql://USER:PASS@IP/DB
以下の値を置き換えてください。- USER は、Compute サービスのデータベースのユーザー名 (通常は
nova
) に置き換えます。 - PASS は選択したデータベースユーザーのパスワードに置き換えます。
- IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
- DB は、Compute サービスのデータベースの名前 (通常は
nova
) に置き換えます。
重要
この接続設定キーに指定する IP アドレスまたはホスト名は、Compute サービスのデータベースの作成時に Compute サービスのデータベースユーザーがアクセスを許可された IP アドレスまたはホスト名と一致する必要があります。また、データベースがローカルでホストされ、Compute サービスのデータベースの作成時に「localhost」へのアクセス権を付与した場合には、「localost」と入力する必要があります。
8.2.4. Compute サービス用のアイデンティティーレコードの作成
Compute サービスで必要な Identity サービスを作成して設定します。これらのエントリーは、Compute サービスによって提供されるボリューム機能を検索してアクセスを試みる他の OpenStack サービスを補助します。
以下の手順では、管理ユーザーと
services
テナントが作成済みであることを前提としています。詳しい説明は、以下のリンクを参照してください。 以下の手順は、Identity サービスのサーバーまたは
keystonerc_admin
ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。
手順8.5 Compute サービス用のアイデンティティーレコードの作成
- Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
#
source ~/keystonerc_admin
compute
ユーザーを作成します。[(keystone_admin)]#
openstack user create --password PASSWORD compute
+----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 421665cdfaa24f93b4e904c81ff702ad | | name | compute | | username | compute | +----------+----------------------------------+PASSWORD は、Compute サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。services
テナントのコンテキスト内で、compute
ユーザーとadmin
ロールを関連付けます。[(keystone_admin)]#
openstack role add --project services --user compute admin
compute
サービスエントリーを作成します。[(keystone_admin)]#
openstack service create --name compute \
--description "OpenStack Compute Service" \
compute
compute
エンドポイントエントリーを作成します。[(keystone_admin)]#
openstack endpoint create \
--publicurl "http://IP:8774/v2/%(tenant_id)s" \
--adminurl "http://IP:8774/v2/%(tenant_id)s" \
--internalurl "http://IP:8774/v2/%(tenant_id)s" \
--region RegionOne \
compute
IP は、Compute API サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。
8.2.5. Compute サービスの認証の設定
Compute サービスが認証に Identity サービスを使用するように設定します。以下の手順に記載するステップはすべて、Compute サービスをホストする各システムに
root
ユーザーとしてログインして実行する必要があります。
手順8.6 Compute サービスが Identity サービスを使用して認証を行うための設定
- 認証ストラテジーを
keystone
に設定します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT auth_strategy keystone
- Compute サービスが使用する必要のある Identity サービスのホストを設定します。
#
openstack-config --set /etc/nova/api-paste.ini \
filter:authtoken auth_host IP
IP は、Identity サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。 - Compute サービスが正しいテナントとして認証を行うように設定します。
#
openstack-config --set /etc/nova/api-paste.ini \
filter:authtoken admin_tenant_name services
services は、Compute サービスを使用するために作成したテナントの名前に置き換えます。本ガイドの例では、services
を使用しています。 - Compute サービスが
compute
管理ユーザーアカウントを使用して認証を行うように設定します。#
openstack-config --set /etc/nova/api-paste.ini \
filter:authtoken admin_user compute
- Compute サービスが正しい
compute
管理ユーザーアカウントのパスワードを使用するように設定します。#
openstack-config --set /etc/nova/api-paste.ini \
filter:authtoken admin_password PASSWORD
PASSWORD は、compute
ユーザーの作成時に設定したパスワードに置き換えます。
8.2.6. Compute サービスのトラフィックを許可するためのファイアウォール設定
仮想マシンコンソールへの接続は、直接またはプロキシー経由に関わらず、
5900
から 5999
までのポートで受信されます。Compute API サービスへは、ポート 8774
経由で接続されます。サービスノードのファイアウォールは、これらのポートのネットワークトラフィックを許可するように設定する必要があります。以下の手順に記載するステップはすべて、コンピュートノードに root
ユーザーとしてログインして実行する必要があります。
手順8.7 Copute サービスのトラフィックを許可するためのファイアウォール設定
- テキストエディターで
/etc/sysconfig/iptables
ファイルを開きます。 - ファイルに以下の行を追記して、
5900
から5999
までの範囲内のポートで TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールの前に追加する必要があります。-A INPUT -p tcp -m multiport --dports 5900:5999 -j ACCEPT
- このファイルに、ポート
8774
で TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。-A INPUT -p tcp -m multiport --dports 8774 -j ACCEPT
/etc/sysconfig/iptables
ファイルへの変更を保存します。iptables
サービスを再起動して、変更を有効にします。#
systemctl restart iptables.service
8.2.7. Compute サービスが SSL を使用するための設定
nova.conf
ファイルで、以下のオプションを使用して SSL を設定します。
表8.1 Compute の SSL オプション
設定オプション | 説明 |
---|---|
enabled_ssl_apis | SSL を有効にする API の一覧 |
ssl_ca_file | クライアントの接続を検証するのに使用する CA 証明書ファイル |
ssl_cert_file | API サーバーの SSL 証明書 |
ssl_key_file | API サーバーの SSL 秘密鍵 |
tcp_keepidle | サーバーソケットごとに設定する TCP_KEEPIDLE 値 (秒単位)。デフォルトでは 600 |
8.2.8. Compute サービスのための RabbitMQ メッセージブローカーの設定
RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順に記載する全ステップは、コンピュートコントローラーサービスおよびコンピュートノードをホストするシステムに
root
ユーザーとしてログインして実行する必要があります。
手順8.8 Compute サービスが RabbitMQ メッセージブローカーを使用するための設定
- RPC バックエンドとして RabbitMQ を設定します。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend rabbit
- Compute サービスが RabbitMQ ホストに接続するように設定します。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_host RABBITMQ_HOST
RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。 - メッセージブローカーのポートを
5672
に設定します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_port 5672
- RabbitMQ の設定時に Compute サービス用に作成した RabbitMQ ユーザー名とパスワードを設定します。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_userid nova
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_password NOVA_PASS
nova
および NOVA_PASS は、Compute サービス用に作成したRabbitMQ ユーザー名とパスワードに置き換えます。 - RabbitMQ の起動時に、
nova
ユーザーに全リソースに対するパーミッションが付与されます。このアクセスは、特別に仮想ホスト/
を介して行われます。Compute サービスがこの仮想ホストに接続されるように設定します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_virtual_host /
8.2.9. Compute サービスとメッセージブローカーとの間の SSL 通信の有効化
メッセージブローカーで SSL を有効化した場合は、Compute サービスも相応に設定する必要があります。以下の手順では、エクスポートしたクライアントの証明書とキーファイルが必要です。これらのファイルのエクスポートの方法に関する説明は、「クライアント用 SSL 証明書のエクスポート」を参照してください。
手順8.9 Compute サービスと RabbitMQ メッセージブローカーとの間の SSL 通信の有効化
- メッセージブローカーとの SSL 通信を有効化します。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT rabbit_use_ssl True
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT kombu_ssl_certfile /path/to/client.crt
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT kombu_ssl_keyfile /path/to/clientkeyfile.key
以下の値を置き換えてください。- /path/to/client.crt はエクスポートされたクライアント証明書の絶対パスに置き換えます。
- /path/to/clientkeyfile.key はエクスポートされたキーファイルの絶対パスに置き換えます。
- 証明書がサードパーティーの認証局 (CA) によって署名されている場合には、次のコマンドを実行する必要もあります。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT kombu_ssl_ca_certs /path/to/ca.crt
/path/to/ca.crt は、サードパーティー CA によって提供された CA ファイルの絶対パスに置き換えます (詳細は 「RabbitMQ メッセージブローカーでの SSL の有効化」 を参照)。
8.2.10. リソースのオーバーコミットの設定
OpenStack は、コンピュートノード上における CPU およびメモリーリソースのオーバーコミットをサポートしています。オーバーコミットとは、物理リソースを上回る量の仮想 CPU やメモリーを割り当てるテクニックです。
重要
オーバーコミットにより、実行できるインスタンスの数が増えますが、インスタンスのパフォーマンスは低下します。
CPU およびメモリーのオーバーコミット設定は比率で表示されます。OpenStack は、デフォルトで以下のような比率を使用します。
- デフォルトの CPU オーバーコミット率は 16 ですが、これは物理コア 1 つにつき 最大 16 の仮想コアをノードに割り当てることができるという意味です。
- デフォルトのオーバーコミット率は 1.5 ですが、これはインスタンスのメモリー使用量合計が、物理メモリーの空き容量の 1.5 倍未満の場合には、インスタンスを物理ノードに割り当てることができるという意味です。
デフォルト設定を変更するには、
/etc/nova/nova.conf
の cpu_allocation_ratio
および ram_allocation_ratio
のディレクティブを使用してください。 8.2.11. ホストのリソースの確保
ホストのメモリーおよびディスクリソースが常に OpenStack で使用できるように確保することができます。一定の容量のメモリーやディスクリソースが仮想マシンでの使用に提供可能と見なされないようにするには、
/etc/nova/nova.conf
で以下のディレクティブを編集します。 reserved_host_memory_mb
: デフォルト値は 512 MBreserved_host_disk_mb
: デフォルト値は 0 MB
8.2.12. Compute ネットワークの設定
8.2.12.1. Compute ネットワークの概要
Nova のみのデプロイメントとは異なり、OpenStack Networking を使用している場合には、
nova-network
サービスは実行してはなりません。その代わりに、ネットワーク関連の決定事項はすべて OpenStack Networking サービスに委任されます。 このため、ネットワークの設定時には、Nova ネットワークについてのマニュアルや Nova ネットワークでの過去の経験に頼るのではなく、本ガイドを参照していただくことが非常に重要となります。特に、
nova-manage
や nova
などの CLI ツールを使用したネットワークの管理や IP アドレス指定 (固定 IP および Floating IP の両方を含む) は、OpenStack Networking ではサポートされていません。 重要
物理ノードを使用して OpenStack Network を稼働する前には、
nova-network
をアンインストールして、nova-network
を実行していた物理ノードを再起動することを強く推奨します。OpenStack Networking サービスの使用中に間違えて nova-network
プロセスを実行すると、たとえば、以前に実行していた nova-network
により古い ファイアウォールルールがプッシュダウンされる可能性があり、問題が発生する場合があります。 8.2.12.2. Compute の設定の更新
Compute のインスタンスがプロビジョニングまたはプロビジョニング解除されるたびに、サービスは API を介して OpenStack Networking と通信します。この接続をスムーズに行うには、以下の手順に記載する接続および認証の説明に従って設定を行う必要があります。
以下の手順に記載のステップはすべて、各コンピュートノードに
root
ユーザーとしてログインして実行する必要があります。
手順8.10 コンピュートノードの接続および認証の設定の更新
network_api_class
設定キーを変更して、OpenStack Networking が使用中であることを示します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT network_api_class nova.network.neutronv2.api.API
- Compute サービスが OpenStack Networking API のエンドポイントを使用するように設定します。
#
openstack-config --set /etc/nova/nova.conf \
neutron url http://IP:9696/
IP は、OpenStack Networking API サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。 - OpenStack Networking サービスが使用するテナントの名前を設定します。本ガイドの例では、services を使用します。
#
openstack-config --set /etc/nova/nova.conf \
neutron admin_tenant_name services
- OpenStack Networking の管理ユーザー名を設定します。
#
openstack-config --set /etc/nova/nova.conf \
neutron admin_username neutron
- OpenStack Networking の管理ユーザー名に関連付けられたパスワードを設定します。
#
openstack-config --set /etc/nova/nova.conf \
neutron admin_password PASSWORD
- Identity サービスのエンドポイントに関連付けられた URL を設定します。
#
openstack-config --set /etc/nova/nova.conf \
neutron admin_auth_url http://IP:35357/v2.0
IP は、Identity サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。 - メタデータのプロキシーを有効化して、メタデータのプロキシーシークレットを設定します。
#
openstack-config --set /etc/nova/nova.conf \
neutron service_metadata_proxy true
#
openstack-config --set /etc/nova/nova.conf \
neutron metadata_proxy_shared_secret METADATA_SECRET
METADATA_SECRET は、メタデータプロキシーが通信のセキュリティー保護に使用する文字列に置き換えます。 - OpenStack Networking セキュリティーグループの使用を有効化します。
#
openstack-config --set /etc/nova/nova.conf \
DEFAULT security_group_api neutron
- ファイアウォールドライバーを
nova.virt.firewall.NoopFirewallDriver
に設定します。#
openstack-config --set /etc/nova/nova.conf \
DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
この操作は、OpenStack Networking セキュリティーグループが使用中の状態で実行する必要があります。 - テキストエディターで
/etc/sysctl.conf
ファイルを開き、以下のカーネルネットワークパラメーターを追加または編集します。net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
- 更新したカーネルパラメーターを読み込みます。
#
sysctl -p
8.2.12.3. L2 エージェントの設定
各コンピュートノードは、使用中のネットワークプラグインに適したレイヤー 2 (L2) エージェントのインスタンスを実行する必要があります。
8.2.12.4. 仮想インターフェース結線の設定
nova-compute
がインスタンスを作成する時には、そのインスタンスに関連付ける各 vNIC を、OpenStack Networking によって制御される仮想スイッチに「結線」する必要があります。また Compute が、各 vNIC に関連付けられた OpenStack Networking ポートの識別子を仮想スイッチに通知する必要があります。 Red Hat OpenStack Platform では、仮想インターフェースの汎用ドライバー
nova.virt.libvirt.vif.LibvirtGenericVIFDriver
が提供されます。このドライバーは、必要な仮想インターフェースバインディングの種別を返すことが可能な OpenStack Networking に依存しています。この操作は、以下のプラグインによってサポートされています。 - Linux Bridge
- Open vSwitch
- NEC
- BigSwitch
- CloudBase Hyper-V
- Brocade
汎用ドライバーを使用するには、
openstack-config
コマンドを実行して vif_driver
設定キーの値を適切に設定します。 #
openstack-config --set /etc/nova/nova.conf \
libvirt vif_driver \
nova.virt.libvirt.vif.LibvirtGenericVIFDriver
重要
Open vSwitch と Linux Bridge のデプロイメントに関する考慮事項:
- セキュリティーグループを有効にした状態で Open vSwitch を実行している場合には、汎用ドライバーではなく、Open vSwitch 固有のドライバー
nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
を使用してください。 - Linux Bridge の場合には、
/etc/libvirt/qemu.conf
ファイルに以下の内容を追記して、仮想マシンが適切に起動するようにする必要があります。user = "root" group = "root" cgroup_device_acl = [ "/dev/null", "/dev/full", "/dev/zero", "/dev/random", "/dev/urandom", "/dev/ptmx", "/dev/kvm", "/dev/kqemu", "/dev/rtc", "/dev/hpet", "/dev/net/tun", ]
8.2.13. Compute サービスのデータベースへのデータ投入
Compute サービスのデータベース接続文字列を適切に設定した後には、Compute サービスのデータベースにデータを投入します。
重要
この手順は、データベースの初期化とデータ投入するために、1 回のみ実行する必要があります。Compute サービスをホストするシステムの追加時には繰り返す必要はありません。
手順8.11 Compute サービスのデータベースへのデータ投入
openstack-nova-conductor
サービスのインスタンスをホストしているシステムにログインします。nova
ユーザーに切り替えます。#
su nova -s /bin/sh
/etc/nova/nova.conf
で特定されているデータベースを初期化し、データを投入します。$
nova-manage db sync
8.2.14. Compute サービスの起動
手順8.12 Compute サービスの起動
- Libvirt を使用するには、
messagebus
を有効化して実行する必要があります。サービスを起動します。#
systemctl start messagebus.service
- Compute サービスを使用するには、
libvirtd
サービスを有効化して実行する必要があります。#
systemctl start libvirtd.service
#
systemctl enable libvirtd.service
- API のインスタンスをホストする各システムで API サービスを起動します。各 API インスタンスは、Identity サービスのデータベースで定義された独自のエンドポイントが設定されているか、エンドポイントとしての機能を果たすロードバランサーによってポイントされる必要がある点に注意してください。サービスを起動してブート時に起動するように設定します。
#
systemctl start openstack-nova-api.service
#
systemctl enable openstack-nova-api.service
- スケジューラーのインスタンスをホストする各システムでスケジューラーを起動します。サービスを起動して、ブート時に起動するように設定します。
#
systemctl start openstack-nova-scheduler.service
#
systemctl enable openstack-nova-scheduler.service
- コンダクターのインスタンスをホストする各システムでコンダクターを起動します。コンピュートノードからデータベースへの直接のアクセスを制限することによるセキュリティー上のメリットがなくってしまうので、このサービスは、すべてのコンピュートノードでは実行しないことを推奨している点に注意してください。サービスを起動して、ブート時に起動するように設定します。
#
systemctl start openstack-nova-conductor.service
#
systemctl enable openstack-nova-conductor.service
- 仮想マシンインスタンスをホストする予定の全システムで Compute サービスを起動します。サービスを起動して、ブート時に起動するように設定します。
#
systemctl start openstack-nova-compute.service
#
systemctl enable openstack-nova-compute.service
- 環境設定によっては、以下のようなサービスも起動する必要がある場合があります。
openstack-nova-cert
- Compute サービスに対して EC2 API を使用する場合に必要とされる X509 証明書サービス
注記
Compute サービスに対して EC2 API を使用する場合は、nova.conf
設定ファイルでオプションを設定する必要があります。詳しい説明は、『Red Hat OpenStack Platform Configuration Reference Guide』の「Configuring the EC2 API」の項を参照してください。このガイドは以下のリンクから入手できます。 openstack-nova-network
- Nova ネットワーキングサービス。OpenStack Networking がインストール/設定済みの場合、またはこれからインストール/設定する予定の場合には、このサービスは起動してはならない点に注意してください。
openstack-nova-objectstore
- Nova オブジェクトストレージサービス。新規デプロイメントには、Object Storage サービス (Swift) の使用が推奨されます。
Comments