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

1.2.1. OSのインストール

コンピュートノードの追加を行います。
基板となるOSは、Ubuntu13.04を利用します。
IPアドレスなどは自分の環境にあわせてください。
コントローラーノードのローカルHDDをブロックストレージ用に利用する場合はOSインストール時に論理ボリュームでcinder-volumesを作成しておきましょう。
後からイメージをCinderに利用することも可能ですが少し面倒なので先に用意しておいたほうが良いです。
インストールはSSH Serverを選択しておけば問題ありません。他に必要なものは後からインストールを行います。
また、インストール後はホスト名、IPアドレスの固定化を行って置きましょう。

1.2.2. OS設定

OpenStackをインストールする前にOSを最新にしておきます。
$ sudo apt-get update -y
$ sudo apt-get upgrade -y
$ sudo apt-get dist-upgrade -y

1.2.2.1. IPアドレスの固定化

ブリッジの設定は Openstack がよろしくやってくれますのでIPアドレスの固定化だけおこなっておきます。
Quantumを利用する場合、コンピュートノードは最低限1枚で問題ありません。
その場合はマネージメント用のポート及び仮想マシン間用のポートを同じNICで利用します。
$ sudo vi /etc/network/interfaces
auto eth0
#iface eth0 inet dhcp

iface eth0 inet static
       address 192.168.10.51
       netmask 255.255.255.0
       network 192.168.10.0
       broadcast 192.168.10.255
       gateway 192.168.10.1
       dns-nameservers 192.168.10.1

1.2.2.2. HOSTSの設定

Ipv6部分は必要ないので削除もしくはコメントアウトしておきます。
特に問題なければ全ノードのホスト名を先に記述しておきます。
$ sudo vi /etc/hosts
127.0.0.1       localhost
#127.0.1.1      stack01

# The following lines are desirable for IPv6 capable hosts
#::1     ip6-localhost ip6-loopback
#fe00::0 ip6-localnet
#ff00::0 ip6-mcastprefix
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

192.168.10.50   stack01
192.168.10.51   stack02

1.2.2.3. カーネルの設定

IPフォワードの有効化、Ipv6の無効化を行います。
$ sudo sh -c "echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf"
$ sudo sh -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo sh -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p

1.2.2.4. パッケージのインストール

NTPのインストール、ブリッジとVLANのパッケージをインストールします。

$ sudo apt-get install ntp -y
$ sudo apt-get install vlan bridge-utils

1.2.3. OpenVswitch

Quantum(Neutron)をインストールする前の準備としてOSSの仮想ソフトウェアスイッチであるOpenVswitchをインストールします。

1.2.3.1. OpenVswitchのインストール

$ sudo apt-get install openvswitch-switch openvswitch-datapath-dkms -y

1.2.3.2. ブリッジの作成

Quantumが利用するブリッジを作成します。
br-intは仮想マシン間をGREやVLANが利用します。
$ sudo ovs-vsctl --no-wait -- --may-exist add-br br-int

設定後の確認をしておきます。

$ sudo ovs-vsctl show

1.2.4. Quantum

L2接続のためのOpenVswitchプラグインだけ設定します。

1.2.4.1. Quantumのインストール

$ sudo apt-get install quantum-plugin-openvswitch-agent -y

1.2.4.2. Quantumの設定

$ sudo cp -a  /etc/quantum /etc/quantum_bak
まず、L2用のプラグインは色々利用可能ですがここではOpenVswitchを利用しますのでOpenVswitch用の設定を行います。
仮想マシン間の通信はGREを利用します。
local_ipにはコンピュートノードがネットワークノードと通信する際に利用するNICのIPを指定してください。
$ NOVA_COMPUTE_IP=192.168.10.51
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ cat << QUANTUM_OVS | sudo tee /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini > /dev/null
[DATABASE]
sql_connection = mysql://quantum:$MYSQL_PASS_QUANTUM@$NOVA_CONTOLLER_HOSTNAME/ovs_quantum?charset=utf8
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = $NOVA_COMPUTE_IP
enable_tunneling = True
[SECURITYGROUP]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
QUANTUM_OVS
もQuantumがのKeystoneへ接続するための設定を行います。
プラグイン、RabbitMQへの接続設定も行います。
$ NOVA_CONTOLLER_IP=192.168.10.50
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ SERVICE_PASSWORD=secrete
$ RABBIT_PASS=password
$ cat << QUANTUM_SERVER | sudo tee /etc/quantum/quantum.conf > /dev/null
[DEFAULT]
lock_path = \$state_path/lock
bind_host = 0.0.0.0
bind_port = 9696
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
api_paste_config = /etc/quantum/api-paste.ini
control_exchange = quantum
rpc_backend = quantum.openstack.common.rpc.impl_kombu
rabbit_host=$NOVA_CONTOLLER_IP
rabbit_userid=nova
rabbit_password=$RABBIT_PASS
rabbit_virtual_host=/nova
notification_driver = quantum.openstack.common.notifier.rpc_notifier
default_notification_level = INFO
notification_topics = notifications
[QUOTAS]
[DEFAULT_SERVICETYPE]
[AGENT]
root_helper = sudo quantum-rootwrap /etc/quantum/rootwrap.conf
[keystone_authtoken]
auth_host = $NOVA_CONTOLLER_HOSTNAME
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = quantum
admin_password = $SERVICE_PASSWORD
signing_dir = /var/lib/quantum/keystone-signing
QUANTUM_SERVER

1.2.4.3. Quantumのプロセス起動

$ sudo \rm -rf /var/log/quantum/*
$ for i in plugin-openvswitch-agent
do
  sudo stop quantum-$i ; sudo start quantum-$i
done

1.2.5. Nova

コンピュートノードではNova Computeだけインストールします。

1.2.5.1. Novaのインストール

$ sudo apt-get install -y nova-compute
仮想マシンを利用するための設定を行います。
仮想マシンが起動しない場合はCPUの設定を入れたら起動するかもしれません。
$ sudo cp -a /etc/nova /etc/nova_bak
$ cat << NOVA_COMPUTE_SETUP | sudo tee /etc/nova/nova-compute.conf
[DEFAULT]
libvirt_type=kvm
libvirt_ovs_bridge=br-int
libvirt_vif_type=ethernet
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
libvirt_use_virtio_for_bridges=True
#libvirt_cpu_mode=none
NOVA_COMPUTE_SETUP
NovaがKeystoneへ接続するための設定を行います。
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ SERVICE_PASSWORD=secrete
$ sudo sed -i "s#127.0.0.1#$NOVA_CONTOLLER_HOSTNAME#" /etc/nova/api-paste.ini
$ sudo sed -i "s#%SERVICE_TENANT_NAME%#service#" /etc/nova/api-paste.ini
$ sudo sed -i "s#%SERVICE_USER%#nova#" /etc/nova/api-paste.ini
$ sudo sed -i "s#%SERVICE_PASSWORD%#$SERVICE_PASSWORD#" /etc/nova/api-paste.ini

Novaを利用するための設定を行います。

$ NOVA_CONTOLLER_HOSTNAME=stack01
$ MYSQL_PASS_NOVA=password
$ NOVA_CONTOLLER_IP=192.168.10.50
$ NOVA_COMPUTE_IP=192.168.10.51
$ cat << NOVA_SETUP | sudo tee /etc/nova/nova.conf > /dev/null
[DEFAULT]
my_ip=$NOVA_COMPUTE_IP
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/run/lock/nova
verbose=True
api_paste_config=/etc/nova/api-paste.ini
scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
rabbit_host=$NOVA_CONTOLLER_HOSTNAME
rabbit_virtual_host=/nova
rabbit_userid=nova
rabbit_password=$RABBIT_PASS
nova_url=http://$NOVA_CONTOLLER_IP:8774/v1.1/
sql_connection=mysql://nova:$MYSQL_PASS_NOVA@$NOVA_CONTOLLER_HOSTNAME/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf

#auth
use_deprecated_auth=false
auth_strategy=keystone

#glance
glance_api_servers=$NOVA_CONTOLLER_HOSTNAME:9292
image_service=nova.image.glance.GlanceImageService

#vnc
novnc_enabled=true
novncproxy_base_url=http://$NOVA_CONTOLLER_IP:6080/vnc_auto.html
novncproxy_port=6080
vncserver_proxyclient_address=\$my_ip
vncserver_listen=0.0.0.0
vnc_keymap=ja

#quantum
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://$NOVA_CONTOLLER_IP:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=$SERVICE_PASSWORD
quantum_admin_auth_url=http://$NOVA_CONTOLLER_IP:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
security_group_api=quantum

#metadata
service_quantum_metadata_proxy=True
quantum_metadata_proxy_shared_secret=stack

#compute
compute_driver=libvirt.LibvirtDriver

#cinder
volume_api_class=nova.volume.cinder.API
osapi_volume_listen_port=5900
NOVA_SETUP

1.2.5.2. プロセスの再起動

$ sudo \rm -rf /var/log/nova/*
$ for proc in roc in compute
do
  sudo service nova-$proc stop
  sudo service nova-$proc start
done

1.2.6. KVM

OpenStackがNovaで利用する仮想基板はKVMだけでなくVmware HyperV Xenserver LXCなど他にもありますが色々利用可能です。
KVMを利用するためKVMをインストールして設定します。

1.2.6.1. KVMの設定

QemuがTAPデバイスを利用できるための設定を行います。
$ sudo apt-get install -y kvm libvirt-bin pm-utils

$ cat << CGROUP | sudo tee -a /etc/libvirt/qemu.conf > /dev/null
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"
]
CGROUP

基本的に必要ないはずなのでlibvirtが利用するNAT設定を削除しておきます。

$ sudo virsh net-destroy default
$ sudo virsh net-undefine default
ライブマイグレーションを行う必要があるのであればそのための設定が必要です。
行わない場合に設定しても問題にはなりません。
$ sudo cp -a /etc/libvirt/libvirtd.conf /etc/libvirt/libvirtd.conf_orig
$ sudo sed -i 's@#listen_tls = 0@listen_tls = 0@' /etc/libvirt/libvirtd.conf
$ sudo sed -i 's@#listen_tcp = 1@listen_tcp = 1@' /etc/libvirt/libvirtd.conf
$ sudo sed -i 's@#auth_tcp = "sasl"@auth_tcp = "none"@' /etc/libvirt/libvirtd.conf
$ sudo cp -a /etc/init/libvirt-bin.conf /etc/init/libvirt-bin.conf_orig
$ sudo sed -i 's@env libvirtd_opts="-d"@env libvirtd_opts="-d -l"@' /etc/init/libvirt-bin.conf
$ sudo cp -a /etc/default/libvirt-bin /etc/default/libvirt-bin_orig
$ sudo sed -i 's@libvirtd_opts="-d"@libvirtd_opts="-d -l"@' /etc/default/libvirt-bin
$ sudo service libvirt-bin restart
以上でコンピュートノードのインストールは終了です。
OpenStackの利用を引き続き行ってください。