このエントリーをはてなブックマークに追加

8.3.3. Cloud compute (Nova)のインストール

Novaはサブコンポーネントがいくつもありそれら全てをあわせてNovaと呼びます。

8.3.3.1. リポジトリの追加

Ubuntu12.04の標準リポジトリのOpenStackはEssexですがFolsomを利用したいのでリポジトリを追加します。
$ sudo echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main " \
  >> /etc/apt/sources.list.d/folsom.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA
$ sudo apt-get update

8.3.3.2. Novaのインストール

CentOSとは違いパッケージがサブコンポーネント毎に明確に分かれています。
Computeノードに必要なものだけインストールします。
# apt-get install -y nova-api nova-compute nova-compute-kvm nova-network python-keystone

8.3.3.3. Novaの設定

vncserver_listen
設定するファイルは nova.conf api-paste.ini の2つです。
要件にあったものを設定する必要はありますがまずは動作するものをまずは設定しましょう。
設定項目に関しては後で記述していますので環境にあった設定を模索してみて下さい。
以下の記述は変数にしていますので実際には環境にあったものを設定して下さい。

8.3.3.3.1. コンフィグのバックアップ

$ cp -a /etc/nova /etc/nova_bak

8.3.3.3.2. nova.confの設定

適宜IPアドレスなどは環境にあったものに変更してください。
vncserver_proxyclient_address vncserver_listen の2つはコンピュートノードのアドレスに設定する必要があります。
オールインワンではコントローラーノードと同じアドレスで問題無いですがマルチノード化する際は注意してください。
あと、バグなのか memcached_servers の設定を行うとnoVNCを利用することができませんので注意して下さい。
# vi /etc/nova/nova.conf

[DEFAULT]
#verbose=True
allow_admin_api=True
api_paste_config=/etc/nova/api-paste.ini
instances_path=/var/lib/nova/instances
connection_type=libvirt
rootwrap_config=/etc/nova/rootwrap.conf
multi_host=True
send_arp_for_ha=True
ec2_private_dns_show_ip=True

#behavior of an instance of when the host has been started
start_guests_on_host_boot=True
resume_guests_state_on_host_boot=True

#logging and other administrative
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova

#network
libvirt_use_virtio_for_bridges = True
network_manager=nova.network.manager.FlatDHCPManager
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
public_interface=br100
flat_interface=eth0
flat_network_bridge=br100
fixed_range=10.0.0.0/24
flat_network_dhcp_start=10.0.0.2
network_size=255
force_dhcp_release = True
flat_injected=false
use_ipv6=false

#firewall
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

#vnc
novncproxy_base_url=http://192.168.10.50:6080/vnc_auto.html
xvpvncproxy_base_url=http://192.168.10.50:6081/console
#vnc compute node ip override
vncserver_proxyclient_address=192.168.10.51
vncserver_listen=192.168.10.51
vnc_keymap=ja

#scheduler
scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler

#object
s3_host=stack01
use_cow_images=yes

#glance
image_service=nova.image.glance.GlanceImageService
glance_api_servers=stack01:9292

#rabbit
rabbit_host=stack01
rabbit_virtual_host=/nova
rabbit_userid=nova
rabbit_password=password

#nova database
sql_connection=mysql://nova:password@stack01/nova

#use cinder
enabled_apis=ec2,osapi_compute,metadata
volume_api_class=nova.volume.cinder.API

#keystone
auth_strategy=keystone
keystone_ec2_url=http://stack01:5000/v2.0/ec2tokens

#memcache
#memcached_servers=stack01:11211

8.3.3.3.3. api-paste.iniの設定

Keystone連携を行うための設定を行います。
[filter:authtoken]の項目を変更します。
# vi /etc/nova/api-paste.ini

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
auth_host = stack01
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = password
signing_dirname = /tmp/keystone-signing-nova

8.3.3.4. プロセスの起動

Computeノードで起動するプロセスはapi,network,computeの3つです。
apiは必要なさそうなのですが。
$ for proc in api compute network
do
  sudo service nova-$proc stop
  sudo service nova-$proc start
done

8.3.3.4.1. プロセスの確認

Controllerノードで確認します。
以下のようにプロセスが起動していれば問題ありません。
$ sudo nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-cert        stack01                              nova             enabled    :-)   2012-10-30 06:42:01
nova-consoleauth stack01                              nova             enabled    :-)   2012-10-30 06:42:03
nova-scheduler   stack01                              nova             enabled    :-)   2012-10-30 06:42:10
nova-compute     stack01                              nova             enabled    :-)   2012-10-30 06:42:10
nova-network     stack01                              nova             enabled    :-)   2012-10-30 06:42:01
nova-console     stack01                              nova             enabled    :-)   2012-10-30 06:42:02
nova-compute     stack02                              nova             enabled    :-)   2012-10-30 06:42:05
nova-network     stack02                              nova             enabled    :-)   2012-10-30 06:42:05
Novaのインストールは以上です。リソースが足りなければどんどんコンピュートノードを追加していきます。
あとはスケジューラの設定で仮想マシンが適切なComputeノードで起動します。
また、一度もインスタンスを起動していないノードであればブリッジインターフェースがありません。
その場合は内部IPでは接続できませんので注意してください。