fbpx

CloudStackを使ってみよう[1]

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

CloudStack 3.0.3のインストール

本項ではCloudStack 3.0.3をハイパーバイザとしてKVMを選択し、2台のCentOS 6.2 (x86_64)上にインストールした際の手順を記載します。インストールドキュメントは Installing CloudStack にある

を参照してください。なお、日本語ドキュメントは英語ドキュメントに比べて版が古いため、基本的に英語ドキュメントに従ってインストールを進めてください。

ハードウェアの準備

本項では2台のマシンでCloudStack環境を構築します。今回は以下の構成のマシンを2台準備しました。

CPU
Intel Core i5-3570K
MEM
DDR3 SDRAM PC3-12800 4GB x4
HDD
500GB 7200rpm

仮想化支援技術であるIntel VTを備えたCPU、メモリは合計して16GBと多めに搭載します。HDDは本格的にCloudStackを運用するのであれば、より多くの領域が必要となります。

OSのインストール

CentOS 6.2 (x86_64)をMinimal (最小構成)でインストールします。詳細な手順は省略します。以降、1台目を「管理サーバ」、2台目を「ホスト」と呼称します。ホストはコンピューティングノードとも呼ばれます。また、以下のように設定を行います。

サーバ IPアドレス ホスト名 rootパスワード
管理サーバ 192.168.24.110 cs-manager.example.jp csmanager1234
ホスト 192.168.24.111 cs-host.example.jp cshost1234

管理サーバのインストール

管理サーバには、CloudStack管理サーバ、MySQLデータベース、NFSストレージとしての役割を持たせます。

まず、ホスト名を設定します。

[root@cs-manager ~]# cp -a /etc/hosts /etc/hosts.2012-0620
[root@cs-manager ~]# vi /etc/hosts
[root@cs-manager ~]# diff -u /etc/hosts.2012-0620 /etc/hosts
--- /etc/hosts.2012-0620        2010-01-12 22:28:22.000000000 +0900
+++ /etc/hosts  2012-06-20 23:35:44.983518114 +0900
@@ -1,2 +1,7 @@
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
+
+# 2012/06/20
+192.168.24.110 cs-manager.example.jp cs-manager
+192.168.24.111 cs-host.example.jp    cs-host
+#
[root@cs-manager ~]#

FQDNを確認します。ホスト名はFQDNでなければいけないので、忘れず確認してください。

[root@cs-manager ~]# hostname --fqdn
cs-manager.example.jp
[root@cs-manager ~]# hostname
cs-manager.example.jp
[root@cs-manager ~]#

SELinuxを無効にします。

[root@cs-manager ~]# cp -a /etc/selinux/config /etc/selinux/config.2012-0620
[root@cs-manager ~]# vi /etc/selinux/config
[root@cs-manager ~]# diff -u /etc/selinux/config.2012-0620 /etc/selinux/config
--- /etc/selinux/config.2012-0620       2012-06-20 09:06:02.007403145 +0900
+++ /etc/selinux/config 2012-06-20 23:06:10.369516061 +0900
@@ -4,7 +4,10 @@
 #     enforcing - SELinux security policy is enforced.
 #     permissive - SELinux prints warnings instead of enforcing.
 #     disabled - No SELinux policy is loaded.
-SELINUX=enforcing
+# 2012/06/20
+#SELINUX=enforcing
+SELINUX=permissive
+#
 # SELINUXTYPE= can take one of these two values:
 #     targeted - Targeted processes are protected,
 #     mls - Multi Level Security protection.
[root@cs-manager ~]#
[root@cs-manager ~]# setenforce permissive
[root@cs-manager ~]#

CloudStack管理サーバのインストールを行います。
質問には「M」とタイプします。途中ではyumを利用してパッケージのインストールが行われます。

[root@cs-manager ~]# tar xfz CloudStack-3.0.3-1-rhel6.2.tar.gz
[root@cs-manager ~]# cd CloudStack-3.0.3-1-rhel6.2
[root@cs-manager CloudStack-3.0.3-1-rhel6.2]# ./install.sh
Setting up the temporary repository...
Cleaning Yum cache...
Loaded plugins: fastestmirror
Cleaning repos: base cloud-temp extras updates
6 metadata files removed
Welcome to the CloudStack Installer.  What would you like to do?

        NOTE:   For installing KVM agent, please setup EPEL yum repo first;
                For installing CloudStack on RHEL6.x, please setup distribution yum repo either from ISO or from your registeration account.

    M) Install the Management Server
    A) Install the Agent
    B) Install BareMetal Agent
    S) Install the Usage Monitor
    D) Install the database server (from distribution's repo)
    L) Install the MySQL 5.1.58 (only for CentOS5.x, Rhel6.x naturally has higher version MySql)
    Q) Quit
 > M ←★
Installing the Management Server...
        :
        :
        :
Total download size: 248 M
Installed size: 586 M
Is this ok [y/N]: y ←★
        :
        :
        :
Complete!
Done
[root@cs-manager CloudStack-3.0.3-1-rhel6.2]#

必須サービスを有効にし、起動します。

[root@cs-manager ~]# chkconfig rpcbind on
[root@cs-manager ~]# chkconfig nfs on
[root@cs-manager ~]# 

[root@cs-manager ~]# service rpcbind start
rpcbind を起動中:                                          [  OK  ]
[root@cs-manager ~]# service nfs start
NFS サービスを起動中:                                      [  OK  ]
NFS mountd を起動中:                                       [  OK  ]
RPC idmapd を起動中:                                       [  OK  ]
NFS デーモンを起動中:                                      [  OK  ]
[root@cs-manager ~]#

MySQLのインストールとセットアップを行います。
質問には「D」とタイプします。途中ではyumを利用してパッケージのインストールが行われます。

[root@cs-manager CloudStack-3.0.3-1-rhel6.2]# ./install.sh
Setting up the temporary repository...
Cleaning Yum cache...
Loaded plugins: fastestmirror
Cleaning repos: base cloud-temp extras updates
7 metadata files removed
Welcome to the CloudStack Installer.  What would you like to do?

        NOTE:   For installing KVM agent, please setup EPEL yum repo first;
                For installing CloudStack on RHEL6.x, please setup distribution yum repo either from ISO or from your registeration account.

    A) Install the Agent
    B) Install BareMetal Agent
    S) Install the Usage Monitor
    D) Install the database server (from distribution's repo)
    U) Upgrade the CloudStack packages installed on this computer
    R) Stop any running CloudStack services and remove the CloudStack packages from this computer
    L) Install the MySQL 5.1.58 (only for CentOS5.x, Rhel6.x naturally has higher version MySql)
    Q) Quit
 > D ←★
Installing the MySQL server...
        :
        :
        :
Total download size: 9.8 M
Installed size: 28 M
Is this ok [y/N]: y ←★
        :
        :
        :
mysqld を起動中:                                           [  OK  ]
Done
[root@cs-manager CloudStack-3.0.3-1-rhel6.2]#

/etc/my.cnfを設定します。

[root@cs-manager ~]# cp -a /etc/my.cnf /etc/my.cnf.2012-0620
[root@cs-manager ~]# vi /etc/my.cnf
[root@cs-manager ~]# diff -u /etc/my.cnf.2012-0620 /etc/my.cnf
--- /etc/my.cnf.2012-0620       2012-02-09 06:39:38.000000000 +0900
+++ /etc/my.cnf 2012-06-20 23:27:07.335518049 +0900
@@ -4,6 +4,13 @@
 user=mysql
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
+# 2012/06/20 add
+innodb_rollback_on_timeout=1
+innodb_lock_wait_timeout=600
+max_connections=350
+log-bin=mysql-bin
+binlog-format = 'ROW'
+#

 [mysqld_safe]
 log-error=/var/log/mysqld.log
[root@cs-manager ~]#

MySQLを再起動し、設定を反映します。

[root@cs-manager ~]# service mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]
[root@cs-manager ~]#

MySQLのrootパスワードを設定します。

[root@cs-manager ~]# mysql -u root
        :
mysql> SET PASSWORD = PASSWORD('myroot1234');
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root@cs-manager ~]#

CloudStack用にMySQLを設定します。これには少し時間がかかります。
MySQLユーザ「cloud」のパスワードを「myuser1234」とします。また、実行にはMySQLのrootユーザを用います。

[root@cs-manager ~]# cloud-setup-databases cloud:myuser1234@localhost --deploy-as=root:myroot1234
Mysql user name:cloud                                                           [ OK ]
Mysql user password:myuser1234                                                  [ OK ]
Mysql server ip:localhost                                                       [ OK ]
Mysql server port:3306                                                          [ OK ]
Mysql root user name:root                                                       [ OK ]
Mysql root user password:myroot1234                                             [ OK ]
Checking Cloud database files ...                                               [ OK ]
Checking local machine hostname ...                                             [ OK ]
Checking SELinux setup ...                                                      [ OK ]
Detected local IP address as 192.168.24.110, will use as cluster management server node IP[ OK ]
Preparing /etc/cloud/management/db.properties                                   [ OK ]
Applying /usr/share/cloud/setup/create-database.sql                             [ OK ]
Applying /usr/share/cloud/setup/create-schema.sql                               [ OK ]
Applying /usr/share/cloud/setup/create-database-premium.sql                     [ OK ]
Applying /usr/share/cloud/setup/create-schema-premium.sql                       [ OK ]
Applying /usr/share/cloud/setup/server-setup.sql                                [ OK ]
Applying /usr/share/cloud/setup/templates.sql                                   [ OK ]
Applying /usr/share/cloud/setup/create-index-fk.sql                             [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_db.sql                    [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_schema.sql                [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_multipart.sql             [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_index.sql                 [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_multipart_alter.sql       [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_bucketpolicy.sql          [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_policy_alter.sql          [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_offering.sql              [ OK ]
Applying /usr/share/cloud/setup/bridge/db/cloudbridge_offering_alter.sql        [ OK ]
Processing encryption ...                                                       [ OK ]
Finalizing setup ...                                                            [ OK ]

CloudStack has successfully initialized database, you can check your database configuration in /etc/cloud/management/db.properties

[root@cs-manager ~]#

管理サーバの構成と起動を行います。

[root@cs-manager ~]# cloud-setup-management
Starting to configure CloudStack Management Server:
Configure sudoers ...         [OK]
Configure Firewall ...        [OK]
Configure CloudStack Management Server ...[OK]
CloudStack Management Server setup is Done!
[root@cs-manager ~]#

ストレージ用のNFS共有を準備します。

[root@cs-manager ~]# mkdir -p /export/primary
[root@cs-manager ~]# mkdir -p /export/secondary
[root@cs-manager ~]#
[root@cs-manager ~]# cp -a /etc/exports /etc/exports.2012-0620
[root@cs-manager ~]# vi /etc/exports
[root@cs-manager ~]# diff -u /etc/exports.2012-0620 /etc/exports
--- /etc/exports.2012-0620      2010-01-12 22:28:22.000000000 +0900
+++ /etc/exports        2012-06-20 23:45:34.351518204 +0900
@@ -0,0 +1,3 @@
+# 2012/06/20 add
+/export *(rw,async,no_root_squash)
+#
[root@cs-manager ~]#
[root@cs-manager ~]# exportfs -a
[root@cs-manager ~]#

NFSの設定を変更します。主に利用するポートの固定です。

[root@cs-manager ~]# cp -a /etc/sysconfig/nfs /etc/sysconfig/nfs.2012-0620
[root@cs-manager ~]# vi /etc/sysconfig/nfs
[root@cs-manager ~]# diff -u /etc/sysconfig/nfs.2012-0620 /etc/sysconfig/nfs
--- /etc/sysconfig/nfs.2012-0620        2012-05-21 17:38:53.000000000 +0900
+++ /etc/sysconfig/nfs  2012-06-20 23:49:02.344518134 +0900
@@ -9,7 +9,9 @@
 # Path to remote quota server. See rquotad(8)
 #RQUOTAD="/usr/sbin/rpc.rquotad"
 # Port rquotad should listen on.
-#RQUOTAD_PORT=875
+# 2012/06/20 start
+RQUOTAD_PORT=875
+#
 # Optinal options passed to rquotad
 #RPCRQUOTADOPTS=""
 #
@@ -17,9 +19,13 @@
 # Optional arguments passed to in-kernel lockd
 #LOCKDARG=
 # TCP port rpc.lockd should listen on.
-#LOCKD_TCPPORT=32803
+# 2012/06/20 start
+LOCKD_TCPPORT=32803
+#
 # UDP port rpc.lockd should listen on.
-#LOCKD_UDPPORT=32769
+# 2012/06/20 start
+LOCKD_UDPPORT=32769
+#
 #
 #
 # Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
@@ -40,16 +46,22 @@
 # Optional arguments passed to rpc.mountd. See rpc.mountd(8)
 #RPCMOUNTDOPTS=""
 # Port rpc.mountd should listen on.
-#MOUNTD_PORT=892
+# 2012/06/20 start
+MOUNTD_PORT=892
+#
 #
 #
 # Optional arguments passed to rpc.statd. See rpc.statd(8)
 #STATDARG=""
 # Port rpc.statd should listen on.
-#STATD_PORT=662
+# 2012/06/20 start
+STATD_PORT=662
+#
 # Outgoing port statd should used. The default is port
 # is random
-#STATD_OUTGOING_PORT=2020
+# 2012/06/20 start
+STATD_OUTGOING_PORT=2020
+#
 # Specify callout program
 #STATD_HA_CALLOUT="/usr/local/bin/foo"
 #
[root@cs-manager ~]#

iptablesの設定を変更します。NFS用に固定したポートを許可します。

[root@cs-manager ~]# cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.2012-0620
[root@cs-manager ~]# vi /etc/sysconfig/iptables
[root@cs-manager ~]# diff -u /etc/sysconfig/iptables.2012-0620 /etc/sysconfig/iptables
--- /etc/sysconfig/iptables.2012-0620   2012-06-20 23:41:04.948514618 +0900
+++ /etc/sysconfig/iptables     2012-06-20 23:54:25.869518127 +0900
@@ -3,6 +3,17 @@
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
+-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
+-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
+-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
+-A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
+-A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
+-A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
 -A INPUT -p tcp -m tcp --dport 9090 -j ACCEPT
 -A INPUT -p tcp -m tcp --dport 8250 -j ACCEPT
 -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[root@cs-manager ~]#

NFSv4を設定します。設定したFQDNのドメイン部分を記載します。

[root@cs-manager ~]# cp -a /etc/idmapd.conf /etc/idmapd.conf.2012-0620
[root@cs-manager ~]# vi /etc/idmapd.conf
[root@cs-manager ~]# diff -u /etc/idmapd.conf.2012-0620 /etc/idmapd.conf
--- /etc/idmapd.conf.2012-0620  2011-12-08 05:02:21.000000000 +0900
+++ /etc/idmapd.conf    2012-06-20 23:55:59.398518190 +0900
@@ -3,6 +3,9 @@
 # The following should be set to the local NFSv4 domain name
 # The default is the host's DNS domain name.
 #Domain = local.domain.edu
+# 2012/06/20 add
+Domain = example.jp
+#

 # The following is a comma-separated list of Kerberos realm
 # names that should be considered to be equivalent to the
[root@cs-manager ~]#

ここで一旦、マシンを再起動します。
マシンが起動してきたら、システムVMのテンプレートを準備します。
ハイパーバイザにはKVMを使うので、KVM用のテンプレートを使用します。XenServer用とファイル名がまぎらわしいので注意してください。

[root@cs-manager ~]# /usr/lib64/cloud/agent/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
	:
	:
	:
Uncompressing to /usr/lib64/cloud/agent/scripts/storage/secondary/af03ad24-b815-43f2-9369-ca6ebb79a87b.qcow2.tmp (type bz2)...could take a long time
Moving to /export/secondary/template/tmpl/1/3///af03ad24-b815-43f2-9369-ca6ebb79a87b.qcow2...could take a while
Successfully installed system VM template  to /export/secondary/template/tmpl/1/3/
[root@cs-manager ~]#

以上で管理サーバのインストールは完了です。

ホストのインストール

まず、ホスト名を設定します。

[root@cs-host ~]# cp -a /etc/hosts /etc/hosts.2012-0620
[root@cs-host ~]# vi /etc/hosts
[root@cs-host ~]# diff -u /etc/hosts.2012-0620 /etc/hosts
--- /etc/hosts.2012-0620        2010-01-12 22:28:22.000000000 +0900
+++ /etc/hosts  2012-06-21 01:12:21.379194398 +0900
@@ -1,2 +1,7 @@
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
+
+# 2012/06/20
+192.168.24.110 cs-manager.example.jp cs-manager
+192.168.24.111 cs-host.example.jp    cs-host
+#
[root@cs-host ~]#

FQDNを確認します。ホスト名はFQDNでなければいけないので、忘れず確認してください。

[root@cs-host ~]# hostname --fqdn
cs-host.example.jp
[root@cs-host ~]# hostname
cs-host.example.jp
[root@cs-host ~]#

qemuやkvmがインストールされていないことを確認します。CloudStackが提供しているパッケージをインストールするためです。

[root@cs-host ~]# rpm -qa | grep -i qemu
[root@cs-host ~]# rpm -qa | grep -i kvm
[root@cs-host ~]#

EPELレポジトリを設定します。

[root@cs-host ~]# rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-7.noarch.rpm
http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-7.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.yDqxXJ: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
[root@cs-host ~]#

CloudStackエージェントのインストールを行います。
質問には「A」とタイプします。途中ではyumを利用してパッケージのインストールが行われます。

[root@cs-host ~]# tar xfz CloudStack-3.0.3-1-rhel6.2.tar.gz
[root@cs-host ~]# cd CloudStack-3.0.3-1-rhel6.2
[root@cs-host CloudStack-3.0.3-1-rhel6.2]# ./install.sh
Setting up the temporary repository...
Cleaning Yum cache...
Loaded plugins: fastestmirror
Cleaning repos: base cloud-temp extras updates
6 metadata files removed
Welcome to the CloudStack Installer.  What would you like to do?

        NOTE:   For installing KVM agent, please setup EPEL yum repo first;
                For installing CloudStack on RHEL6.x, please setup distribution yum repo either from ISO or from your registeration account.

    M) Install the Management Server
    A) Install the Agent
    B) Install BareMetal Agent
    S) Install the Usage Monitor
    D) Install the database server (from distribution's repo)
    L) Install the MySQL 5.1.58 (only for CentOS5.x, Rhel6.x naturally has higher version MySql)
    Q) Quit
 > A ←★
Installing the Agent...
        :
        :
        :
Total download size: 131 M
Installed size: 317 M
Is this ok [y/N]: y ←★
        :
        :
        :
Agent installation is completed, please add the host from management server
Done
[root@cs-host CloudStack-3.0.3-1-rhel6.2]#

必須サービスを有効にし、起動します。

[root@cs-host ~]# chkconfig rpcbind on
[root@cs-host ~]# chkconfig nfs on
[root@cs-host ~]# 

[root@cs-host ~]# service rpcbind start
rpcbind を起動中:                                          [  OK  ]
[root@cs-host ~]# service nfs start
NFS サービスを起動中:                                      [  OK  ]
NFS mountd を起動中:                                       [  OK  ]
RPC idmapd を起動中:                                       [  OK  ]
NFS デーモンを起動中:                                      [  OK  ]
[root@cs-host ~]#

VNC接続を許可します。

[root@cs-host ~]# cp -a /etc/libvirt/qemu.conf /etc/libvirt/qemu.conf.2012-0620
[root@cs-host ~]# vi /etc/libvirt/qemu.conf
[root@cs-host ~]# diff -u /etc/libvirt/qemu.conf.2012-0620 /etc/libvirt/qemu.conf
--- /etc/libvirt/qemu.conf.2012-0620    2012-06-13 18:39:07.000000000 +0900
+++ /etc/libvirt/qemu.conf      2012-06-21 01:23:16.165194390 +0900
@@ -9,7 +9,9 @@
 # NB, strong recommendation to enable TLS + x509 certificate
 # verification when allowing public access
 #
-# vnc_listen = "0.0.0.0"
+# 2012/06/20 start
+vnc_listen = "0.0.0.0"
+#

 # Enable this option to have VNC served over an automatically created
 # unix socket. This prevents unprivileged access from users on the
[root@cs-host ~]#
[root@cs-host ~]# /etc/init.d/libvirtd restart
libvirtd デーモンを停止中:                                 [  OK  ]
libvirtd デーモンを起動中:                                 [  OK  ]
[root@cs-host ~]#

NFSv4を設定します。設定したFQDNのドメイン部分を記載します。

[root@cs-host ~]# cp -a /etc/idmapd.conf /etc/idmapd.conf.2012-0620
[root@cs-host ~]# vi /etc/idmapd.conf
[root@cs-host ~]# diff -u /etc/idmapd.conf.2012-0620 /etc/idmapd.conf
--- /etc/idmapd.conf.2012-0620  2011-12-08 05:02:21.000000000 +0900
+++ /etc/idmapd.conf    2012-06-21 01:24:39.733194400 +0900
@@ -3,6 +3,9 @@
 # The following should be set to the local NFSv4 domain name
 # The default is the host's DNS domain name.
 #Domain = local.domain.edu
+# 2012/06/20 add
+Domain = example.jp
+#

 # The following is a comma-separated list of Kerberos realm
 # names that should be considered to be equivalent to the
[root@cs-host ~]#

NFS接続が可能か確認します。

[root@cs-host ~]# mkdir /primarymount
[root@cs-host ~]# mount -t nfs 192.168.24.110:/export/primary /primarymount
[root@cs-host ~]# mkdir /secondarymount
[root@cs-host ~]# mount -t nfs 192.168.24.110:/export/secondary /secondarymount
[root@cs-host ~]#
[root@cs-host ~]# mount -t nfs
192.168.24.110:/export/primary on /primarymount type nfs (rw,vers=4,addr=192.168.24.110,clientaddr=192.168.24.111)
192.168.24.110:/export/secondary on /secondarymount type nfs (rw,vers=4,addr=192.168.24.110,clientaddr=192.168.24.111)
[root@cs-host ~]#
[root@cs-host ~]# umount /primarymount
[root@cs-host ~]# umount /secondarymount
[root@cs-host ~]#

NTPを設定します。

[root@cs-host ~]# yum install ntp
        :
Total download size: 501 k
Installed size: 1.2 M
Is this ok [y/N]: y ←★
        :
Complete!
[root@cs-host ~]#
[root@cs-host ~]# chkconfig ntpd on
[root@cs-host ~]# 

[root@cs-host ~]# service ntpd start
ntpd を起動中:                                             [  OK  ]
[root@cs-host ~]#

以上でホストのインストールは完了です。

CloudStackの初期セットアップ

管理サーバ http://192.168.24.110:8080/client/ にアクセスし、UIが表示されることを確認します。初期はユーザ名「admin」、パスワード「password」でログインできます。
ガイドが開始され、ライセンス契約が表示されるので、読んで【同意する】ボタンを押します。次に【基本インストールを続行する】ボタンを押し、基本インストールを開始します。

ゾーンの追加を行います。ゾーンとはCloudStack内の最大の組織単位で、単一のデータセンターに相当します。

名前
TestZone
DNS1
192.168.24.1
内部DNS1
192.168.24.1

とします。もちろん、192.168.24.1ではDNSサーバが起動している必要があります。

ポッドの追加を行います。ポットとはCloudStack内の2番目に大きな組織単位で、単一のラックに相当します。

名前
TestPod
ゲートウェイ
192.168.24.1
ネットマスク
255.255.255.0
IPアドレスの範囲
192.168.24.120 - 192.168.24.139

とします。もちろん、192.168.24.1がゲートウェイである必要があります。ネットマスクなども環境に合わせてください。

ゲストネットワークの追加を行います。

ゲートウェイ
192.168.24.1
ネットマスク
255.255.255.0
IPアドレスの範囲
192.168.24.160 - 192.168.24.179

クラスターの追加を行います。クラスターとはCloudStack内の3番目に大きな組織単位です。

ハイパーバイザー
KVM
名前
TestCluster

ホスト(コンピューティングノード)の追加を行います。管理サーバからrootでリモートログンして設定を行うため、rootのパスワードを入力します。

ホスト名
192.168.24.111
ユーザー名
root
パスワード
cshost1234

プライマリストレージの追加を行います。プライマリストレージとは、CloudStack上で動作する仮想サーバの仮想ディスクを保存するための領域です。

名前
TestStorage
プロトコル
NFS
サーバー
192.168.24.110
パス
/export/primary

セカンダリストレージの追加を行います。セカンダリストレージとは、仮想サーバ作成に使用するテンプレートやISOイメージを保存するための領域です。

サーバー
192.168.24.110
パス
/export/secondary

以上で入力は完了です。【起動】ボタンを押すことで、初期セットアップが行われ、CloudStackが起動します。

初期セットアップのトラブルシューティング

【起動】ボタンを押すと初期セットアップが行われますが、うまく動作しないことがあります。例えば、

Creating system VMs (this may take a while)

から先に進まなくなってしまうといった状態です。
このような状態になった場合、ホストにログインし、/var/log/cloud/agent/agent.log を参照してください。

libvir: Storage error : Storage pool not found: no pool with matching uuid
libvir: Storage error : Storage pool not found: no pool with matching uuid
libvir: QEMU error : Unable to create cgroup for v-2-VM: No such file or directory
libvir: Storage error : ストレージプールが見つかりません: 一致する uuid のプールはありません
libvir: Storage error : ストレージプールが見つかりません: 一致する uuid のプールはありません
libvir: QEMU error : Unable to create cgroup for v-2-VM: そのようなファイルやディレクトリはありません

のようなエラーが見られる場合、libvirtd の再起動を行い、続いて cloud-agent の再起動を行ってください。

[root@cs-host ~]# /etc/init.d/libvirtd stop
libvirtd デーモンを停止中:                                 [  OK  ]
[root@cs-host ~]# /etc/init.d/libvirtd start
libvirtd デーモンを起動中:                                 [  OK  ]
[root@cs-host ~]# /etc/init.d/cloud-agent stop
Stopping Cloud Agent:                                      [  OK  ]
[root@cs-host ~]# /etc/init.d/cloud-agent start
Starting Cloud Agent:                                      [  OK  ]
[root@cs-host ~]#

これにより、しばらく待つことで Creating system VMs (this may take a while) から先に進むようになるはずです。

その後、CloudStackのUIが表示されますが、「インフラストラクチャ」「システムVM」を確認してください。「Console Proxy VM」と「Secondary Storage VM」が「Running」にならないようであれば、正常に動作していない可能性があります。
このような状態になった場合、ホストにログインし、virsh list --allを実行してください。

[root@cs-host ~]# virsh list --all
 Id 名前               状態
----------------------------------
  3 v-2-VM               実行中
  4 s-4-VM               実行中

[root@cs-host ~]#

このように、2つのVMが「実行中」であるにも関わらず、CloudStackのUIで「Running」になっていないのであれば、まずcloud-agentを停止します。

[root@cs-host ~]# /etc/init.d/cloud-agent stop
Stopping Cloud Agent:                                      [  OK  ]
[root@cs-host ~]#

次に、両VMを停止します。

[root@cs-host ~]# virsh shutdown 3
ドメイン 3 をシャットダウンしています

[root@cs-host ~]# virsh shutdown 4
ドメイン 4 をシャットダウンしています

[root@cs-host ~]#
[root@cs-host ~]# virsh list --all
 Id 名前               状態
----------------------------------
  - s-4-VM               シャットオフ
  - v-2-VM               シャットオフ

[root@cs-host ~]#

libvirtdを再起動します。

[root@cs-host ~]# /etc/init.d/libvirtd stop
libvirtd デーモンを停止中:                                 [  OK  ]
[root@cs-host ~]# /etc/init.d/libvirtd start
libvirtd デーモンを起動中:                                 [  OK  ]
[root@cs-host ~]#

cloud-agentを起動します。

[root@cs-host ~]# /etc/init.d/cloud-agent start
Starting Cloud Agent:                                      [  OK  ]
[root@cs-host ~]#

このまましばらくすると、両VMは自動的に起動してきます。

[root@cs-host ~]# virsh list --all
 Id 名前               状態
----------------------------------
  1 v-2-VM               実行中
  2 s-4-VM               実行中

[root@cs-host ~]#

CloudStackのUIからも「Console Proxy VM」と「Secondary Storage VM」が「Running」になったことが確認できるはずです。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA