2012年6月13日水曜日

CloudStack 3.0.2 簡単導入 (7/31更新)

CloudStackが人気になって久しいけど、すぱっと導入しているページが無いので書いてみた。
ただ、クラウドが簡単に運用できるとは思わないほうがいいと思う。少なくとも本番運用には2セット(本番、検証環境)は必要。それを理解した上で構築することをおすすめする。
下手なベンダーに騙されるぐらいなら、自分で事前検証をすることをおすすめする。もし、ベンダーに頼むのであれば、間違いなく大手SIerに頼むべし!彼らの価格提示が高いのは、最初に大きく、正しく絵を描いているからだ。

さて、まずは構成図(物理構成)

あくまでも、こじんまりと最小限の環境で構築をするようにしている。
F/W・ルーターは、Buffaloなどの家庭用のでも検証は可能。ただし、インターネットへの接続は必ず必要。また、グローバルIPは、あっても無くても(ケーブルテレビ環境など)いい。また、ルーターでのDHCPは、無くても良い。

このCloudStackの構成をBasic Networkモードという。VLANは使わないが、CloudStack付属のファイアーウォールやロードバランサーは利用できない。

必要機材は、基本的にCloudStackの必要要件に準じるが
  • ルータ・ファイアーウォールやネットワークHUB(普通のSWITCH)
  • ストレージサーバ (NFSが利用できればなんでもいい)
  • CloudStack管理サーバ  
  • 計算機ノード(Intel VTあるいは、AMD-Vが利用できるマシン。メモリは4GBくらい必要)
 ストレージサーバは、CloudStack管理サーバと同居させても構わない(ただし、あくまでも検証目的であれば。)

・ルータ・ファイアーウォール Buffaloの有線LANルーター
・ストレージサーバ  CentOS 6.2 x86_64  2GB Memory HDD 500GB
・CloudStack管理サーバ CentOS 6.2 x86_64  2GB Memory HDD 20GB
・計算機ノード Intel Xeon E3 4core/8Thread 16GB Memory HDD 160GB

計算機ノードのディスクは、本来20GB程度で構わないが、計算機ノードのストレージもプライマリストレージとして使えるので、付いていると便利。また、CPUは、AMDだとHyperthreadingが使えないので、リソースが厳しくなる。(本来Hyperthreadingは、偽のCPU-パワーなので期待できないが、KVMの場合は有効に使える。)

つまり、計算機ノードは、贅沢に、残りはしょぼくても構わない。


OS仮想環境は、以下のようにする。
OS:    CentOS 6.2 x86_64
仮想環境:  KVM

このチョイスにした理由は、お金をかけたくないからである。また、KVMを利用した理由は、XenServerだと、パワーマネージメントが使えないため電気代が大量にかかる。一方KVMは、パワーマネージメントが有効的に使える上に、KSMというメモリシェアリングの機構が使えるため、同じOSを複数台起動するという条件付きだが、見た目以上のリソースを動作させることが可能。

以下構築手順だが、肝心なGUIでの入力値が抜けているが後日追加する。
ネットワーク空間は、192.168.100.0/24に構築することとする。

1.ストレージサーバの構築

●OSのインストール
CentOS 6.2 x86_64
インストールしたパッケージグループは、Baseのみ。
/export配下に高速かつ大容量ストレージをマウントする。

●IPv6の無効化とホストの設定
# vi /etc/sysconfig/network
以下を追加。
  -> NETWORKING_IPV6=no

# vi /etc/modprobe.d/disable-ipv6.conf
以下を追加。
  -> options ipv6 disable=1

# vi /etc/hosts
  -> ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
をコメントアウト。また、ホスト名を設定
  -> 192.168.100.X   yourhost.yourdomain.com yourhost

# chkconfig ip6tables off

●その他、設定、アップデート
# yum -y update
# yum -y install acpid ntp nfs-utils wget
# service acpid start
# service ntpd start
# chkconfig acpid on
# chkconfig ntpd on
# vi /etc/selinux/config

以下を変更。
 SELINUX=enforcing
  -> SELINUX=permissive

# setenforce permissive
# vi /etc/idmapd.conf
以下を変更。(サーバのドメイン名に)
  -> Domain = company.com

NFSサーバの設定
# mkdir -p /export/primary
# mkdir -p /export/secondary
# vi /etc/exports
以下を追加。
  -> /export *(rw,async,no_root_squash)

# exportfs -a
# vi /etc/sysconfig/nfs
以下の設定を変更(コメントアウトを外す)
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020

# vi /etc/sysconfig/iptables
INPUT chainの下に以下を追加
-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

# /etc/init.d/iptables restart
# /etc/init.d/rpcbind start
# /etc/init.d/nfs start
# chkconfig rpcbind on
# chkconfig nfs on

# rpcinfo -p localhost
rpcが動作しているか確認
# showmount -e
エキスポートが正しくされているか確認


これでストレージサーバの構築は終了

2.  CloudStackの構築

設定例
管理サーバ 192.168.100.4
ストレージサーバ 192.168.100.5
 ストレージパス
プライマリストレージ 192.168.100.5:/export/primary
セカンダリストレージ 192.168.100.5:/export/secondary

CloudStackの構成は、ベーシックネットワークモード
mysqlのrootのパスワード dbpassword
mysqlのcloudのパスワード cloudpassword
とすると

<共通設定>
●OSのインストール
CentOS 6.2 x86_64
インストールしたパッケージグループは、Baseのみ。

●IPv6の無効化とホストの設定
# vi /etc/sysconfig/network
以下を追加。
  -> NETWORKING_IPV6=no

# vi /etc/modprobe.d/disable-ipv6.conf
以下を追加。
  -> options ipv6 disable=1

# vi /etc/hosts
  -> ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
をコメントアウト。また、ホスト名を設定
  -> 192.168.100.X   yourhost.yourdomain.com yourhost

# chkconfig ip6tables off

●その他、設定、アップデート
# yum -y update
# yum -y install acpid ntp nfs-utils wget
# service acpid start
# service ntpd start
# chkconfig acpid on
# chkconfig ntpd on
# vi /etc/selinux/config
以下を変更。
 SELINUX=enforcing
  -> SELINUX=permissive

# setenforce permissive
# vi /etc/idmapd.conf
以下を変更。(サーバのドメイン名に)
  -> Domain = company.com

# /etc/init.d/rpcbind start
# /etc/init.d/nfs start
# chkconfig rpcbind on
# chkconfig nfs on


●インストール前のネットワーク構成のコピー (アンインストールした時に楽)
cp /etc/sysconfig/iptables /root

●再起動
# reboot

●確認
# ifconfig 
 IPv6が表示されていないことを確認
# ping `hostname`
 正しくpingがループバックアドレス以外で返ってくることを確認
 外部への名前解決ができていて応答が返ってくるかを確認

CloudStackのパッケージをダウンロードしておく。
<管理サーバ>
# tar xfz CloudStack-oss-3.0.2-1-rhel6.2.tar.gz
# cd CloudStack-oss-3.0.2-1-rhel6.2
# ./install.sh
>M

# ./install.sh
>D

# vi /etc/my.cnf
[mysqld]セクションの最後に以下を追加
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

# service mysqld restart
# mysql -u root
  mysql> SET PASSWORD = PASSWORD('dbpassword');
  mysql> exit
# cloud-setup-databases cloud:cloudpassword@localhost --deploy-as=root:dbpassword
# cloud-setup-management
# mount -o vers=3 192.168.100.5:/export/secondary /mnt
以下の行は1行で実行
# /usr/lib64/cloud/agent/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
このコマンドを実行すると、管理VMの仮想マシンイメージがダウンロードされる。

これでCloudStack管理サーバの構築は完了

<計算機サーバ -- KVMの場合>
●インストール前のネットワーク構成のバックアップ(アンインストールした時に楽)
# cp /etc/sysconfig/network-script/ifcfg-eth* /root

●ローカルディスクを使う場合の設定(オプション)
# mkdir -p /home/images
# mkdir -p /var/lib/libvirt/images
# vi /etc/fstab
以下を追加
-> /home/images          /var/lib/libvirt/images ext3     bind,defaults    0 0

# mount -a

●Agentのインストール
# tar xfz CloudStack-oss-3.0.2-1-rhel6.2.tar.gz
# cd CloudStack-oss-3.0.2-1-rhel6.2
# ./install.sh
>A

# vi /etc/libvirt/qemu.conf 
以下のコメントアウトを外す
  -> "vnc_listen = 0.0.0.0"

# /etc/init.d/libvirtd restart
# chkconfig libvirtd on


●vhostモジュールは無効にしておく!
# vi /etc/modprobe.d/blacklist-kvm.conf
以下を追加。
  -> blacklist vhost-net

●DNSマスカレード停止
# /etc/init.d/dnsmasq stop
# chkconfig dnsmasq off


●KSMの有効化(オプション)

# /etc/init.d/ksm start
# /etc/init.d/ksmtuned start
# chkconfig ksm on
# chkconfig ksmtuned on

●管理ツールのインストール(オプション)
# yum install virt-manager virt-top

一旦再起動したほうがいい

<計算機サーバ -- XenServerの場合>

特に特別な指定はない。インストールはかなり楽。ただし、IPアドレスは固定アドレスを使う。
インストールが完了したらXenServerのコンソールにログインをして以下を実行する
# tar xf xenserver-cloud-supp.tgz
# xe-install-supplemental-pack xenserver-cloud-supp.iso
# xe-switch-network-backend bridge

●念のためCPUのmicrocode update (Intel CPUを利用している人のみ)
# cp /etc/firmware/microcode.dat  /etc/firmware/microcode.dat.orig
# tar xfz microcode-20120606.tgz
# mv /etc/firmware/microcode.dat  /etc/firmware/
# /etc/init.d/microcode_ctl restart

updaterがあればXenCenterから当てておく。
が2012/6/5時点でリリースされている。一つづつインストールしないとダメッだった。
XenCenterからactivation codeをインストール
CloudStack Agentなどのインストールはない。これで完了。CloudStack管理コンソールから追加する。



3.Webコンソールで設定
http://192.168.100.4:8080/client/
初期ユーザ名/パスワードは admin/password

システムのネットワークは、192.168.100.21-39
ゲストのネットワークは、192.168.100.40-99
とした。ネットマスクは、255.255.255.0

セットアップ完了したら、Secondary Storage VMが稼働して、built-inのCentOSイメージのtemplateのダウンロードが開始される。このダウンロードが終わるまで、一旦環境を放置しておく。(一時間程度まっても完了しない場合は、Secondary Storage VMに問題がある可能性がある。一度、Secondary Storage VMをdestroyして、もう一度確認する。)



4. パラメータの変更
Built-inのTemplateが利用可能になったら(ダウンロード終了したら)、パラメータの変更をする。

●変更するパラメータ
-以下の値を小さくしないと、なかなかリソースが解放されない。
expunge.delay 86400 -> 7200
expunge.interval 86400 -> 7200

-ローカルストレージ(ハイパーバイザーのストレージ)を使うようにする設定
設定を変更した場合、一度virtual routerとsecondary storage VMをdestroyする。
また、通常のインスタンスでローカルストレージを利用する場合は、Servicingの変更を行う。
system.vm.use.local.storage true
use.local.storage true

●cloud-managmentの再起動
# service cloud-managment stop
# service cloud-managment start

●動作確認
- Security Groupを新規作成して、sshでアクセスできるようにする。
Built-inのCentOS テンプレートでインスタンスを起動する。
コンソールログイン (root/password)

- ifconfigを実行して、本来割当られるべきアドレス空間がアサインされているかを確認
(他のDHCPなどのアドレス空間から割当られている場合は、vhost-netがハイパーバイザでロードされている可能性がある。)

 - yum -y updateを実行して正常終了したらOK

- インスタンスの起動でErrorになる場合は、計算機ノードのCPU/Memoryリソースが足りない可能性がある。


[備考]インストールしておくと便利なイメージ
Windows用Paravirtual Driver
CentOS
利用時には、インストールソースURLを以下にする。



Ubuntu


0 件のコメント:

コメントを投稿