35
(株)DTS 大西正太

Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Embed Size (px)

DESCRIPTION

2014年2月4日 第4回 OSS運用管理勉強会での発表資料です。 http://www.oss-kanri.org/20140204_vol04/ RubyとZabbixを使ってHeroku(PaaS)をオートスケールするBounscaleというサービスの機能・内部構成・技術ノウハウなど。

Citation preview

Page 1: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

(株)DTS 大西正太

Page 2: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 3: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

About this talk

DTSにて取り組んでいるBounscaleについてご紹介します

Zabbixを利用して動いているサービスです

Page 4: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 5: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Me

大西正太

(株)DTS

保有資格

ビアテイスター

オイスターマイスター

Page 6: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Ruby(Rails) Programmer / Architect / PM

2005~

Page 7: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

発表・記事など

Page 8: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 9: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Bounscaleとは

Webアプリの負荷が高まったら、

自動的に計算能力を高めて、

サービスのレスポンス低下を抑止する、

Heroku(PaaS)上のアドオンです

Page 10: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Bounscale利用の何がいいのか

オペレータの人件費発生

不十分なレスポンス改善

従来のリソース管理 Bounscale導入後

Webシステム インターネット

スパイクトラフィック

監視ツール

オペレータ 手作業

自動化による人件費削減

レスポンスの即時改善

Webシステム インターネット

スパイクトラフィック

Bounscale

自動

Page 11: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

オートスケールの設定をすると

Page 12: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

サービスのレスポンスを維持してくれる

緑のグラフがレスポンスタイム

青い点が計算能力 (Dyno)

Page 13: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 14: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

HerokuはPaaSの一種 PaaSはクラウドの一種

Page 15: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

PaaSの範囲

IaaS(HW/OS) Infrastructure as a service

PaaS(ミドル/ 言語/フレームワーク) Platform as a service

SaaS(App) Software as a service

Page 16: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

PaaS Players

Page 17: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

PaaSを使うと

開発時 サーバ構築省略 プログラムを書いて

アップロードすれば

ブラウザから利用できる

運用時 インフラ保守の省略化 プロセス監視省略

フェイルオーバー省略

セキュリティパッチ省略

性能が落ちてきたらワンクリックでリソース追加 Bounscaleを使うとワンクリックも不要

アプリ engineer

PaaS App

インフラengineer

App

Page 18: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 19: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Herokuの特徴

Salesforce社が買収(2011)

RubyのPaaSとしてスタート

今はマルチ言語対応(Java,Scala,node・・・)

Rubyの生みの親、まつもと氏やRubyVM開発者のささだ氏が在籍

300万以上のサービス

最小プランは無料

Page 20: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Heroku add-ons

ワンクリックでアプリに機能追加できる機構

サーバ版のAppStoreのイメージ

Heroku社~サービサ~アドオンのエコシステム

Herokuが課金を実施しレベニューシェア

現在100前後のアドオンが公開されている

Bounscaleはこのアドオンとして公開している

Page 21: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Heroku add-onsのイメージ

①カタログトップ

②Bounscaleトップ →適用App選択

③Appトップ →Bounscaleアイコン クリック

④Bounscale画面

Page 22: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 23: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

詳細なアーキテクチャ

Page 24: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

大体こんな感じ

Zabbix

API カスタム

Item カスタム Action

Trigger

アプリ アプリ Bounscale

Agent gem

ログ参照WebAPI

スケールWebAPI

zbxapi

gem

History

リソース 情報出力

スケールイン・アウト +

User

開発者 設定

リリース

利用

Item,Action,Trigger設定

History取得

リソース 情報取得

Page 25: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

カスタムItemの実現方法

Zabbixのagent拡張機構を利用

Itemの種類を独自に増やすことができる

# zabbix-agentd.conf

UserParameter=heroku.resource.cpu[*],

ruby /xxx/heroku_status_get.rb cpu $1 $2 $3 $4

・heroku.resource.cpuをキーとしたItemを作成可能になる ・このItemは指定のコマンド(今回はRubyスクリプト)実行の標準出力をHistoryの値として記録する

Page 26: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

カスタムItemで取得するリソース

アプリレイヤから取得した結果を出力しているため低~高レイヤな情報を取得可能 CPU時間

メモリ

スループット 1分辺りのリクエスト数

ビジー率 直近10秒のうちリクエスト処理している時間の割合

レスポンスタイム

Herokuは仮想化(AWS)+コンテナ化(LXC)されているので低レイヤな情報はあまりあてにならない レスポンスタイム+ビジー率の利用を推奨

Page 27: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

カスタムActionの実現方法

普通にZabbixのActionからcommand実行

TriggerがアラートをあげたらAction実行しているだけ

特にトリッキーなことはしていません

スケールアウトしたらアラートをacknowledgeして対応済みとして取り扱うようにしている

acknowledgeのコメント欄にスケール数などの詳細情報を記録。Webコンソールの履歴表示に情報を活用したりしている。

Page 28: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 29: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

Zabbix使ってよかったところ

とにかく安定している

ZabbixServerもAgentも全然落ちない

メモリが増えていく事もない

古いデータが増加し続けることもない

黙々と作業を続けてくれる

Page 30: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

大変だったこと(1)zbxapiが微妙

ZabbixAPIのRubyラッパー

対応バージョンが古い(Zabbix1.8?) 旧Verになかったオブジェクトは自分で定義したり HostInterface等。一応DSLチックに追加できる。

旧Ver向けのバリデーションを無効化したり

名前空間が分割されていない グローバルにItem/Actionクラスが定義されて衝突

エラーメッセージがいい加減でほとんどの場合APIのPHPソースを読む事になる /frontends/php/api/**/*.php

最近github上でメンテされてて直ってるかも? https://github.com/red-tux/zbxapi/commits/master

Page 31: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

大変だったこと(2)Trend APIがない

History:全Item値履歴 / Trend:丸めたもの

Historyがあるんだから、Trend APIは必要ないとフォーラムに書いてある・・・

Historyはデータが多いので性能対策必要

バッチでRuby側のDBにデータを転送・保持

Zabbix側のHistoryは24時間で自動削除設定

ただし結果的に全体の性能に適したアーキテクチャになったとも考えられる

ZabbixのMySQLはスキーマが1つしかない

Ruby側は各利用者ごとにスキーマを分けている

Page 32: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

大変だったこと(3)APIの性能

Item/Action/Triggerの操作などに1秒前後

何度か呼び出すとオンラインでは耐えられない

AP側からの呼び出しを最小限に抑えるために独自にzbxapiを拡張しキャッシングを実装

リクエストJSONをハッシュ化したものをキー、レスポンスをバリューにしてKVS的なDBに保持・取得

http://qiita.com/bounscale/items/ffb7d8eba3833f1e3cf6

ZabbixAPIのPHPにアクセラレータAPCを適用

ロードアベレージが8.8→3.4に改善 http://qiita.com/bounscale/items/4cc65e628e54c06a60f3

Page 33: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
Page 34: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

ワールドワイド

世界中のサービスで利用されている

アメリカ、カナダ・・・

イギリス、フランス、スペイン・・・

日本、台湾、インド・・・

オーストラリア、グルジア・・・

Page 35: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会

ご静聴ありがとうございました

Bounscale使ってみてください!!

$ heroku addons:add bounscale https://devcenter.heroku.com/articles/bounscale * マニュアル