Post on 10-Jun-2015
3 章「インストールと環境構築」 を Nested KVM でやってみ
た。Cloudstack 読書会 1 LT
株式会社 クレヴァシステムズ松浦 直樹
自己紹介株式会社 クレヴァシステムズ・都内の Sier です。 SAP 、 EC サイト構築 Web 系開発、、、インフラ周りの構築 / 運用をやっています。
( 当然、、 cloudstack も頑張っています。 )
松浦 直樹基本、 Windows 系サーバエンジニアです。XenApp を利用した SaaS サイトの運用やっています。
http://kumozaru.com というサイトやっています。現状まったく更新できず。。良い CMS があったら教えてください。
HW レイヤから cloudstack 構築までのチュートリアルを公開したい。。。と思っています。
自作プライベートクラウドとか、、やっています。
今回は、以下の環境でやってみました。
超低価格で頑張った自作クラウド。
Cloud stack 検証環境Nested KVM でやってみる。 ( 本
題 )
幾つか勉強用とか検証用に環境を作りたい。
3 つ、、4っ、、、作りたいです。
普通に作ると・・・
baremetal-Server& Primary
SecondaryStorageServer
Management Server& DB
Management Server& DB
Management Server& DB
Compute-Node1 Compute-Node2 Compute-Node3
Management Server& DB
Compute-Node4
物理サーバー
5 台も必要、、、金かかる割に大して面白い環境つくれない。。。。。。
baremetal-Server& Primary
SecondaryStorageServer
Management Server& DB
Management Server& DB
Management Server& DB
Management Server& DB
こんなの出来たらよいですね・・・
物理サーバー
仮想インスタンスVM2HostNode
仮想インスタンスVM1HostNode
仮想インスタンスVM3HostNode
KVM物理 H/W
Console Proxy(SystemVM)
仮想インスタンスVM1HostNode
BIOS Intel-VT
仮想支援
User-Instance SecondaryStorageVM(SystemVM)
VirtualRouter(SystemVM)
仮想支援 vmx。。。
ココいらへんが Nested
CUs
SeV C)Us
SeV CUs
SeV CUs
SeV
2 台でできる。これって eco?
2
層目
1
層目
baremetal-Server Hostname : cloud-infra1.edi.local SecondaryStorageServer baremetal-Server Hostname : cloud-infra2.edi.local PrimaryStorageServer
Internet
Management /DB/storagemgmt1.edi.loc
DB Serverdb1.edi.local
Router(Vyatta)192.168.11.0/24
User-Instance
Console Proxy
(SystemVM)
SecondaryStorageVM(SystemVM)
VirtualRouter(SystemVM)
192.168.1.0/24 192.168.2.0/24
10.0.0.0/24
X.X.X.X
User-Instance
実際構成2 物理サーバーで、 3 セットストレージは、物理サーバー自作クラウドの全 8 台中2 台で検証環境として構築
Hsotname:ssh.edi.local SSH xxx22 ( ポート変更 )
Management mgmt1.edi.loc
ComputeNode node1.edi.local
ComputeNode node1.edi.local
DB Serverdb1.edi.local
Management mgmt1.edi.local
ComputeNode node1.edi.local
Console Proxy
(SystemVM)
SecondaryStorageVM(SystemVM)
VirtualRouter(SystemVM)
Console Proxy
(SystemVM)
SecondaryStorageVM(SystemVM)
VirtualRouter(SystemVM)
User-Instance User-Instance User-Instance User-Instance
10.0.0.0/2410.0.0.0/24
Management Server& DB
cloudstack 徹底入門のインストールなら、、 1 台でできる。
物理サーバー 1 台のみ
KVM物理 H/W
Console Proxy(SystemVM)
仮想インスタンスHost 用 Node
BIOS Intel-VT
仮想支援
User-Instance SecondaryStorageVM(SystemVM)
VirtualRouter(SystemVM)
仮想支援 vmx。。。
ココいらへんが Nested
CUs
SeV
Management Server& DB& PrimaryStorage& SecondaryStorage
1
層目
2
層目
物理層
とは言ってみたものの、、、カーネル 2.6x では未対応な機能なの
で、CentOS ・・・ハードル高し。
Ubuntu 。。。出来るらしい。Fedora も大丈夫。
Intel 系は、 3.x(3.2?) 以降で利用可能。AMD 系は、 2.6 以降で利用可能 ?
やっぱりココは、、、CentOS でやってみたい。
カーネルを UP してまで CentOS でやる意味があるのかは、、わからない。
のですが、、
諸事情もあり、、、
ということで、 CentOS 6.3ベース
でやってみました。環境構築 (Nested) で参考にさせていただいたサイト
http://oss.fulltrust.co.jp/?p=501iOSSオープンソースをもっと身近なものに
CentOS6.3 で KVM のネストを出来るようにする
とても参考になりました。というか、 Nested KVM については、
ほとんどこちらのサイトの内容のままです。
KVM モジュールの Nested 対応化手順 ( 大まかな流れ )
●KVM のインストール ( 入っていればスキップ )● qemu-kvm の最新化 → qemu-kvm-1.2.0 を利用● カーネルのバージョンアップ → カーネルバージョン 3.6 を利用● Nested 用 KVM モジュール入れ替え → kvm-intel 、 kvm● ネストの設定 →kvm.conf の編集
KVM モジュールの Nested 対応化手順 ( ざっくりバージョン )
1.(KVM のインストール ) →OS セットアップ時に組み込んでいれば不要
2.qemu-kvm の最新化 → qemu-kvm-1.2.0 を利用 → curl -L -o qemu-kvm-1.2.0.tar.gz http://sourceforge.net/projects/kvm/files/qemu- kvm/1.2.0/qemu-kvm-1.2.0.tar.gz/download
3.qemu-kvm を入れ替え →2. で入れた最新版の qemu-kvm の有効化をするのですが 参考にさせてもらったページの内容から、 若干書き換え ( パスの書き換え ) がありました。 ( 後日資料を Update します。 )
4. カーネルのバージョンアップ →# yum install ncurses-devel -y →# curl -O http://www.kernel.org/pub/linux/kernel/v3.0/linux -3.6.tar.xz
5. 新しいカーネルを利用するための準備 ( 既存の設定を利用 ) →# cp /usr/src/kernels/`uname -r`/.config . →# make menuconfig ( 変更なしなので、 esc*2 、 yes で完了 ) →# echo "CONFIG_SYSFS_DEPRECATED=y" >> .config →# echo "CONFIG_SYSFS_DEPRECATED_V2=y" >> .config →# make bzImage && make modules && make modules_install && make instal
6.OS の起動設定を確認と grub.conf の設定。 → # vi /etc/grub.conf
7.Nested KVM モジュールのインストール → カーネルバージョンに合わせたモジュール ( 今回は 3.6) を使います。 → curl -L -o kvm-kmod-3.6.tar.bz2 http://sourceforge.net/projects/kvm/files/kvm -kmod/3.6/kvm-kmod-3.6.tar.bz2/download
8. 元のモジュールの停止 → # modprobe -r kvm-intel →# modprobe -r kvm
9. 新モジュールの読み込み → 新しいモジュールをコピーし、 modprobe で読み込みます。 →# modprobe kvm →# modprobe kvm-intel nested=1 (nested=1 を忘れない。 ) →# modinfo kvm-intel
10.kvm.conf の編集 →vi /etc/modprobe.d/kvm.conf →options kvm_intel nested=1
詳細は、 http://oss.fulltrust.co.jp/?p=501 さんのサイトの内容で。。。。ばっちりです。(2 か所ほど私の環境では編集箇所があったので、後日、修正箇所のみ補足して、資料を UP しておきます。 )再確認したところ、、修正箇所なしで OK でした。。。
NestedKVM の動作としては、KVM on KVM 状態で動作することを
確認できています。わりと動います。
clodstack は、、動いたの ?実際に CloudStack 徹底入門の 3 章
インストールと環境構築をやってみました。。。本当に書籍をトレースしてみました。
特にはまることなく、、、作業もでき、、、ゾーンの作成までできました。。
NFS をインストールした後、、、(/etc/idmapd.conf の Domain = ドメイン名 の編集 )chkconfig nfs onchkconfig rpcbind onrebootはやっておいたほうが良いかも。
p100 の、、 9 ブリッジの作成は、、 IPADDR や、 DNS の設定は、パラメータ一覧を追う。。図中の内容は、読み替えが必要かも ?
特にはまることなく、、、ゾーンの作成まで、できました・・・・
ゾーンの作成まで、、できました・・・・
特に問題なくインストールが、、終わった、、、と思っていたら、、、、
SystemVM が Starting の状態。。。。
お約束すぎる。
ある意味よくできた感じもします。。。
ということで、、7.3.3 章
トラブルの例システム VM が起動しない。
につづく。。。。
NW ( インターネット接続ルーター ) の設定を間違えてました。(Template が落ちてこない。 )
これは関係ありませんでした。
というところで時間切れでした。。。。残念。。
いじょうです。
ありがとうございました。
後日資料アップします。
その後、、、
Cloudstack 動いてます。
ただし、何点か修正しています。
修正箇所 ( システム VM が running にならない件 )
1. Hostノード上で、 PrymaryStorage がマウントされていない。。。 ⇒iptables を無効化したところ、 mount するようになりました。 本当はもう少し丁寧に確認したいところですが、、、時間もなく。。
2.Nested した、 hostへの CPU 割り当て数を変更 ⇒システム VM の起動が NG ( Hostノードで PrimayStorage がマウントされているのに、 やっぱりシステム VM が起動してこない。 ) ⇒単純に仮想 CPU の割り当てを増やしてあげたところ、 すんなり起動するようになりました。最初は割り当て数 =1 でした。
Global 設定の、 cpu.overprovisioning.factor をいじってみましたが、、効かなかったみたい。
おまけ
772 、、、、 773・・・・・
おまけ 2 (仮想の host 用マシンの設定 )
twitter で、カーネル 3.7.1 で、 OK という情報をいただきましたので、、、、、、試してみようかと。。。
本資料について
• 本資料は、 cloudstack 徹底入門初版 (翔泳社 ) の内容を参考にしています。• 設定について、書籍に記載されている内容を設定しているつもりですが、誤読による設定ミス等あるかもしれません。内容については、無保証です。
• 本資料を利用したことによるあらゆる損害に対して、筆者は一切保障をいたしません。
参考資料程度でご利用ください。