Dev@cloudの実装
-
Upload
kohsuke-kawaguchi -
Category
Technology
-
view
3.990 -
download
3
description
Transcript of Dev@cloudの実装
©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved
DEV@cloud の実装Jenkins-as-a-Service はどうやって動いているか
川口耕介
©2010 CloudBees, Inc. All Rights Reserved
2©2010 CloudBees, Inc. All Rights Reserved
DEV@Cloud とは• Jenkins のホスティング– 1000+ のマスタ– のべ 1,500,000 分以上のビルド
• ソースコード・バイナリリポジトリなど– Git, SVN, Maven
• 現在は EC2 上で動作
©2010 CloudBees, Inc. All Rights Reserved
3©2010 CloudBees, Inc. All Rights Reserved
Jenkins マスター• マスターは別々の JVM で– 別の OS ユーザーで
• なぜ?– 隔離– モニタリング・診断などが簡単
• 一台の計算機に多数のマスタを集積– 使われていないインスタンスは乾燥保存
©2010 CloudBees, Inc. All Rights Reserved
4©2010 CloudBees, Inc. All Rights Reserved
Jenkins マスターのコード• Core = OSS Jenkins– LTS– 独自パッチはほぼ解消した
• 独自プラグイン群– ユーザーに使われると困るもの
• Groovy Console• マスター上でビルドが起こらないように
– ユーザーが設定する必要のないもの• メールサーバの設定• ルート URL の設定
©2010 CloudBees, Inc. All Rights Reserved
5©2010 CloudBees, Inc. All Rights Reserved
Jenkins マスターのデータ• $JENKINS_HOME は EBS に– 1テナント1ボリューム– スナップショットによるバックアップ
• サイズの拡大が可能– 再マウントの為の短いダウンタイムが必要
• スナップショット+クローンを活用したい!– プラグイン実験用の一時的クローンとかどうで
しょう?
©2010 CloudBees, Inc. All Rights Reserved
6©2010 CloudBees, Inc. All Rights Reserved
Jenkins の外 :Chef
• Tomcat• 初期設定• ビルドツール• …
package “httpd”cookbook_file “/etc/httpd.conf” do
source “myconfig”endservice “httpd” do action :startend
©2010 CloudBees, Inc. All Rights Reserved
7©2010 CloudBees, Inc. All Rights Reserved
Chef のアーキテクチャ
chef-server
slavesweb-tier
masters
©2010 CloudBees, Inc. All Rights Reserved
8©2010 CloudBees, Inc. All Rights Reserved
Chef の使い方の工夫• Chef にゼロからスレーブをセットアッ
プさせていると間に合わない
• 予めセットアップしたやつを AMI 化– 残りデルタだけを起動時に Chef にやっても
らう
©2010 CloudBees, Inc. All Rights Reserved
9©2010 CloudBees, Inc. All Rights Reserved
Jenkins と Chef/Puppet
Series1
Chef/Puppet
手動管理
手間
台数
©2010 CloudBees, Inc. All Rights Reserved
10©2010 CloudBees, Inc. All Rights Reserved
スレーブの割り当ての仕組み• Providore– ブローカー・サービス– Jenkins の外部– Jclouds を使って EC2 API と対話– スレーブの割り当て・プール・破棄
©2010 CloudBees, Inc. All Rights Reserved
11©2010 CloudBees, Inc. All Rights Reserved
プールからの割り当て
プール
providore
スレーブくれ!
再利用
©2010 CloudBees, Inc. All Rights Reserved
12©2010 CloudBees, Inc. All Rights Reserved
EC2 からの割り当て
ec2 api割り当て
教訓 :• EC2 API が落ちてもよいようにせよ
providore
スレーブくれ!
©2010 CloudBees, Inc. All Rights Reserved
13©2010 CloudBees, Inc. All Rights Reserved
初期化と占有
slave
1. LXC を開始2. マスターを割り当て
providore
スレーブくれ!
スレーブ
©2010 CloudBees, Inc. All Rights Reserved
14©2010 CloudBees, Inc. All Rights Reserved
スレーブの接続
2. SSH で接続
providore
1. 接続情報通知
スレーブ
©2010 CloudBees, Inc. All Rights Reserved
15©2010 CloudBees, Inc. All Rights Reserved
スレーブの接続
2. LXC の破棄・掃除providore
1. 解放
スレーブ
©2010 CloudBees, Inc. All Rights Reserved
デモ
©2010 CloudBees, Inc. All Rights Reserved
17©2010 CloudBees, Inc. All Rights Reserved
Linux コンテナ• OS レベルの仮想化– 中からは完全な独立 Linux システムのように見える– 実は単一カーネルの上で動いている– Solaris の笑い声が聞こえる…
• スレーブのリサイクルが高速– リセット&リブートは LXC の方が圧倒的に早い
• EC2 からの独立性– テナントの隔離や再利用のロジックがクラウド API に
依存しない方が望ましい
©2010 CloudBees, Inc. All Rights Reserved
18©2010 CloudBees, Inc. All Rights Reserved
EC2 Hypervisor
ロシア人形モデル
EC2 Node
LXC Guest
©2010 CloudBees, Inc. All Rights Reserved
19©2010 CloudBees, Inc. All Rights Reserved
Linux コンテナ : ワークスペース• LXC ホストには複数テナントの WS が接
続– LXC ゲストは1つしか見えないようになっ
ている– Consistent hash によってできるだけ同じ
ホストにビルドを割り当てる
• 仮想化版の HDD カートリッジ
©2010 CloudBees, Inc. All Rights Reserved
20©2010 CloudBees, Inc. All Rights Reserved
Nagios によるモニタリング• jenkins-ci.org も• 拡張可能• テキストベースの設定ファイル– マスターが追加されるたびに自動生成
• PagerDuty との統合• サービス間の依存関係の概念– コア・サービスが落ちた時の大量の通知を防
ぐ
©2010 CloudBees, Inc. All Rights Reserved
21©2010 CloudBees, Inc. All Rights Reserved
モニタすべきもの• ユーザーが見るもの : index ページ• JVM ヒープ、特に permgen• 負荷• ディスクスペース• スレーブの稼動状況
curl http://jenkins/computer/api/json
©2010 CloudBees, Inc. All Rights Reserved
22©2010 CloudBees, Inc. All Rights Reserved
未解決問題• マスタが増えるにつれスケーラビリティ
が…• ポーリングからプッシュへ
大丈夫ですか?返事してください!
©2010 CloudBees, Inc. All Rights Reserved
23©2010 CloudBees, Inc. All Rights Reserved
Groovy スクリプトコンソール• 探索的トラブルシューティング• データ収集
• Scriptler 2.0– コミュニティのリポジトリから管理スクリ
プトをダウンロードして実行する仕組み– https://github.com/jenkinsci/jenkins-
scripts/
©2010 CloudBees, Inc. All Rights Reserved
24©2010 CloudBees, Inc. All Rights Reserved
「一度きり→手作業」 vs 「繰り返し→自動化」
• 他のツールとの連携は我々には「一度きり」ではない– いわゆるスケールメリットというやつ
• エコシステム・パートナー–あらかじめ統合を自動化しておく– ユーザーは連携を有効化するだけ
©2010 CloudBees, Inc. All Rights Reserved
25©2010 CloudBees, Inc. All Rights Reserved
まとめ• 野良 Jenkins 、増えていませんか?• 少しずつシステマティックな管理を導入
する– スケールメリット– 一度にやろうとすると無限に先延ばしになっ
てしまう• この事例が参考になりますように
©2010 CloudBees, Inc. All Rights Reserved
26©2010 CloudBees, Inc. All Rights Reserved
今週末発売• 入門的内容– Java & Ruby
• チーム間作業の改善–昇進、指紋
• 検証済みマージ– Subversion & Git
• 分散ビルド• Selenium
©2010 CloudBees, Inc. All Rights Reserved
27©2010 CloudBees, Inc. All Rights Reserved
Questions?
Thank You!
http://www.cloudbees.com
©2010 CloudBees, Inc. All Rights Reserved
28©2010 CloudBees, Inc. All Rights Reserved
2006年• 分散ビルドのサポート
©2010 CloudBees, Inc. All Rights Reserved
29©2010 CloudBees, Inc. All Rights Reserved
Elasticity
©2010 CloudBees, Inc. All Rights Reserved
30©2010 CloudBees, Inc. All Rights Reserved
Jenkins のクラウド化
机の下計算機
分散ビルド
自動伸縮クラスタ多数のマスタ
Elastic マスタ