Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
-
Upload
shota-onishi -
Category
Technology
-
view
560 -
download
8
description
Transcript of Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会
![Page 1: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/1.jpg)
(株)DTS 大西正太
![Page 2: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/2.jpg)
![Page 3: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/3.jpg)
About this talk
DTSにて取り組んでいるBounscaleについてご紹介します
Zabbixを利用して動いているサービスです
![Page 4: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/4.jpg)
![Page 5: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/5.jpg)
Me
大西正太
(株)DTS
保有資格
ビアテイスター
オイスターマイスター
![Page 6: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/6.jpg)
Ruby(Rails) Programmer / Architect / PM
2005~
![Page 7: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/7.jpg)
発表・記事など
![Page 8: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/8.jpg)
![Page 9: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/9.jpg)
Bounscaleとは
Webアプリの負荷が高まったら、
自動的に計算能力を高めて、
サービスのレスポンス低下を抑止する、
Heroku(PaaS)上のアドオンです
![Page 10: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/10.jpg)
Bounscale利用の何がいいのか
オペレータの人件費発生
不十分なレスポンス改善
従来のリソース管理 Bounscale導入後
Webシステム インターネット
スパイクトラフィック
監視ツール
オペレータ 手作業
自動化による人件費削減
レスポンスの即時改善
Webシステム インターネット
スパイクトラフィック
Bounscale
自動
![Page 11: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/11.jpg)
オートスケールの設定をすると
![Page 12: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/12.jpg)
サービスのレスポンスを維持してくれる
緑のグラフがレスポンスタイム
青い点が計算能力 (Dyno)
![Page 13: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/13.jpg)
![Page 14: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/14.jpg)
HerokuはPaaSの一種 PaaSはクラウドの一種
![Page 15: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/15.jpg)
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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/16.jpg)
PaaS Players
![Page 17: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/17.jpg)
PaaSを使うと
開発時 サーバ構築省略 プログラムを書いて
アップロードすれば
ブラウザから利用できる
運用時 インフラ保守の省略化 プロセス監視省略
フェイルオーバー省略
セキュリティパッチ省略
性能が落ちてきたらワンクリックでリソース追加 Bounscaleを使うとワンクリックも不要
アプリ engineer
PaaS App
インフラengineer
App
![Page 18: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/18.jpg)
![Page 19: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/19.jpg)
Herokuの特徴
Salesforce社が買収(2011)
RubyのPaaSとしてスタート
今はマルチ言語対応(Java,Scala,node・・・)
Rubyの生みの親、まつもと氏やRubyVM開発者のささだ氏が在籍
300万以上のサービス
最小プランは無料
![Page 20: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/20.jpg)
Heroku add-ons
ワンクリックでアプリに機能追加できる機構
サーバ版のAppStoreのイメージ
Heroku社~サービサ~アドオンのエコシステム
Herokuが課金を実施しレベニューシェア
現在100前後のアドオンが公開されている
Bounscaleはこのアドオンとして公開している
![Page 21: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/21.jpg)
Heroku add-onsのイメージ
①カタログトップ
②Bounscaleトップ →適用App選択
③Appトップ →Bounscaleアイコン クリック
④Bounscale画面
![Page 22: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/22.jpg)
![Page 23: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/23.jpg)
詳細なアーキテクチャ
![Page 24: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/24.jpg)
大体こんな感じ
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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/25.jpg)
カスタム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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/26.jpg)
カスタムItemで取得するリソース
アプリレイヤから取得した結果を出力しているため低~高レイヤな情報を取得可能 CPU時間
メモリ
スループット 1分辺りのリクエスト数
ビジー率 直近10秒のうちリクエスト処理している時間の割合
レスポンスタイム
Herokuは仮想化(AWS)+コンテナ化(LXC)されているので低レイヤな情報はあまりあてにならない レスポンスタイム+ビジー率の利用を推奨
![Page 27: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/27.jpg)
カスタムActionの実現方法
普通にZabbixのActionからcommand実行
TriggerがアラートをあげたらAction実行しているだけ
特にトリッキーなことはしていません
スケールアウトしたらアラートをacknowledgeして対応済みとして取り扱うようにしている
acknowledgeのコメント欄にスケール数などの詳細情報を記録。Webコンソールの履歴表示に情報を活用したりしている。
![Page 28: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/28.jpg)
![Page 29: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/29.jpg)
Zabbix使ってよかったところ
とにかく安定している
ZabbixServerもAgentも全然落ちない
メモリが増えていく事もない
古いデータが増加し続けることもない
黙々と作業を続けてくれる
![Page 30: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/30.jpg)
大変だったこと(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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/31.jpg)
大変だったこと(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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/32.jpg)
大変だったこと(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運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/33.jpg)
![Page 34: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/34.jpg)
ワールドワイド
世界中のサービスで利用されている
アメリカ、カナダ・・・
イギリス、フランス、スペイン・・・
日本、台湾、インド・・・
オーストラリア、グルジア・・・
![Page 35: Herokuのオートスケール addon 「Bounscale」@第4回 OSS運用管理勉強会](https://reader035.fdocument.pub/reader035/viewer/2022062307/55518d75b4c90596028b55cb/html5/thumbnails/35.jpg)
ご静聴ありがとうございました
Bounscale使ってみてください!!
$ heroku addons:add bounscale https://devcenter.heroku.com/articles/bounscale * マニュアル