インフラのデプロイ¶
このステップでは、AWS バーチャル・プライベート・クラウド (VPC) 上にアプリケーション・スタックを走らせます。このまま進める前に、 アプリケーション・アーキテクチャを学ぶ 必要があります。
このサンプルではアプリケーションを Amazon Web Services (AWS) 上の Swarm クラスタにデプロイします。AWS を使うのは単なる例です。このアプリケーションやデプロイに必要なだけです。皆さん自身で、任意のプラットフォーム上で環境設計を再現可能です。例えば、 Digital Ocean のような別のパブリック・クラウド・プラットフォームや、データセンタ内のオンプレミス上や、ノート PC 上のテスト環境にもアプリケーションをデプロイできます。
注釈
AWS にデプロイしないか、以降の手順で CloudFormation テンプレートを使わない場合は、Docker ホストを実行するカーネルを 3.16 以上にしてください。Docker コンテナのネットワーク機能を使うためには、このバージョンのカーネルが必要です。
デプロイ手順の概要¶
AWS 基盤にデプロイする時に必要なのは、まず VPC を準備し、それから CloudFormation 用テンプレートを適用します。テンプレートにはサンプル・スタックで使うホストの詳細が記述されています。VPC を作成したあとは、CloudFormation テンプレートを通して全てのインスタンスを VPC 上に構築するように、デプロイを2つの手順に分けています。
以下の図は CloudFormation テンプレートを実行するために必要となる VPC インフラです。
AWS の設定は1つの VPC 上で1つのパブリック・サブネットを使います。 CloudFormation テンプレート を動作させるために、VPC は us-west-1
リージョン(N.California)か us-west-2
(Oregon) にする必要があります。この CloudFormation テンプレートを動かすためには、これらのリージョンが 必要 です。別のリージョンを使いたい場合は、テンプレートをインポートする前にテンプレートのリージョン情報を変更してください。
VPC ネットワーク・アドレス空間は 192.168.0.0/16
であり、1つの 24 ビットのパブリック・サブセットが 192.168.33.0/24 として切り出されています。このサブセットからインターネットへのデフォルト経路は、VPC の内部ゲートウェイを経由する必要があります。6つの EC2 インスタンスの全てを、このバブリック・サブセットにデプロイします。
VPC を作成した後は、 docker/swarm-microservice-demo-v1
リポジトリ にある CloudFormation テンプレートを使って EC2 インスタンスをデプロイします。
動作条件¶
Amazon AWS アカウントを持っている必要があります。このアカウントとは、個人のものでも会社のものでも構いません。アカウントは EC2 インスタンスを us-west-1
リージョン(N.california)にデプロイできる必要があります。
以下の手順を進める前に、 us-west-1
リージョンに EC2 キーペアが存在しているかどうかを確認し、 .pem
ファイルをダウンロードします。もしまだであれば AWS にログインし、 キーペアの作成手順 を読み、キーペアを作成してから、 .pem
ファイルをダウンロードします。
自分のローカルマシン上に サンプル・アプリケーションの GitHub リポジトリ を git clone (コピー作成)します。あるいは、ローカル環境に zip
ファイルを ダウンロード し、展開する方法もあります。
ステップ1:VPC の構築と設定¶
このステップでは Amazon 上の VPC ウィザードを使います。VPC を手動で構築したい場合は、以下の値で VPC を設定します。
フィールド | 値 |
---|---|
VPC Network (CIDR) | 192.168.0.0/16 |
VPC Name | swarm-scale |
Subnet network (CIDR) | 192.168.33.0/24 |
Availability Zone |
|
Subnet name | publicSwarm |
DNS resolution | Yes |
Subnet type | Public (with route to the internet) |
Availability Zone | Any |
Auto-assign public IP | Yes |
Router | A single router with a route for local traffic and default route for traffic to the internet |
internet gateway | A single internet gateway used as default route for the subnet’s routing table |
To build the VPC, with the wizard.
VPC の作成にはウィザードを使います。
- VPC ダッシュボードに移動します。
- Start VPC Wizard を選びます。
- VPC with a Single Public Subnet を選びます。
- Select をクリックします。
ブラウザは Step 2: VPC with a Single Public Subnet ダイアログを表示します。
- ダイアログを埋めます。
- Create VPC をクリックします。
AWS が VPC を構築すると VPC Successfully Created ページが表示されます。
- OK をクリックします。
- VPC ダッシュボード メニューから Subnets を選択します。
publicSwarm
サブネットを探します。
Subnet Actions > Modify Auto-Assign Public IP
を選びます。
- Enable auto-assign Public IP**を選び、 **Save をクリックします。
次のステップでは CloudFormation テンプレートを使って残りの AWS 設定を進めていきます。
ステップ2:ネットワーク・スタックの構築¶
このステップは CloudFormation テンプレートを使い AWS 上にスタックを構築します。始める前に、動作条件を確認します。
- 自分の AWS アカウントに個人のキー・ペアを関連づけていること
- ローカルマシン上に サンプル・コード <https://github.com/docker/swarm-microservice-demo-v1> をダウンロードするか複製する
それから、以下の手順に進みます。
- AWS コンソールの CloudFormation ページから Create Stack (スタックの作成)を選びます。
- Create Stack をクリックします。
- Choose a template (テンプレートの選択)セクションにある 選択 ボタンを押します。
- ダウンロードしたサンプル・コードを探したし、CloudFormation テンプレートにある
swarm-microservice-demo-v1/AWS/cloudformation.json
を指定します。
- Next をクリックします。
テンプレートの Specify Details ダイアログの詳細から対象システムを指定します。
- スタックの名前は
VotingAppStack
です。
この名前を使っても構いませんし、他にも意味のある名前を指定できます。
- KeyName ドロップダウンからキーペアを選びます。
- Subnetid ドロップダウン・メニューから
publicSwarm
を選びます。
- Vpcid ドロップダウン・メニューから
swarm-scale
を選びます。
- Next を2回押し、 Review ページを表示します。
- 値を確認します。
Template URL 、 SubnetId 、 VpcId は常にユニークであり、毎回違いますが、以下のように表示されます。
(ToDo: 図)
- Create を押します。
スタックの作成が開始され、進行状況が表示されます。
ステップ3:デプロイの確認¶
処理が終わると、CloudFormation は VPC と6つの EC2 インスタンスを投入しています。
インスタンス名 | サイズ | プライベート IP アドレス |
---|---|---|
frontend01 |
t2.micro | 192.168.33.20 |
frontend02 |
t2.micro | 192.168.33.21 |
interlock |
t2.micro | 192.168.33.12 |
manager |
t2.micro | 192.168.33.11 |
store |
m3.medium | 192.168.33.250 |
worker01 |
t2.micro | 192.168.33.200 |
EC2 ダッシュボードに移動すると、各マシンが動いているのが分かります。
AWS のインフラは次のような状態です。
インスタンスは ami-56f59e36
AMI をベースにしています。これは カーネル 3.16 の Ubuntu 14.04 イメージであり、Docker Engine 1.10.2 がインストールされています。また、 /etc/default/docker
の DOCKER_OPTS
行に、次のパラメータを追加しています。
--cluster-store=consul://192.168.33.11:8500 --cluster-advertise=eth0:2375 -H=tcp://0.0.0.0:2375 -H=unix:///var/run/docker.sock
次のステップ¶
これでインフラのスタックを作成完了しました。次のステップ Swarm クラスタの構築 に進む準備が整いました。
参考
- Deploy your infrastructure
- https://docs.docker.com/swarm/swarm_at_scale/02-deploy-infra/