コンテナと仮想マシン(VM)の使い分けについては、インターネット上で長い間議論されてきました。人それぞれ意見があり、コンテナのみを支持する人もいれば、VMのみを支持する人、あるいはVM上でコンテナを動かす構成を支持する人もいます。本記事では、コンテナとVMの比較、およびそれぞれの適切な利用シーンについて、個人的な見解を交えて紹介します。 コンテナ:コンテナはこの5年間で急速に普及しました。その理由は、軽量であることと、迅速なデプロイが可能な柔軟性にあります。ハードウェア全体を仮想化するのではなく、コンテナはcgroupsとnamespaceを通じてホストOSのリソースを隔離します。これは「OSレベルの仮想化」とも呼ばれます。コンテナはホストのカーネルを共有し、独自のバイナリとライブラリのみを持つため、VMと比較してイメージサイズが小さく、起動速度も非常に高速です。 コンテナの利点: イメージが小さい:ホストとカーネルを共有するため、必要なOSコンポーネントとライブラリのみを提供すれば済みます。 速度:デプロイが極めて速く、通常は数秒でコンテナを生成できます。 ポータビリティ:適切なカーネルがあれば […]
外部Cephを使用したKolla-Ansibleのデプロイ
Kolla-Ansibleをデプロイする際、Cephクラスターも同時にデプロイ可能ですが、運用担当者がCephとOpenStackを個別に管理したい、かつCephをストレージバックエンドとして利用したいというケースがあります。そのような場合でも心配ありません。Kolla-Ansibleでは、以前紹介した「config override」機能を利用して、外部のCephクラスター(External Ceph Cluster)を使用することができます。本記事では、Kolla-Ansibleとそのconfig override機能を使用して、外部Cephを利用するOpenStackをデプロイする方法を紹介します。 事前準備:外部のCephクラスターを使用するため、まずはCephクラスターをデプロイする必要があります。Cephのデプロイ方法には多くの選択肢がありますが、以前紹介したCeph-Ansibleを参考にすることもできます。また、Kolla-Ansibleの使用に関する基礎知識も必要です。こちらの記事を参考にしてください:「Kolla-AnsibleとコンテナによるOpenStackのデプロイ」。CephのRBDプール設定、OpenStack Nova、Cinder (Cinder Backup)、Glance […]
Ceph-Ansible を使用した Ceph クラスターのデプロイ
Cephはオープンソースの分散ストレージシステムであり、オブジェクト、ブロック、ファイルシステムのストレージを同時に提供できるため、OpenStackのデプロイにおいてSwift、Cinder、Manilaのバックエンドとして広く利用されています。本記事では、Ceph-Ansibleを使用して、本番環境に対応した高可用性(High-availability)なCephクラスターをデプロイする方法を紹介します。 基本アーキテクチャ:基本的なCephクラスターは、主にCeph Monitor、Ceph OSD、Ceph Manager Daemonの3つのコンポーネントで構成されます。Ceph MonitorはCephの中核コンポーネントであり、monitor、manager、OSD、CRUSHの状態を含むクラスター全体のステータスマップを維持する役割を担います。これらのデータはCephの動作を維持するために不可欠です。さらに、Monitorはデーモンやクライアント間の認証も担当します。高可用性なCeph […]
Kolla-Ansible でカスタム設定を使用する
前回の記事では、KollaとKolla-Ansibleを使用したOpenStackのデプロイ方法を紹介しました。設定はすべてglobals.ymlで行い、それ以外はKolla-Ansible内のテンプレートによって処理されます。しかし、この方法ではデプロイの柔軟性に欠け、特殊な環境に合わせたカスタマイズが困難な場合があります。そこで、カスタム設定を行うための「config override」という手法が登場しました。本記事では、config overrideを使用してKolla-AnsibleによるOpenStackデプロイの設定ファイルを変更する方法を紹介します。 設定方法:同様にglobals.yml内で、config overrideファイルを格納するディレクトリの設定項目を確認できます。デフォルト値は「/etc/kolla/config」ですが、任意のディレクトリに変更可能です。 # Location of configuration overrides #node_custom_config: "/etc/kolla/config" Kolla-Ansibleは「/etc/kolla/config/<<サービス名>>/<<設定ファイル>>」にあるファイルを探します。設定ファイルのオーバーライドにより、基本的にはOpenStack全体を […]
Kolla-Ansible とコンテナによる OpenStack のデプロイ
OpenStackはかつてデプロイが非常に複雑でメンテナンスも困難でしたが、近年のDevOpsやコンテナ概念の普及に伴い、OpenStackコミュニティでもコンテナとAnsibleを利用したデプロイ手法が登場しました。この手法はKollaとKolla-Ansibleによって実現されます。KollaはOpenStackに必要なDockerイメージをビルドするためのDockerfileを提供し、Kolla-AnsibleはそれらのコンテナをデプロイするためのAnsibleプレイブックを提供します。本記事では、このプロジェクトを通じて、本番環境に対応した高可用性なOpenStack環境(現在のバージョンはQueens)を迅速にデプロイする方法を紹介します。 基本アーキテクチャ:高可用性なOpenStack環境には、最低4つのノード(3つのコントローラーノード(Cephノード兼用)と少なくとも1つのコンピュートノード)が必要です。各 […]

