Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

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

  • Login to see the comments

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. おしまいご清聴ありがとうございました

×