BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Dockerファン朗報! DigitalOceanがCoreOSを新たにサポート

Dockerファン朗報! DigitalOceanがCoreOSを新たにサポート

原文(投稿日:2014/09/17)へのリンク

パブリッククラウドプロバイダのDigitalOceanが先日,Docker指向の新しいLinuxディストリビューションであるCoreOSのサポートを発表した。コンテナベースの開発が主流となるに伴って,CoreOSの人気も高まってきている。このユニークなオペレーティングシステムをサポートするベンダ群が拡大を続ける中で,DigitalOceanはその一角をなす存在だ。

DigitalOceanとCoreOSはこの新たな関係を,それぞれのブログ記事で同時に発表した。CoreOSの記事には,2,000人以上の開発者がDigitalOcean上でのCoreOSのサポートを求めていたこと,ホスティングプロバイダに対して同社がアルファ,ベータ,およびリリースバージョンを広く公開していること,などが説明されている。一方のDigitalOceanは,"droplet"と呼ばれる同社の仮想コンテナのひとつとして,CoreOSのアルファチャネルがデプロイ可能になることを発表した。CoreOS以外にも同社では,CentOSやDebian,Fedora,UbuntuなどのLinuxディストリビューションをサポートしている。

CoreOSは,GoogleのChrome OSをベースとする,軽量なLinuxディストリビューションである。独立したサーバではなく,クラスタ向けに最適化されている。実行されるのは基本的なサービスの一部のみで,パッケージマネージャはなく,ほとんどすべてをDockerコンテナ内で実行することができる。クラスタ管理には,DigitalOceanが新しいチュートリアルでも説明している,2つのコア技術が使用されている。クラスタ全体からサービスを検出するために使われているのは,etcdと呼ばれるサービスだ。

etcdサービスは可用性の高いキーバリューストアで,各ノードによるコンフィギュレーションデータや実行サービスに関するクエリ情報の取得,他のメンバに知らせるべき情報の公開などに使用されます。ノードはそれぞれ,自身のetcdクライアントを実行します。各クライアントは,クラスタ内の他のクライアントと通信して,情報の配布と共有を行うように設定されています。

データストアから情報を取り出したいアプリケーションに必要なのは,ローカルマシン上のetcdインターフェースに接続することだけです。etcdのデータはすべて,実際に格納されている場所に関わらず,それぞれのノードで利用することができます。ストアされたデータは自動的に,クラスタ全体に分散し,複製されます。リーダ選択も自動的に処理されるので,キーストアの管理はほとんど必要ありません。

CoreOSクラスタとDockerコンテナのオーケストレーションは,fleetというサービスが実行する。

コンセプトはかなり単純で,fleetはクラスタ全体のinitシステムとして動作するのです。

クラスタ環境内にある個々のクラスタノードでは,従来のsystemd initシステムが動作して,ローカルマシン上のサービスの起動や管理に使用されます。単純な意味で言えば,fleetは,クラスタメンバそれぞれのsystemdシステムをコントロールするための,インターフェースを提供しているに過ぎません。

クラスタ全体に対してサービスを起動あるいは停止したり,実行中のプロセスに関する状態情報を取得することができます。さらにfleetは,これをもっと使いやすくするために,いくつかの重要なことを行っています。プロセス配信のためのメカニズムを操作することで,より負荷の低いホストでサービスを起動することができるのです。

実行するサービスの配置条件を指定することも可能です。ホストの配置されている場所や実行中のサービス,その他の条件によって,サービスを実行する,または実行しないホストを指定することができます。fleetはローカルプロセスの起動にsystemdを利用するので,サービスを指定する個々のファイルは,systemdのunitファイルです(一部カスタムオプションがあります)。これらの設定ファイルを一度fleetに渡せば,クラスタ全体をそれで管理することができます。

CoreOSでは,使用可能なOSパッチを2つのrootパーティションに適用するという,ユニークな自動更新方法が採用されている。

まず最初,CoreOSシステムがroot Aパーティションから起動して,新たなアップデートを確認するために,アップデートサービスとの通信を開始します。利用可能なアップデートがあれば,ダウンロードされてroot Bにインストールされます。アプリケーションの障害とならないように,このプロセスで使用するディスクとネットワークI/Oは,Linuxのcgroupを使って制限されています。

このような2重rootのスキームを採用することで,既存のyumapt-getのワークフローを改善しています。アップグレード中にこれらのツールを使用すると,ご存知のとおり,パッケージマネージャがデーモンに対して,新しいライブラリやコンフィギュレーションファイルを強制的に使用させる操作を行います。ですがCoreOSでは,システムのアップデートはアトミックな操作であって,ロールバックも可能です。

CoreOSでは実行中のrootパーティションは更新されないので,サーバが不安定になったり,部分的にアップグレードされた状態になったりすることはありません。アップグレードを完了させるためにマシンを再起動すれば,数秒で,フレッシュに更新されたシステムがroot Bで実行を開始します。

CoreOSをサポートするクラウドプロバイダも揃いつつある。DigitalOcean以外にもAWSGoogle Compute EngineCenturyLink CloudRackspaceOpenStackVMwareその他がCoreOSを提供している。CenturyLink Labs(InfoQの以前の記事参照)が提供するオープンソースであるPanamaxプロジェクトでは,自分たちのDocker管理プラットフォームにCoreOSを組み入れて,オーケストレーションにfleetを使用している。

DigitalOceanのdropletの価格は,シングルCPU, メモリ512MB, 20GB SSDドライブで月額5ドルからである。同社はサンフランシスコ,ニューヨーク,ロンドン,アムステルダム,シンガポールと,世界各地にデータセンタを所持する。今回のCoreOSサポートのローンチに合わせて,CoreOSクラスタの作成やDockerコンテナの操作など,一通りのチュートリアルが用意された。TechCrunchの伝えるところによれば,同社開発チームは更なる資料を準備中のようだ。

共同創設者のBen Ureskyがたびたび言うように,この数年間は需要に応えるためのスケールアップに忙しく,さらにディストリビューションを加えるような基本的な製品開発が,中断を余儀なくされることも少なくありませんでした。現在のDigitalOceanには豊富な資金があり,多くのスタッフもいるので,今回のCoreOSのローンチのような,新しい機能により注力していくことが可能になったのです。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT