IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート 

第39回 Nested KVMでOpenStack構築三昧 (中井悦司) 2014年3月

はじめに

 先日は、「オープンソースカンファレンス 2014 Tokyo/Spring」で、OpenStack Heatの紹介をしました。Heatについては、以前のコラムで紹介しているので、そちらも参考にしてください。
 当日は、HavanaバージョンのRDOでデモ環境を用意して、ライブデモを実施したのですが、最近は、デモや検証のためにさまざまなバージョン/構成のOpenStack環境を使い分けることが多くなりました。これらをすべて物理サーバで構築していると、サーバの数がとても足りませんので、必要に応じて、「Nested KVM」による「仮想化の2段重ね」を利用しています。性能面や安定性での制限はありますが、さまざまな自動化ツールを組み合わせることで、OpenStackのクラウド環境をかなり手早く準備することができます。
 今回は、Nested KVMを利用したOpenStackの環境構築を紹介したいと思います。

Nested KVMの利用法

 先のデモ環境では、1台の物理サーバ上で、Linux KVMの仮想マシンを利用して、複数ノードからなるOpen Stackのクラスタ環境を構築しています。コンピュートノードとして動作する仮想マシンの上で、さらにLinux KVMを利用して、OpenStackとしての仮想マシンインスタンスが起動するので、「仮想化の2段重ね」というわけです。
 これを実現するには、Intel-VTのようなCPUが持つ仮想化支援機構を仮想マシン内部からも利用できるようにする必要があり、これを実現するのがNested KVMの役割です。物理サーバ上でNested KVMに対応したLinuxカーネルを使用する必要がありますが、最近のバージョンのFedoraではすでに対応済みです。次のコマンドで、カーネルモジュールのオプションを設定して、サーバを再起動することで、Nested KVMが有効化されます。

Intel-VTの場合:
# echo "options kvm-intel nested=1" >/etc/modprobe.d/kvm-intel.conf

AMD-Vの場合: # echo "options kvm-amd nested=1" >/etc/modprobe.d/kvm-amd.conf

 また、仮想マシンを作成する際は、仮想マシンに割り当てる仮想CPUに対しても仮想化支援機構を有効化する必要があります。これには、virt-installコマンドで仮想マシンを作成する際に、「--cpu host」オプションを指定します。あるいは、仮想マシン作成後に、virt-managerの仮想マシン設定画面の「Processor」メニューで「構成」タブを開いて、「ホストCPUのコピーの設定」を適用して下さい。
 Nested KVMに必要な設定はこれだけです。仮想マシン上のゲストOSからは、通常通りの手順でLinux KVMを使用して、(2段目の)仮想マシンを起動することができます。

OpenStackのマルチノード構成例

 それでは、Nested KVMによる実際の環境構築例を紹介します。NeutronのOpen vSwitchプラグインを使用した場合、典型的なマルチノード構成は図1になります。仮想マシンインスタンスが起動する複数のコンピュートノードと、その他の管理機能をまとめたコントローラノードからなります。

fig01

図1 Open vSwitchプラグインによるマルチノード構成例

 これを仮想マシン環境で実現するには、図1の「パブリックネットワーク」と「プライベートネットワーク」をLinux KVMの仮想ネットワークとして用意するのが便利です。図2は実際に筆者が利用している構成例で、2つの独立したOpen Stackのクラスタを構築しています。「パブリックネットワーク」にあたる仮想ネットワーク「external01」は、2つのクラスタで共有して、「プライベートネットワーク」にあたる仮想ネットワーク「internal01」「internal02」は、それぞれのクラスタに個別に割り当てています。
 物理ネットワークとの接続は、IPマスカレードを経由しているので、物理ネットワーク上の外部クライアントからOpenStackを利用することはできません。クライアント環境も「externel01」に接続した仮想マシンとして用意する形になります。

fig02

図2 仮想ネットワークの構成例(2つのOpenStack環境を用意)

 なお、OpenStackをインストールする際に、RDOのインストールツールであるPackstackを使用する際は、1つ注意が必要です。PackstackがNova Computeを導入する際に、仮想マシン上に導入していることを検出して、仮想マシンインスタンスを起動するハイパーバイザとして、Linux KVMではなく、QEMU(ソフトウェアエミュレーション)を指定してしまいます。今回は、仮想マシン上であってもLinux KVMを使用するわけですので、これでは困ります。コンピュートノードのインストール後に、設定ファイル「/etc/nova/nova.conf」を開いて、「libvirt_type=qemu」を「libvirt_type=kvm」に修正しておいてください。
 より具体的な手順を筆者のBlogで公開していますので、そちらも参考にしてください(*1)。

次回予告

 図2では、1台の物理サーバ上にOpenStackのクラスタ環境を複数用意していますが、最近では、巨大な物理サーバを利用して、7つのクラスタ環境を並行して利用したこともあります。もちろん、これらを手作業でインストールするわけには行きませんので、virt-install、Kickstartなど仮想マシンの構築自動化ツールをフル活用しています。環境構築を自動化することで、さまざまな構成や設定を気軽に試していくことができます。Nested KVMの機能は、OpenStackを含む、さまざまなクラウド関連ソフトウェアの開発・検証において役立つものと期待できます。
 さて、来週はいよいよ「firewalld&Linuxセキュリティ勉強会」の開催です。すでに100名以上の方に参加登録いただいていますが、次回は、こちらのイベントの様子をお伝えしたいと思います。

参考資料

*1)「Nested KVM環境でOpenStack(RDO/Grizzly)をセットアップ

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート