ベアメタルからクラウドへ:OpenStack 入門 1

從裸機到雲端:OpenStack 介紹

これまでの数本の記事では、今回の IT 鉄人レースで構築するクラウドアーキテクチャについて説明してきました。今日からの記事では、使用する IaaS レイヤーである OpenStack について紹介します。今回の記事はオーバービューから始め、その後の記事で各 OpenStack コンポーネントの詳細な紹介を行っていきます。リファレンス:本シリーズの記事では、OpenStack 自身のドキュメントをリファレンスや画像ソースとして多用します。OpenStack の概念をより深く理解したい方は、公式ドキュメントを直接読むことをお勧めします。OpenStack とは何でしょうか?OpenStack とは何かを議論する際、ソフトウェア (Software)、コミュニティ (Community)、グループ (Group) の 3 つの側面から見ることができます。ソフトウェア:OpenStack は基本的に、プライベートクラウドおよびパブリッククラウドサービスを提供できるソフトウェアパッケージであり、一般的な企業、通信事業者、ハイパフォーマンスコンピューティング (HPC) など、さまざまなアプリケーションシナリオを含んでいます。ソフトウェアの観点から見ると、OpenStack は複数のマイクロサービス (micro service) で構成されており、ユーザーはアプリケーションのシナリオに応じてこれらのサービスを組み合わせ、自身のニーズを満たすことができます。これらのサービスは基本的に REST API を通じて提供され、また、サービスを利用するためのさまざまなプログラミング言語のソフトウェア開発キット (SDK) も提供されています。これらのソフトウェアは、公式に提供されている tarball を通じてインストールできるほか、主要な Linux ディストリビューションのパッケージ管理ツールにもパッケージ化されています。OpenStack ソフトウェアマップ:コミュニティ:ソフトウェアであることに加え、OpenStack は巨大なコミュニティでもあります。このコミュニティの目標は:[…]

ベアメタルからクラウドへ:OpenStack Nova 紹介 2

從裸機到雲端:OpenStack Nova 介紹 2

前回の記事では Nova の機能と使用方法を紹介しました。本記事では引き続き Nova のアーキテクチャについて紹介します。OpenStack Nova システムアーキテクチャ:Nova は複数のサーバープロセス (process) で構成されており、各プロセスが異なる機能を実行します。ユーザー向けのインターフェースは REST API ですが、Nova 内部の異なるコンポーネント間は RPC を通じて通信・連携を行います。API サーバーは REST リクエストを処理します。これには通常、データベースの読み書きや、他の Nova サービスへの RPC メッセージの送信が含まれ、対応する REST レスポンス (response) を生成します。RPC メッセージの伝達は oslo.messaging を通じて行われます。これは OpenStack コンポーネント共通の RPC メッセージ抽象化レイヤーであり、OpenStack コンポーネントが背後の RPC 実装を気にせずに済むようにします。ほとんどの主要な Nova コンポーネントは複数のサーバー上で実行でき、RPC メッセージをリッスンするマネージャーを持つことで、高可用性と負荷分散の目的を達成します。主な例外の 1 つは nova-compute で、これは管理対象の各ハイパーバイザ (hypervisor) 上で単一のプロセスのみを実行します(VMware または […] を使用する場合を除く)。

ベアメタルからクラウドへ:OpenStack Nova 紹介 1

從裸機到雲端:OpenStack Nova 介紹 2

昨日の記事では OpenStack アーキテクチャの全体像を紹介しましたが、今日は各コンポーネントの詳細な紹介に入ります。まず、OpenStack が提供する最も核となる機能であるコンピュートサービス (Compute Service)、つまり仮想マシン (Virtual Machine) を起動する機能を持つコンポーネント、Nova から始めます。Nova とは何でしょうか?Nova は OpenStack のプロジェクトの 1 つで、コンピューターをプロビジョニング (provision) する方法を提供します。現在は主に仮想マシンと物理ホスト(Ironic 経由)の両方をサポートしています。Nova は既存の Linux サーバー上で一連のデーモン (daemon) として動作し、サービスを提供します。後の章で、Nova の各デーモンが担当する業務について紹介します。現在、Nova の基本機能を使用するには、以下の OpenStack サービスと組み合わせる必要があります:Keystone、Glance、Neutron、Placement。前回の記事で紹介しなかった Placement について、ここで簡単に説明します。Placement は Nova から切り出されたサービスで、主な機能は CPU や RAM など、異なるカテゴリの利用可能なリソースとその使用量を追跡することです。ユーザーにとっては、Nova が提供するツールや API を通じて、コンピュートリソースの作成や管理を行うことができます。Nova を使用して […]

ベアメタルからクラウドへ:ハイレベルアーキテクチャの紹介

これまでの数本の記事で NIST によるクラウドの定義を紹介してきましたが、今日から本題に入り、ベアメタルからクラウドを構築する手順をステップバイステップで解説します。まず、筆者が予定しているクラウド構築のアーキテクチャを大まかに紹介します。IaaS レイヤー:今回のクラウドの IaaS レイヤーには OpenStack を使用してサービスを提供します。選択した理由は以下の通りです:現在最も一般的なプライベートクラウドは OpenStack を使用しており、開発が成熟しており、ユーザーが多く、小規模から大規模まで対応可能です。オープンソース (Open Source):オープンソースであることが最も重要なので 3 回書きました。オープンソースであるため、ソフトウェアの入手が容易で、無料で使用できます (Apache License)。読者の皆さんも筆者の手順に従って容易に実装できるはずです。PaaS レイヤー:PaaS レイヤーには Kubernetes を選択してサービスを提供します。選択した理由は以下の通りです:現在最も一般的なコンテナオーケストレーションプラットフォームであること。各主要パブリッククラウドがマネージドサービスを提供していること。基本機能の開発が成熟しており、ユーザーが多く、規模の大小を問わないこと。オープンソース (Open Source):多くの読者が Kubernetes の経験をお持ちだと思います。今回のテーマでは、Kubernetes を OpenStack 上に構築し、[…] を使用する方法も解説します。

ベアメタルからクラウドへ:クラウドの定義 3

昨日、クラウドの 3 つのサービスモデルを紹介しましたが、今日は昨日のクラウドの定義を引き継ぎ、クラウドサービスの 4 つのデプロイメントモデルについて紹介します。デプロイメントモデル:NIST が定義するクラウドのデプロイメントモデルは、主に以下の通りです。プライベートクラウド (Private Cloud)、パブリッククラウド (Public Cloud)、ハイブリッドクラウド (Hybrid Cloud)、コミュニティクラウド (Community Cloud)。ハイブリッドクラウドをマルチクラウド (Multi Cloud) と呼ぶ人もいます。ここでの紹介も、中興大学高齢者学習ネットワークの翻訳を一部引用します。プライベートクラウド:クラウドインフラストラクチャが特定の組織のために運用されるもので、組織自身またはサードパーティの管理者がオンプレミス (On premise) またはオフプレミス (Off premise) でデプロイします。プライベートクラウドはパブリッククラウド環境の柔軟性という利点を備えているだけでなく、ネットワークやユーザーが特定の制限を受け、データやプログラムが組織内部で管理されるため、ネットワーク帯域幅、セキュリティの懸念、法規制の制限などの影響を受けにくく、クラウドプロバイダーやユーザーがクラウドインフラをより制御でき、セキュリティと柔軟性を向上させることができます。簡単に言えば、会社が自社で構築したクラウドは通常プライベートクラウドであり、ユーザーは通常、社内の他の開発部門となります。コミュニティクラウド:クラウドインフラストラクチャが、共通の関心事(特定のミッション、セキュリティ要件、ポリシー、コンプライアンスの考慮事項など)を持つ複数の組織によって制御および使用されるものです。組織またはサードパーティによって管理され、オンプレミスまたはオフプレミスでデプロイされます。このモデルは現在、比較的珍しいと思われます。パブリッククラウド:クラウドインフラストラクチャが一般大衆または大規模な業界グループに提供されるもので、クラウドサービスを販売する組織によって所有されます。柔軟性に加え、コスト効率も備えています。これにより、パブリッククラウドのユーザーは、物理マシンやそのデータセンター、電力、冷却設備のコストや技術を節約できます。また、「パブリック」だからといってユーザーのデータが誰にでも見られるわけではなく、クラウドプロバイダーは通常、ユーザーに対してアクセス制御メカニズムを実施します。パブリッククラウドは、一般に最も広く認識されているクラウドでもあります。現在、国際的なパブリッククラウドの 3 大事業者は AWS、Google GCP、Microsoft Azure であり、その他に Oracle Cloud、Tencent、Alibaba、IBM Cloud などの比較的小規模な事業者も存在します。ハイブリッドクラウド:クラウドインフラストラクチャが 2 つ以上のクラウド(プライベート、コミュニティ、またはパブリック)で構成されるものです。これらのクラウドは独自のエンティティとして維持されますが、標準または独自の技術によって結合され、データやアプリケーションのポータビリティを実現します。このモデルでは、ユーザーは通常、企業にとって重要でない情報をアウトソーシングしてパブリッククラウドで処理し、同時に企業内部の機密性の高いサービスやデータを制御します。現在、一部のベンダーは「卵を一つのカゴに入れない」ために、単一のパブリッククラウドの障害によるサービス中断を避けるべく、複数のパブリッククラウドを同時に使用する計画を立て始めています。通常、ハイブリッドクラウドを構築するには、エンジニアが各クラウドを一定程度理解している必要があり、また、プログラムが異なるクラウド間で正常に動作する必要があるため、各パブリッククラウド独自のサービスを利用するのが難しくなります。以上が NIST で定義されている 4 つのクラウドデプロイメントモデルです。まとめ:クラウドデプロイメントモデルも、必須条件に比べれば理解しやすいはずです。多くの読者もパブリッククラウドの使用経験があると思います。今回の IT 鉄人レースではプライベートクラウドの概念に焦点を当て、1 台の物理サーバーから […] ステップバイステップで皆さんをご案内します。

ベアメタルからクラウドへ:クラウドの定義 2

Auto Draft

昨日、クラウドの 5 つの必須条件を紹介しましたが、今日は昨日のクラウドの定義を引き継ぎ、クラウドサービスの 3 つのサービスモデルについて紹介します。サービスモデル:クラウドのサービスモデルは主に 3 つに分類されます。Infrastructure as a Service (IaaS)、Platform as a Service (PaaS)、Software as a Service (SaaS)。これ以降の紹介では、それぞれ IaaS、PaaS、SaaS と略称します。ここでは中興大学高齢者学習ネットワークの翻訳を引用します。IaaS:「インフラストラクチャ・アズ・ア・サービス」は、仮想化されたハードウェアリソースと関連する管理機能の集合体です。仮想化技術を通じてコンピューティング、ストレージ、ネットワークなどのリソースを抽象化し、内部プロセスの自動化とリソース管理の最適化を実現し、外部に対して動的で柔軟なインフラサービスを提供します。このレイヤーの消費者は、処理能力、ストレージスペース、ネットワークコンポーネント、またはミドルウェアなどの「基礎コンピューティングリソース」を使用し、オペレーティングシステム、ストレージスペース、デプロイされたアプリケーション、およびファイアウォール、ロードバランサーなどを制御できますが、クラウドの基盤となるアーキテクチャは制御せず、IaaS がもたらす便利なサービスを直接享受します。主要なクラウドサービスプロバイダーを例に挙げると、以下のサービスはすべて IaaS の範疇です。AWS: EC2, VPC、GCP: GCE、Azure: VM, Block Storage。PaaS:「プラットフォーム・アズ・ア・サービス」は、クラウドアプリケーションの開発、実行、管理、および監視のための環境を提供します。最適化された「クラウドミドルウェア」と言えます。優れたプラットフォーム層の設計は、拡張性、可用性、セキュリティなどのクラウドの要件を満たすことができます。このレイヤーの消費者は、プラットフォームプロバイダーが提供するプログラム開発ツールを使用して、自身のアプリケーションをクラウドアーキテクチャ上に構築できます。アプリケーションの実行環境を制御でき(ホストの一部制御権も持つ)、オペレーティングシステム、ハードウェア、または実行されるネットワークインフラは制御しません。皆さんがよく耳にする Kubernetes は、おおよそ PaaS (Container as a Service) に分類され、データベースなどの各種マネージドサービスも同様です。主要なクラウドサービスプロバイダーを例に挙げると、以下のサービスはすべて PaaS の範疇です。AWS: […]

ベアメタルからクラウドへ:クラウドの定義 1

前書き:皆さんこんにちは、Gene です。Cloud Native Taiwan User Group に参加したことがある方なら、私の名前を聞いたことがあるかもしれません。今回、コミュニティメンバーに勧められて初めて IT 鉄人レースに参加することになりました。「ベアメタルからクラウドへ — 30 日間で学ぶクラウド構築」というテーマでお送りします。今回のレースでは、クラウドの概念の紹介から始め、読者の皆さんにクラウドの概念を理解していただいた後、OpenStack のアーキテクチャとデプロイ方法、そして最後に Kubernetes のアーキテクチャと OpenStack 上での Kubernetes のデプロイ方法へと進みます。全体として、今回のテーマでは受講者の皆さんと一緒に、シンプルな Linux マシンからステップバイステップで独自のプライベートクラウドを構築していきます。クラウドの定義:通常、クラウドの定義は「The NIST Definition of Cloud Computing」に基づいて説明されます。NIST はクラウドの定義を 3 つの異なる方向から定義しています。主要な特徴 (Essential Characteristics)、サービスモデル (Service Model)、デプロイメントモデル (Deployment Model)。主要な特徴:クラウドの主要な特徴は全部で 5 つあり、これらはクラウドの最も核となる概念でもあります。それらには以下が含まれます:オンデマンド・セルフサービス (On-demand Self-service):消費者は自身のニーズに応じて、ベンダーの担当者とのやり取りを必要とせず、クラウドサービスプロバイダーが提供するネットワーク、ストレージ、コンピューティングリソースを自ら利用できます。広範なネットワークアクセス (Broad Network Access) […]

MicroStack — 30分以内に OpenStack 環境を構築する

從裸機到雲端:OpenStack 介紹

ここ数年、OpenStack はインストールが非常に難しいソフトウェアであると考える人が依然として多いですが、事実はそうではありません。Kolla-Ansible、TripleO、OpenStack-Ansible などのプロジェクトが登場して以来、OpenStack のインストールと設定は実は非常に簡単なことになりました。そして今回は、OpenStack のインストールをさらに簡素化するプロジェクト、MicroStack を紹介します。MicroStack とは何でしょうか?「2 つのコマンドで OpenStack 環境を」。MicroStack は、2 つのコマンドを入力するだけで基本的な OpenStack 環境を生成できるプロジェクトです。OpenStack 利用の入門ハードルを大幅に下げることができます。以下のような特徴があります:インストールが速い:筆者自身が実際にテストしたところ、4 コア、16GB RAM、100GB SSD のマシン内で、合計約 30 分で MicroStack のインストールを完了できました。インストールの速度は非常に速いです。アップストリーム:MicroStack がインストールする OpenStack はすべて、アップストリームの修正されていない OpenStack ソースコードであり、ベンダーが独自に追加した機能によってシステムが不安定になる心配はありません。完全:MicroStack が構築する環境には、主要な OpenStack コンポーネントの大部分が含まれています。その中には、Keystone、Nova、Glance、Neutron、Cinder […] があります。

OpenStack nova-scheduler はどのように動作するのか

OpenStack nova-scheduler 是如何運作的

最近、仕事である理由から OpenStack Nova のコードをたくさん読んだので、Nova がどのように動作するのかを記録するためにいくつかの記事を書くことにしました。まず第 1 回目は、nova-scheduler の部分から始めます。コードレベルから、conductor がどのように scheduler を呼び出し、scheduler がどのように決定を下すのか、そのフローを解説します。この記事は、執筆時点での最新の安定版 (stable) である victoria をベースにしています。nova-scheduler の紹介:nova-scheduler はプラグインベース (plugin based) のスケジューラとして設計されており、ユーザーは自身のニーズに応じて独自のスケジュールドライバを記述できます。Nova では、デフォルトで Nova のコードベース自体に含まれるフィルタースケジューラ (filter scheduler) が有効になります。フィルタースケジューラの動作原理は非常にシンプルで、基本的にはすべてのホスト (host) を一連の「フィルター (filter)」にかけ、フィルターの条件に合わないものは除外され、適合したものが通過して最終的な選択プール (pool) に入ります。これらのフィルターを通過したホストは、次に […]

KubeVirt アーキテクチャ紹介

KubeVirt Logo

先日、Cloud Native Taiwan User Group で久しぶりに KubeVirt 101 のセッションを行いましたが、触れば触るほどこのプロジェクトは面白いと感じます。ここでは KubeVirt 101 で話した内容を少し凝縮し、アーキテクチャに重点を置いて紹介記事を書きたいと思います。Kubernetes 上で VM ワークロードを実行するこのオペレーター (operator) を、ぜひ皆さんも試してみてください。基本紹介:公式サイト原文:KubeVirt is a virtual machine management add-on for Kubernetes. The aim is to provide a common ground for virtualization solutions on top of Kubernetes. 簡単に言えば、KubeVirt はユーザーが Kubernetes 上で仮想マシンアプリケーションを実行できるようにする Kubernetes オペレーターであり、まだコンテナ化されていない、あるいは特殊なカーネル (kernel) を必要とするアプリケーションを実行できるようにします。最大の利点は、運用上のすべての概念が一般的な Kubernetes コンテナ […] と同じであることです。