fbpx

#SwarmWeek: HealthDirect社がBlue/Greenデプロイを実現するためにDocker Swarmを採用 #docker

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

このたび、弊社ではDocker社とのパートナーシップの一環としてDocker社のブログの和訳記事を随時発信していくことになりました。

今回の記事が第3回目となります。

Healthdirect Australiaは、すべてのオーストラリア人に健康に関する情報やアドバイスへのアクセスを提供しています。場所や時間にかかわらず専門家と話したり、健康問題に対する適切なケアについての信頼できる助言をオンラインで見つけることができます。また、必要な時に、営業中の近隣のサービスを見つけることもできます。

私たちのDockerの旅はもともとオープンソース版から始まりました。初期はインフラとアプリケーションのプロビジョニングのサポートのためのツールを増築するのに投資していました。最近ではEngine, Trusted RegistryそしてControl Plane (Swarmに付属しています)から構成されるDocker Datacenterに移行しました。この移行の理由としては、管理、プラグイン、エコシステムが箱から出してすぐに利用可能な、統合されたend-to-endプラットフォームがあるということが決め手でした。Docker Datecenterはアプリケーション環境の確固とした基盤を提供するため、私たちのチームはお客様のためになるアプリケーションの構築やデプロイに時間をかけることができます。
このブログでは、どのようにDocker Swarmを用いてblue green deploymentsを行うかを説明します。
HealthdirectではPuppetを用いてSwarm クラスタをデプロイし、デプロイする毎にお客様が一貫してdefined状態になっていることを確実にします。この例では、ローカルTrusted RegistryからDockerイメージを引き出してみます。私たちの環境はAWSベースですが、他のクラウドプロバイダ、例えばOpenstackにも簡単に同じアプローチを移植することができます。内部レジストリを使用する理由は、デプロイするエンドポイントの近くにイメージがあることによるデプロイ時間のスピードの速さを利用するためです。
ではまずはパイプラインを見てみましょう。Jenkinsのようなビルドサーバーにインスタンスをプロビジョンするためのデプロイツールがあると想定します。ビルドプロセスの一部としてcloud init userdataがノードに対してPuppetでブートストラッピングします。

環境は次のようになっています。

クラスタを構築するのに次のPuppetモジュールを使用します。_Docker, _Docker Swarm と _Consul です。(サービスディスカバリにはSwarmをバックエンドとして使うため)
Consulクラスタを構築するのには次のコードを用います。

このコードでは、Consul クラスタをセットアップし、Docker daemonが正常であることを確認するための簡易なヘルスチェックをセットアップします。Consulをセットアップするためのコードが2ブロックあることがわかります。一つ目はクラスタをブートストラッピングするため、二つ目はクラスタに加わるためです。

次にswarm-privateと呼ばれるネイティブDockerネットワークを用いてSwarmのセットアップをします。オーバーレイドライバーを用いて、swarm-privateという名前のプライベートネットワークを作成します。ここでまたSwarmクラスタをセットアップするためのコードが2ブロックあります。一つはブロックがマスターになっており、二つ目はクラスタにより多くのノードを追加する機能を提供します。

最後のコード抜粋(下記)はSwarm clusterにアプリケーションをデプロイしています。この例では、Docker Trusted Registryにnginx、アプリケーションおよびdbDockerのイメージがあります。そしてPuppetを使いクラスタにイメージを持って来てデプロイします。

ここまででわかるように、データベースへのアクセスを制限するためにネイティブのDockerネットワーキング・スタックを利用しています。商用環境ではすべてのコンテナが正確に広がることを確実にするために、定期フィルタリングを追加してもいいかもしれません。

このダイアグラムに描かれているように、活動中のSwarmクラスタがありますが、これを定義し繰り返す利用することが可能です。アプリケーションの新しいビルドがリリースされると、新しいSwarm クラスタを構築することができます。blue and green deploymentをデプロイすることができ、さらにロードバランサーのリポイントまたはDNSのどちらかをすることができるため、これはディベロッパー、QAチーム、そして商用環境にとっては完璧です。

ーーー
スコットさん、Dockerの導入事例の共有ありがとうございます!
詳細については、こちらのHealthdirect社彼らからのDocker Datacenterリリース発表をご覧ください。

スコットさん自身によりコントリビュートされたSwarm用のPuppet モジュールはこちらでご確認いただけます。

新規CTA