CDP:Bootstrapパターン

From AWS-CloudDesignPattern
Jump to: navigation, search

起動設定の自動取得

Contents

解決したい課題

マシンイメージからサーバを作成する方法、すなわちStampパターンの適用に際し、どの程度の頻度でマシンイメージを取得するかは 運用効率に対する課題として、しばしば議論となる。

Stampパターンは、ミドルウェアからアプリケーションまですべてが設定済みで、立ち上げるだけでそのまま動くマシンイメージを作成することもできる。

従って、仮想サーバの起動は非常に早いが、ミドルウェアの一つにバージョンアップが必要な場合や、アプリケーションの設定に変更が入った場合、マシンイメージを再度作成し直す必要がでてきてしまう。

クラウドでの解決/パターンの説明

クラウドではマシンイメージの作成が容易にでき、起動時にパラメータが設定できるものもある。 この機能を利用しサーバ構成に必要なパラメータを渡すことで、サーバを起動する際に必要な設定を サーバ自ら取得し、インストール、起動、設定までを実施するマシンイメージを作成することが可能となる。 これにより、個々のパッケージのバージョン変更等の際にマシンイメージを作りなおす必要がなくなる。

実装

EC2インスタンスの初期化に必要なさまざまなパラメータファイルをAmazon S3に配置し、EC2インスタンス起動時にそのパラメータファイルを読み込み、動的に自分自身を構築するAMIの作成を行う。 (パラメータファイルはgitなどのリポジトリに置くことも可能)

  • ブートストラップする際に必要なデータなどを、S3やその他Git等のレポジトリに用意しておく。ブートストラップを仕込んだEC2のAMIを作成しておく。
  • EC2を、ブートストラップが仕込まれた特定のAMIから起動する。
  • そのEC2は、起動時に、自らが、必要なパッケージを取得、インストール、起動、設定を行う。
  • そのAMIをもとに、必要時に、動的にサーバを複製できる。

なお、Amazon Linuxであればcloud-initという初期化機能が入っており、ユーザーデータ領域に初期化スクリプトを書いておく事で、自動的に実行することができる。

構造

6wNg0ISJczU5Pz1m-33D32.png

利点

  • インストールが必要なパッケージのバージョンがアップデートされたようなときも、AMIそのものを作り直す必要がない。
  • 逆にベースとなるAMI自体のバージョンがあがった場合も、AMIを作り直す必要がない
  • 起動時にパラメーターなどを引き渡すことによって、動的にその起動時の設定の順序や内容を変更できる。

注意点

どのレイヤーまでを固定的なAMIとし、どのレイヤーよりも上を起動時の動的な設定にするかは、選択の幅がある。 Stampパターンとのトレードオフを考慮して、どちらのパターンを適用するかを検討する。

寄贈したアーキテクト

Ninja of Three

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox