OpenStackとoVirtで自宅クラウド環境を構築してみた
お久しぶりです。4か月間ぐらい全くポストしていませんでしたが生きています。
何やっていたかというと、自宅環境をOpenStackによってプライベートクラウド化しておりました。これが完成しないと諸々の検証ができないので、ブログのポストより優先していたら4か月も経っていた感じです。
4か月間にためていたナレッジは少しずつ文章にしていくつもりですが、まずはどんなプライベートクラウド環境を構築していたのか紹介する記事を書こうと思います。自宅環境を構築したい人、している人の少しでも参考になれば幸いです。
目的
本プライベートクラウド環境の目的ですが、以下の通りです。
- 製品の検証(主にインフラの検証。ハイパバイザレベルでの検証も含む)
- サービス提供(Wikiサイトなど)
従来はoVirtというOSSの仮想化基盤製品でこれらの目的をこなしていたわけですが、プライベートクラウド化することによって次のことを狙っていました。
- 様々なサービスのAPIコールによるデプロイ
oVirtはあくまで仮想化基盤なので、あくまでもAmazon EC2やEBS相当の機能しか提供してくれません。昨今のクラウドネイティブなアーキテクチャの学習には不向きだったのです。またコンテナ中核技術であるKubernetesの利便性を最大限引き出すにはクラウドとの連携は必須となります。このためOpenStackによって自宅IaaSを構築しようという考えに至りました。
ただし、OpenStackでは柔軟な仮想マシン設定を行うことが難しくなり、KVMなどのハイパバイザレベルでの動作検証が難しくなります。したがって検証環境すべてをOpenStackに移行したわけではなく、一部リソースをoVirt用に残すようにしました。
アーキテクチャ(物理)
物理構成は以下の通りになります。OpenStack Controllerはロードバランサなどの補助サーバはoVirt上のVMとして構築します。
- Intel NUC Pentiumモデル x 1 (oVirt Engine用)
- Intel NUC Corei3モデル x 3 (oVirt Node用)
- Intel NUC Corei3モデル x 3 (OpenStack Compute用)
アーキテクチャ(仮想)
VMを含めた構成は以下の通りです。冗長化による性能向上を狙って、OpenStack環境はActive/Activeクラスタを構成しています。(Cinder Volumeを除く)
構築したサービス
本プライベートクラウドでは以下のIaaSサービスを提供しています。
oVirt
通常の仮想化環境を提供します。KVM等のハイパバイザ自体を検証したいときはこっちを使います。VMやボリュームのプロビジョニングを行うことができ、通常の仮想化環境といってもAPIがついているので、Ansible等を用いてプロビジョニングを自動化することが可能です。OpenStack Keystone
AWSにおけるIAM相当の認証基盤を提供します。OpenStack Swift
AWSにおけるS3相当のオブジェクトストレージ機能を提供します。OpenStack Glance
AWSにおけるAMI相当のVMイメージストア機能を提供します。Swiftと連携してイメージをSwiftに保存するようにしています。OpenStack Neutron
AWSにおけるVPC、ELB相当の仮想ネットワーク、ソフトウェアロードバランサー機能を提供します。OpenStack Heat
AWSにおけるCloudFormation相当のオーケストレーション機能を提供します。OpenStack Magnum
AWSにおけるECS、EKS相当のコンテナオーケストレーション機能を提供します。Kubernetesのデプロイを一発で行えます。
まとめ
OSSを使って自宅環境をプライベートクラウド化してみましたが、ソフトウェアでインフラを制御するのはとても便利で快感です! お時間ある方は是非チャレンジしてみてはいかがでしょうか? 設計や構築方法について疑問がある方は質問していただければ可能な限りお答えしたいと思います!