XenServerによるお手軽開発サーバ運用

8,905 views
8,989 views

Published on

ビープラウドではXenServerを使って開発用サーバを運用しています。
今回は運用方法の紹介や、こんな時に便利だったなどの話をしたいと思います。

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,905
On SlideShare
0
From Embeds
0
Number of Embeds
1,979
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XenServerによるお手軽開発サーバ運用

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

×