Mesosでカナリアリリースだと!?
@tetsuyasd
Mesos Meetup Tokyo #2
2017/07/25
Who am I ?
2
名前: 惣道 哲也 (そうどう てつや)
Twitter: @tetsuyasd
所属: 日本ヒューレット・パッカード株式会社
テクニカルコンサルティング事業統括
職務: オープンソース関連なんでも(調査、検証、構築、提案)
- Hadoop
- OpenStack
- Docker
- Ansible
- TensorFlow
- Mesos(DC/OS) New
「赤ずきんちゃんはIIJ GIOのマスコットキャラクターです」
https://www.iij.ad.jp/GIO/socialapp/character.html
Agenda (15min)
3
1. AzureからDC/OSをインストール(事前導入済)
2. Vampのインストール
3. カナリアリリースであんなこと、こんなこと
今日のゴール
• Vamp/カナリアリリースについ
てわかった気になる
1. AzureからDC/OSをインストール
4
AzureからDC/OSをインストールしてみる
5https://dcos.io/docs/1.8/administration/installing/cloud/azure/
CLI、ARMテンプレート等いろいろありますが、
今回はポータルからAzure Marketplaceに
登録されているDC/OS on Azureをデプロイ
AzureからDC/OSをインストールしてみる
6
以下の項目あたりを指定して7分ほど待つ
– SSH public key 手持ちのSSH公開鍵
– Enable OAuth false(default) → true
– Resource Group 任意のグループ名
– Region 任意のリージョン
– Agent数 1-100まで ※masterは1つになります
– VMサイズ D2_V2(default)
入力項目
予算
以下は試算例。東日本リージョンでD2_V2サイズ(2017/7/26時点)を使用。
( Master x1 + Agent x2 ) ≒ 60円/h (1450円/日) くらい
クラスタへのアクセス
7
クライアントからMasterノードへのSSHトンネルを設定
事前準備
$ MASTER=<masterのFQDNをAzurePortalからコピー>
$ ssh -fNL 8000:localhost:80 -p 2200 azureuser@$MASTER
Masterノードへ上記のSSHトンネル経由でアクセス。
OAuth認証を有効化したので適切な方法でログイン
ブラウザでのログイン
クラスタへのアクセス
8
ログイン後の画面
2. Vampをインストール
9
Elasticsearch(依存サービス)のインストール
10
新規サービスをdeploy
右上の”JSON mode”をONにしてJSONテンプレートを添付
JSON内部ではdockerコンテナ名などが指定されている
→9200ポートでElasticsearchが起動
App JSONによるinstall
Vampのインストール
11
Vampをデプロイ
みんな大好きUniverse
依存サービスのElasticsearchと連携が必要
“advanced install”を選択して、
“elasticsearch-url”に以下を指定すること
注意点1
http://elasticsearch.marathon.mesos:9200
注意点2
“elasticsearchurl”の入力テキストが、なぜかChromeだと入力できない・・・
→ Firefoxを使います
Vampサービスへのアクセス
12
新しいウインドウが開いて
Vampにアクセス可能
vampのリンクを開く
この後、デモします!
Vampの用語の一部をご紹介
13
各サービスと依存性を記述した定義。(例:Dockerコンテナなどを記述する)
Breed
Blueprint
Deployment
実行中のBlueprint
Breedが実行時どのように動作するか、保持するプロパティなどを定義。
Gateway
着信トラフィックと送信先のペアを定義した静的ルーティングを定義
ここに複数のdeploymentを定義して、ト
ラフィック割り当てを動的に変更させると、
カナリアリリースが実現できる
3. カナリアリリースであんなこと、
こんなこと
14
「カナリアリリース」とは
15
もともとは1913年に炭鉱労働者の一酸化炭素中毒による事故を防ぐために、
カゴに入れた鳥を連れて行ったことが由来
新規リリースでの、最初のリクエストを処理するのが「カナリア」
新規リリースに問題が起きた場合、「カナリア」は危険を知らせることが期待される
おれの考えた
さいきょうの
リリースを
デプロイするぞ!
カナリア
いないとヤバス・・・
「カナリアリリース」とは
16
新規トラフィックのうち、コントロール可能な少数だけをカナリア(新規バージョン)に誘導したい
それでカナリアに問題がなければ、残りのトラフィックも新規バージョンに流入させる
もしカナリアで問題があれば、「すみやかに」 ロールバックしたい
95%の
ユーザリクエスト
5%
Chrome
Mozilla
IPアドレスやブラウザなど
クライアントの条件で制御
するパターンもある
信頼と実績の
ver1.0
先進機能満載の
ver1.1
嫌なヨカン
やりたいこと
カナリアリリースの要件まとめ
17
1. 新規リリース時に流入トラフィックをコントロールしたい
※単なるblue-green deploymentと違い、任意のトラフィック流入率を設定したい
(加えて、バックエンドセッションが終わるまでセッションが切れない、など)
2. 新規リリースに問題があった際に検知して、rollbackしたい
おれの考えた
さいきょうの
リリースを
デプロイするぞ!
ヤメテー!
Demo
18
カナリアリリースのデモ
19
本資料に関するお問い合わせ
@tetsuyasd
Mailto: tetsuya.sodo@hpe.com
Mesosは、米国およびその他の国において登録されたApache Foundationの商標です。
その他、本資料で記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。
本発表内容やデモ内容に関して、ご質問等があればお問い合わせ下さい。
また、内容に関しては個人の意見に基づくものであり、所属組織団体の公式見解とは異なる場合がございます点、ご了承
下さい。

MUGT02 - vamp demo