CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
先日は、「オープンソースカンファレンス 2014 Tokyo/Spring」で、OpenStack Heatの紹介をしました。Heatについては、以前のコラムで紹介しているので、そちらも参考にしてください。
当日は、HavanaバージョンのRDOでデモ環境を用意して、ライブデモを実施したのですが、最近は、デモや検証のためにさまざまなバージョン/構成のOpenStack環境を使い分けることが多くなりました。これらをすべて物理サーバで構築していると、サーバの数がとても足りませんので、必要に応じて、「Nested KVM」による「仮想化の2段重ね」を利用しています。性能面や安定性での制限はありますが、さまざまな自動化ツールを組み合わせることで、OpenStackのクラウド環境をかなり手早く準備することができます。
今回は、Nested KVMを利用したOpenStackの環境構築を紹介したいと思います。
先のデモ環境では、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段目の)仮想マシンを起動することができます。
それでは、Nested KVMによる実際の環境構築例を紹介します。NeutronのOpen vSwitchプラグインを使用した場合、典型的なマルチノード構成は図1になります。仮想マシンインスタンスが起動する複数のコンピュートノードと、その他の管理機能をまとめたコントローラノードからなります。
図1 Open vSwitchプラグインによるマルチノード構成例
これを仮想マシン環境で実現するには、図1の「パブリックネットワーク」と「プライベートネットワーク」をLinux KVMの仮想ネットワークとして用意するのが便利です。図2は実際に筆者が利用している構成例で、2つの独立したOpen Stackのクラスタを構築しています。「パブリックネットワーク」にあたる仮想ネットワーク「external01」は、2つのクラスタで共有して、「プライベートネットワーク」にあたる仮想ネットワーク「internal01」「internal02」は、それぞれのクラスタに個別に割り当てています。
物理ネットワークとの接続は、IPマスカレードを経由しているので、物理ネットワーク上の外部クライアントからOpenStackを利用することはできません。クライアント環境も「externel01」に接続した仮想マシンとして用意する形になります。
図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/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes