Magnumの環境構築およびコンテナの制御を行ってみる。Dockerは、多くのITエンジニアに注目され、継続して成長している技術である。DockerはlibcontainerというLinuxカーネルのAPIを呼び出すためのドライバーと、OSごとに対応したファイルシステム(aufs、device-mapper等)によって、コンテナという仮想環境を構築する。-周辺ツールと業界動向-」にて解説されている。Dockerが注目を集める理由は、このコンテナという仮想環境が、従来のハイパーバイザ型の仮想環境と比べて軽量でオーバヘッドが少ないことや、実行環境を素早く提供できるという点にある。Swarmなどが挙げられる。近年話題となっているクラウド基盤ソフトウェアのOpenStackにも、Magnumという機能が追加された。Teamによって開発されたもので、Dockerコンテナを扱うための機能である。Magnumを使うことによって、コンテナクラスタのデプロイおよび制御を、OpenStack上で行えるようになる。Magnumの環境構築およびコンテナの制御を行ってみる。Magnum公式の構成図を示す。Magnumの構成図(出典:https://wiki.openstack.org/wiki/Magnum)Magnumは、既存のAPIであるNova、Neutron、Glance、Cinderなどよりも上位のレイヤーに存在する。APIのBayは、OpenStackのオーケストレーション機能であるHeatによりNovaやNeutron、Glance、Cinderを操作して、コンテナをクラスタリングするための環境を構築し提供する機能などを備える。APIのNode、Pod、Service、RC等を使ってコンテナを制御できる。Swarmを、OpenStackに取り込むことで実現している。14.04上に構築する。構築に必要となるパッケージをインストールする。build-essential次に、OpenStackを構築するためのツールであるDevStackを取得する。DevStackは開発者向けのOpenStack導入ツールであり、今後OpenStackのコンポーネントに対して更新があった場合は、今回の手順通りに動作しない可能性がある。後述のlocal.confでバージョンは指定できる。/opt/stack/devstackDevStackは、local.confというファイルにOpenStack構築時の設定を記述する。<password>となっている部分には、任意のパスワード設定をしている。ENDDevStackを実行する。環境によって異なるが、今回の環境では30分程度で構築が完了した。./stack.sh認証のための変数を読み込む。引数にユーザ名およびテナント名を指定するが、今回は両方ともadminとする。adminOpenStackの構築および認証が問題なく行えていることを確認するためにサンプルの仮想マシンイメージを表示させる。|+--------------------------------------+---------------------------------+-------------+------------------+-----------+--------+このようにイメージが表示されていれば問題はない。Bayの作成ここから実際にMagnumを使用していく。BaymodelおよびBayのイメージ図を以下に示す。図2:Baymodel、Bayの構成イメージ図2に記載されているBayという枠は、Magnumで構築するクラスタの単位であり、Baymodelという「ひな形」をもとに作成される。Baymodelには構築するノードのOSやネットワーク、使用するクラウドオーケストレーションエンジンなどを指定する。Bayを作成すると、Baymodelをもとにインスタンス、ネットワーク、オーケストレーションエンジンを動かすための環境などを自動的に設定、構築してくれる。Bayという単位で管理することによって、クラスタごとの削除、ノード数の変更を容易に行うことができる。今回はKubernetesのエンジンを使用するため、作成されるインスタンスは、コンテナを配置する場所であるMinionとAPIを実行してMinionに対してコンテナの制御などをさせるMasterである。Baymodelで使用する鍵を作成する。~/.ssh/id_rsa次に、novaに鍵を登録する。testkey鍵の登録が完了したら、Baymodelを作成する。kubernetesbaymodel-createコマンドで使用したオプションの一覧を、以下の表にまとめた。作成するノードのマシンイメージを指定する。ノードの認証に使用する鍵を指定する。外部ネットワークを指定する。作成するノードの構成を指定する。Engineの略で、使用するエンジンを指定する。今回はkubernetesを使用する(他に指定できるのは、現時点ではswarmとmesos)このBaymodelをもとに、Bayを作成する。今回使用した環境では、15分程度でBayの作成が完了した。1bay-createコマンドで使用したオプションの一覧を、以下の表にまとめた。Bayの作成時に使用するBaymodelを指定する。作成するノード数を指定watchコマンドで5秒ごとにコマンドを実行し、statusがCREATE_COMPLETEに変わったことを確認する。|+--------------------------------------+---------+------------+-----------------+次にノード数を増やしておく。node_countオプションで、ノードの数を指定する。node_count=2statusがUPDATE_PROGRESSからUPDATE_COMPLETEになり、node_countが2になっていることを確認する。戦略技術センター2015年新卒入社。デザイン指向クラウドオーケストレーションソフトウェア「CloudConductor」(http://cloudconductor.org/)のプロジェクトに従事。開発の傍らDockerやAnsibleなど、OSSの検証を行っている。最近興味を持っている技術はIoTとElixir言語。考えるDockerの本番利用に必要なこと2016/5/26本番環境へのDockerの導入が進むために必要な条件を、各社の事例を元に考察する。Dockerコンテナ環境のバックアップツール「Convoy」を使う2016/3/30Docker環境のバックアップツールとして注目されるConvoyのインストールから使用方法までを解説します。2を、コンテナ環境に導入する手順を紹介します。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。Summitで紹介されたCERNやAdobeの事例Kubernetesの基礎Intelが中国のベンチャーHyperと共同で開発を進める新しいコンテナランタイムKataを公開Dockerを使いこなすには。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。