Micro Service for Autonomous Infrastructure

28
マイクロサービスで実現する インフラの自働化 2015/10/09 次世代クラウド勉強会 #LT

Transcript of Micro Service for Autonomous Infrastructure

マイクロサービスで実現する

インフラの自働化

2015/10/09

次世代クラウド勉強会 #LT

自己紹介

冨永 善視

@tominaga443

Tominaga Yoshimi

自己紹介

TIS株式会社

R&D(OSS開発, 技術検証...)

OpenStack, Chef, Docker, Machine Learning

SIerでマイクロサービス?

でもSIerのつくるシステムって…

商用統合パッケージを使う場合が多いのでは?

統合パッケージはエンタープライズ向けに完成されている

アジャイらないし継続的デリバらない案件も多数

AWS案件では徐々にマイクロサービス化が進みつつある

マイクロサービス化するとしたら?

まずは開発環境をDevOps化

システム構築・運用の自動化、効率化

マイクロサービスで実現するインフラの自働化

やりたいこと

いわゆるInfrastructure as Code

構築だけでなく運用も対象にしたい

インフラ自働化の全体像

インフラ自働化の全体像 システム管理やイベント通知を実施する

OSSオーケストレーションツール http://cloudconductor.org/

インフラ自働化の全体像

Packer, CloudFormation, Heatを使って クラウドにシステムをプロビジョニング

インフラ自働化の全体像

Consulクラスタにイベントを通知 イベントに応じてChef, Serverspecを実行

本日の内容

Consul

Hashicorp製のオーケストレーションツール

分散KVS、サービスディスカバリ、障害検知、イベント通知

Consul導入で実現したこと

IPアドレスなど、サーバの情報をKVSに集約・連携

外部からのイベント通知による任意処理の実行

外部から指示を受け取るサーバの冗長化

でも…

Consul Eventの課題

Event が届く順番は保障されない

先のEventの処理中に次のEventの処理も実行される

終わるまで待って!

Event B Event A

どっちが先?

Consul Eventの課題

Event が届く順番は保障されない

先のEventの処理中に次のEventの処理も実行される

終わるまで待って!

Event B Event A

どっちが先?

イベントの順序制御や 実行時の待ち合わせをしたい

Metronome

Consulと連動するタスクスケジューラ

Event Queuing, Task Sequence Control, Results Sharing

https://github.com/cloudconductor/metronome

これ

イベントとタスクのキューイング

イベントごとに実行するタスクをYAML形式で記述

events: setup: description: Execute setup task: setup restart: ordered_tasks: - service: postgresql task: db_restart - service: tomcat task: ap_restart - service: httpd task: web_restart

Consulのserviceやtagで絞り込み可能

クラスタ全体のタスク実行順を制御

どのイベントでどのタスクを

実行するか指定

タスクごとに実行する処理を記述

tasks: setup: operations: - execute: file: prepare.sh - chef: run_list: - role[{{role}}_setup] db_estart: operations: - service: name: postgresql-9.4 action: restart

実行するオペレーションを記述

operations

- execute: シェルを実行

- chef: Chefを実行

- service: サービス起動/停止

- echo: 文字列を出力

- consul-event: イベント発行

- consul-kvs: KVS操作

Metronome導入でできるようになったこと

DBサーバ⇒APサーバ⇒Webサーバの順にサービス起動

マスターDBにデータを投入してからスレーブDBを起動

各サーバの公開鍵をKVSに登録してから一括共有

導入前はChefでひたすらループ…

マイクロサービスとしての実装

Consulの拡張ではなく別ツールとして実装

分散KVSであれば連動できるよう設計

まとめ

マイクロサービス化する対象は見極めよう

一度にすべてをサービス化する必要はない

徐々にマイクロサービスとして切り出していこう

THANK YOU!