LoginSignup
3

More than 5 years have passed since last update.

VirtualBoxで作成したCentOSにOpenStackを構築する(Compute編)

Last updated at Posted at 2016-02-05

環境編
Identity編
Image編
の続きです。

公式ドキュメントに従ってやっていきます。

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

インストールと設定@コンピュートノード

  • インストール
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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3