Upload
shinya-okano
View
7.912
Download
6
Embed Size (px)
DESCRIPTION
ビープラウドではXenServerを使って開発用サーバを運用しています。今回は運用方法の紹介や、こんな時に便利だったなどの話をしたいと思います。
Citation preview
XenServerによるお手軽開発サーバ運用
BPStudy#47
お前、誰よ
● 岡野真也 ● @tokibito● id:nullpobug
○偏った言語信者の垂れ流し ● 株式会社ビープラウド勤務
○Python○社内インフラ整備
今日の話題
XenServer
なぜXenServer?
BeProudで使ってます
BeProudはこんな会社(1)
● 主にWebシステムの受託開発をやってます○ Linux
■Debian/Ubuntu/CentOS ○ nginx/Apache○MySQL/PostgreSQL○Python/PHP/Ruby/Perl/Java
BeProudはこんな会社(2)
● 人数○ 10人ぐらい(2008) → 30人ぐらい(2011)
業務での課題
● 本番に近い環境 ● お客さんに見てもらう● 外部システムとの連携● バッチ処理● 作業再開が楽(gnu screenとか)● Wiki● プロジェクト/課題管理● ソースコードリポジトリ● 他にもいろいろ..
開発作業用のサーバがほしい
じゃあサーバを用意しよう
その前に
大事なこと(前提条件)
● コストをかけすぎない(お金、時間)○お金稼ぐのが本業
● 今やらなくていいことはやらない○過剰なものはいらない○必要以上に複雑にしない
■メンテナンスコスト■移行コスト
どういうサーバを用意する?
● レンタルサーバ○共用○専用サーバ○VPS
● 自前で用意○データセンターに設置○社内に設置
どういうサーバを用意する?(2)
● プロジェクトが増えたらどうする?○物理サーバ増やす?○HTTP/VirtualHost?○ chroot?○仮想化を使う?
考える...
● プロジェクトごとに別の環境を作りたい○共用サーバでは難しい
● 1プロジェクトの期間は平均でも1~3ヶ月○データセンターにサーバ設置は高い○専用サーバでもちょっと高い
じゃあ
社内にサーバ設置
それと
仮想化で。
コンピュータの仮想化って?
● 「仮想化」○単語にはいろんな意味がある
● ここで話題にしてるのは仮想マシン(Virtual Machine, VM)○ソフトウェアで仮想的にコンピュータを構成 ○ 1台のコンピュータで何台ものVMを動かす
それでXenServer?
なぜXenServer?
● VPSを借りるより自前サーバの仮想化○性能/機能面で有利
● KVMやXenは知識ないと大変そうに思った● 2009年4月当時VMwareESXiは4コア上限
○ 8コアマシン使いたかった● XenServerが無償で使えるようになると聞いて。
XenServerってどんなもの?
● Citrix Systemsの製品● サーバの仮想化向け ● 無償版がある
○機能の多い上位版がある● ハードウェアの上で直接動作するOS● LinuxやWindowsを動かすことができる
Xenとの関係は?
● Xenはオープンソースのソフトウェア(GPL) ● XenはXenSource Incが中心で開発● CitrixがXenSourceを買収● XenServerはXenをベースとした製品
じゃあハードウェアは?
ハードウェアはこんなの
● ハードウェアは20~30万円程度の据え置き型○お金あんまりかけられない○ラックは置き場所や電源に困る
■ 2009年当時のオフィスは4,5人でいっぱい○CPUはXeonで4コアか8コアマシン○メモリは4~16GBぐらい
インストールしてみた
インストールについて(XenServer)
1. Citrixのサイトでアカウント作成後にisoをダウンロード2. isoイメージからCDを作成してインストール3. XenCenterを管理用端末にインストール4. ライセンスファイルを取得5. XenCenter経由でライセンスファイルをインストール
○無償版ライセンスは1年ごとに更新
XenCenterについて
● Windows用です...● XenServerとXenServer上のVMを管理/操作● リモート接続(HTTPS)● OpenXenManager
○XenCenterクローン ○オープンソース○PyGTK
■Ubuntuなら比較的動かしやすいかも?
インストールについて(ゲストOS)
● XenCenterから操作 ● テンプレートを使う
○WindowsやRedHat, SUSE, Debianなど ● isoイメージからインストール
○Windows共有(CIFS)などでファイルを共有
ここが便利(1)
● XenCenter○GUIだし複数ホストの管理も楽
● スナップショット○壊しても戻せる
● バックアップと複製○VM単位でバックアップできるので復元が楽○同じ構成の環境を簡単に作れる
■VMのテンプレート■数分ですぐに使えるVMを用意できる
ここが便利(2)
● リソース割り当て○CPU/メモリ/ハードディスクの割り当てを変更しや
すい○別のホストにVMを移動して動かすとか
やった!これで便利になった!
運用開始からしばらくして...
さらなる課題
● 設定が面倒くさい ○ネットワークの設定が面倒くさい
■ IPを固定にしたり■ホスト名を書き換えたり
○ユーザの追加が面倒くさい■パスワード設定とそれの通知が大変
■→鍵認証に変更■ LDAPも考えたけどまだ早い
とりあえずスクリプト書いた
Pythonで...
https://gist.github.com/1113337
設定用のスクリプト
● 設定ファイルの内容をテキスト置換○ /etc/hostname
■ホスト名をスクリプトで設定○ /etc/hosts
■自分のホスト名をスクリプトで設定○ /etc/network/interfaces
■ IPアドレスをスクリプトで設定 ● ユーザ作成時の作業を簡単に
○ /etc/skel/○公開鍵をスクリプトで設定
運用管理
● VMの管理○スプレッドシートで管理表作成(IPや用途)○不要なVMは停止する(リソース確保)
● VMの作成○ルーチンワーク化を進める
(demo)
ルーチンワーク化する
● プロジェクト開始○→開発用サーバの申請(ユーザ,IPなど)
■→管理者が手順に従ってVM作成● リソース不足
○→リソース追加申請■→管理者が手順に従ってリソース追加
"今は"これで足りてます
じゃあ今後は?
今後...
● バックアップの強化○ハードウェア障害怖い ○定期的にVMを自動バックアップ
■ S3に保存するとか
今後.......
● もっと会社の人数が増えたら○サーバ数増
■設定がさらに大変になる■自動化をさらに進めるとか...
■ネットワークの問題■帯域とかアドレス割り当て
○ユーザ数増■ユーザ管理が大変になる
■PAM/LDAPとか...
必要になったら考える!
(上位の製品使用の検討とかも)
おまけ
APIを使ってみる
● XenServerはXMLRPCのAPIを使える● SDKがあるよ ● XenAPI.py
○ http://community.citrix.com/display/xs/XenServer+Python+API+Samples
● xswizard○XenAPI.pyのラッパーモジュール○作ってみました○ easy_install xswizard
from xswizard.api import API# APIオブジェクトを取得 api = API( 'http://192.168.100.1/' , 'username' , 'password' )# テンプレートのクローンを作成 vm = api.get_instant_template_by_name( 'ubuntu10.04-server' ) ¥ .clone( 'new-ubuntu-server' )# テンプレートからVMにする vm.provision()# VM起動 vm.start()
おしまい
ご清聴ありがとうございました