Submit Search
Chef, Consul を使ったクラウドオーケストレーション
•
10 likes
•
3,603 views
Yoshimi Tominaga
Follow
Tech-Circle #8 Chef Meetup
Read less
Read more
1 of 50
Download now
Downloaded 16 times
More Related Content
Chef, Consul を使ったクラウドオーケストレーション
1.
Chef, Consulを使った クラウドオーケストレーション Tech-Cricle#8 Chef
Meetup @tominaga443 By: The City of Vancouver CC BY 2.0
2.
本日のアジェンダ 1. イントロダクション 2. ライフサイクルイベントを意識してChefを使おう 3.
Consulを使ってサーバ間連携しよう
3.
1. イントロダクション By: Joshua
Schnable CC BY 2.0
4.
自己紹介 冨永 善視(Yoshimi Tominaga) @tominaga443 2013.4
~ TIS株式会社 戦略技術センター - OSS Middleware Stack “ISHIGAKI Template” - OSS Cloud Orchestrator “CloudConductor” - その他OSS関連の技術検証
5.
Chefとわたし 入社して最初に買った技術書 まだ日本語の情報が少なく、 情報がまとまっていなかった当時、 新人のわたしを導いてくれた一冊。
6.
ISHIGAKI Template ○ 4,
5時間の構築作業が20分~1時間に ○ インフラにもCIを導入 △ Chef Serverのメンテナンスが割に合わない 俺はこれでChef Serverきらいになったなあもりにも大変すぎるでしょう? • 推奨OSSスタックをテンプレート化 • アプリケーション基盤をChefで自動構築 • Enterprise向けに検証、チューニング
7.
CloudConductor • Infrastructure Pattern
as Code • Autonomous Operation • Pluggable Non-Functional Requirements インフラの”パターン”を組み合わせて クラウドにシステムを自動構築
8.
1枚でわかるCloudConductor(要解説)
9.
By: seyed mostafa
zamani CC BY 2.0 2. ライフサイクルイベントを 意識してChefを使おう
10.
モデルケース LB Web / AP DB
11.
インフラ構築~運用で起きるイベント Middleware Install Configuration Application Deploy Scale Out Scale Up Application New
Release Data Backup Restore
12.
インフラ構築~運用で起きるイベント Middleware Install Configuration Application Deploy Scale Out Scale Up Application New
Release Data Backup Restore
13.
ライフサイクルイベント • Setup: インスタンスがブートした後に発生 •
Configure: インスタンスがOnline/Offline状態に移行したとき発生 • Deploy: アプリケーションをデプロイするとき発生 • Undeploy: アプリケーションを削除するときに発生 • Shutdown インスタンスを停止するときに発生 AWS Opsworks のライフサイクルイベント
14.
CloudConductorのライフサイクルイベント Setup Configure Deploy BackupRestore
15.
CloudConductorのライフサイクルイベント Setup Configure Deploy BackupRestore ベースイメージ作成時 インスタンス起動時 構成変化時 アプリケーション投入時 バックアップ取得時 DR, システム切替時
16.
CloudConductorのライフサイクルイベント Setup Configure Deploy BackupRestore Spec Spec システム構築完了時 アプリケーション デプロイ完了時
17.
ライフサイクルイベントの通知 イベントを通知 Cookbook取得 対応するRun List実行
18.
イベントごとにレシピを分割 tomcat_cluster_pattern ├ site-cookbooks │ ├
apache_part │ │ └ recipes │ │ ├ default.rb │ │ ├ setup.rb │ │ ├ configure.rb │ │ └ deploy.rb │ ├ tomcat_part │ ├ pgpool-II_part │ ├ postgresql_part │ ├ haproxy_part │ └ cloudconductor イベント発生時、 自分のRoleに応じたCookbookから イベントに対応するレシピを実行
19.
Setup tomcat_cluster_pattern/site-cookbooks/apache_part/recipes/setup.rb 各種ミドルウェアのインストール、環境に依存しない設定を実施 設定後スナップショットを取得し、ベースイメージとして利用
20.
Configure tomcat_cluster_pattern/site-cookbooks/apache_part/recipes/configure.rb IPなど、構築するまで確定しない値を必要とする設定を実施 ユーザからパラメータを渡す必要がある設定もここで実施
21.
Deploy tomcat_cluster_pattern/site-cookbooks/apache_part/recipes/deploy.rb アプリケーションファイルの配置、データ投入などを実施 アプリケーションに関するパラメータを必要とする設定もここで実施
22.
ライフサイクルイベントを意識してChefを使おう システムの構成変化をイベントとしてとらえる イベントを意識してChefレシピを分割することで、 運用フェーズでクラウドの機能やツールをうまく活用できる
23.
3. Consulを使ってサーバ間 連携しよう By: Judy
Schmidti CC BY 2.0
24.
Chefだけでは難しいところ • システム構成の管理 • 膨大で不定なノード数 •
起動するたびに変わるIPアドレス • サーバー間連携 • 起動しないと分からないパラメータの連携 • サーバを跨いだレシピ実行の順序制御、待ち合わせ
25.
Chefだけでは難しいところ • システム構成の管理 • 膨大で不定なノード数 •
起動するたびに変わるIPアドレス • サーバー間連携 • 起動しないと分からないパラメータの連携 • サーバを跨いだレシピ実行順の制御 集中管理ではなく自律分散
27.
Consul https://www.consul.io/
28.
Key / Value
Storage 各ノードがKVSを持ち、クラスタ全体で同期 ノード障害が発生しても、全体でデータ保持可能
29.
Consul Watch イベントや通知を受け取ると 特定のコマンド、スクリプトを実行 Health Check 障害通知 障害通知
30.
Consul Event 任意のEventをクラスタ内に伝播 特定のノードにのみ伝播させることも可能 Event Event Event
31.
Consulを使ってサーバ間連携しよう • システム構成の管理 • IPアドレスなど自身の情報をKVSに登録 •
クラスタの情報はConsulの分散KVSに集約 • サーバー間連携 • 必要な情報はKVSでやりとり • Event通知で処理実行のタイミングを合わせる
32.
Consul Event /
Consul Watchの課題 Event が届く順番は保障されない 先のEvent の処理中に次のEvent の処理も実行される Event Event Event Event どっちが先?
33.
Consul Event /
Consul Watchの課題 Event が届く順番は保障されない 先のEvent の処理中に次のEvent の処理も実行される Event Event Event Event どっちが先? イベント発生時の処理を うまく順序制御したい
34.
Consul Event /
Consul Watchの課題 Event が届く順番は保障されない 先のEvent の処理中に次のEvent の処理も実行される Event Event Event Event どっちが先? ないなら作ろう!
35.
※開発中のため、ロゴは 変更になる場合があります https://github.com/cloudconductor/metronome
36.
Metronome Consul と連動 Event 発生時の処理をクラスタ全体で順序制御 •
Event Queuing • Task Sequence Control • Results Sharing
37.
処理の実行順をYAML形式で記述 task.yml events: setup: description: Execute setup task:
setup configure: description: Execute configure chef priority: 50 ordered_tasks: - service: postgresql task: configure - service: tomcat task: configure - service: httpd task: configure service, tag で対象絞込み 前のタスク結果を待ってから 次のタスクを実行 Event 発生時に実行する タスクを指定
38.
処理の実行順をYAML形式で記述 task.yml tasks: setup: description: Execute setup
chef operations: - execute: file: prepare.sh - chef: run_list: - role[{{role}}_setup] configure: description: Execute configure chef operations: - chef: run_list: - role[{{role}}_configure] 実行する処理を記述 operations - execute: シェルを実行 - chef: Chefを実行 - service: サービス起動/停止 - echo: 文字列を出力 - consul-event: イベント発行 - consul-kvs: KVS操作
39.
イベントをキューに追加 EventQueue: Consul KVSConsul Cluster Event metronome
push
40.
タスクをキューに展開 EventQueue: ProgressTaskQueue: Consul KVS metronome.Event Consul Cluster Event metronome
push
41.
各ノードでタスクを実行 EventQueue: ProgressTaskQueue: Consul KVS metronome.Event metronome.EventTask - service -
tag - task Consul Cluster Event metronome push
42.
タスクの実行結果を格納 EventQueue: ProgressTaskQueue: Consul KVSConsul Cluster Result
NodTaskResult:
43.
タスクのキューを進める EventQueue: ProgressTaskQueue: Consul KVSConsul Cluster Result
NodTaskResult: TaskResult:
44.
全タスクが終了したら結果を格納 EventQueue: ProgressTaskQueue: Consul KVSConsul Cluster Result
NodTaskResult: TaskResult: EventResult:
45.
順序制御で複雑な待ち合わせも可能に DBサーバ⇒APサーバ⇒Webサーバの順にサービス起動 マスターDBにデータを投入してからスレーブDBを起動 各サーバの公開鍵をKVSに登録して一括共有
46.
CloudConductorにおけるツールの使い分け CloudFormation OpenStack Heat Packer Chef Consul Metronome Serverspec Provisioning
● ● Configuration ● ● Application Deploy ● ● Test ● ● Lifecycle Event ● ●
47.
まとめ システム構成が変化するクラウド環境では すべてを集中管理することは難しい
48.
まとめ Chef による自動化 Consul による自律分散
49.
まとめ 上手く活用して システム運用を自働化しよう!
50.
Thank you for
listening.
Download