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.

CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話

3,006 views

Published on

サーバサイドアプリケーションを開発する現場において、開発用、テスト用、デモ用など様々な用途で多くのアプリケーション実行環境を用意する必要があります。またこうした開発現場を複数持った大規模な組織では、これらを効果的かつ効率的に提供するために Private Cloud 環境を構築したい要求が生まれます。
本セッションでは、最近注目されている IaaS クラウド基盤のミドルウェア OpenStack を活用し、Private Cloud 基盤を構築・運用しているグリーの開発環境基盤の事例についてご紹介させて頂きます。
 具体的には、どういった背景でどのように構築し、どのくらいの運用規模で、実際にどのような事をやってきて、どのような学びがあったかについてお話しさせていただきと思います。
また OpenStack について知識がない方でも、本セッションの中身についてわかっていただけるように心がけた内容に致します。

Published in: Engineering
  • Be the first to comment

CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話

  1. 1. OpenStack で運用する Private Cloud の泥臭い (リアルな) 話 グリー株式会社 インフラストラクチャ本部 大山 裕泰 (オオヤマ ヒロヤス) CEDEC 2015- 20150827
  2. 2. 自己紹介
  3. 3. オオヤマ ヒロヤス 大山 裕泰 開発 - オリジナルカーネル OnixOS 開発 2008 年下期 IPA 未踏事業採択 (スーパークリエータ認定) - OpenFlow Controller JAXON Author - OpenFlow Controller Trema Contributor http://www.noxrepo.org/2012/03/335
  4. 4. 著書 - 次世代ネットワーク制御技術 OpenFlow入門 [著者 石井秀治, 大山裕泰, 河合栄治] [発行 株式会社KADOKAWA アスキー・メディアワークス] 登壇 - JANOG33: ゴチャゴチャネットワークの可視化・OAM (高嶋隆一, 大山裕泰, 高橋正和) - JANOG34: DCネットワークの新時代? -ホワイトボックススイッチの利用可否- (石田渉, 大山裕泰) オオヤマ ヒロヤス 大山 裕泰
  5. 5. 開発環境用 Private Cloud の話 概要編
  6. 6. 目的 / 特徴 * エンジニア向け開発環境の提供 - OpenStack (Juno) を利用 Service Quality Functionality/Agility AWS オンプレミス環境 個人用開発マシン 従来の開発環境基盤
  7. 7. かつての開発環境基盤 * XCP -> XenServer - インスタンスの運用を運用者が実施 - 社内で運用できる人がわずか - 保守的な運用 * 物理マシン - 管理コストが高い - サポートなし
  8. 8. OpenStack 導入による変化 * 運用コストの低減 / デリバリータイムの短縮 - インスタンスの運用をユーザがオンデマンドで実施 * 管理コストの低減 - 誰がどのリソースをどれだけ使っている (使える) か システマチックに管理可能
  9. 9. (そもそも) OpenStack とは?
  10. 10. 概要 * クラウド環境を作るための OpenSource Software (OSS) - 特定のベンダーに依存しない運営体制 (OpenStack Foundation) - 協賛・サポート企業を含め 500 社が参画 ( Intel, HP, IBM, Rackspace, Redhat, SUSE, AT&T, Canonical 他多数 ) * 国内の多くの企業が OpenStack を積極採用 - Fujitsu, NTT Com, GMO, Yahoo! Japan, Rakuten, GREE 他多数
  11. 11. [出典] So, What is the Core of OpenStack? より 利用している部分 全体像
  12. 12. 主なコンポーネント * nova - 仮想マシンリソースの管理を行うソフトウェアコンポーネント - Amazon EC2, S3 と API 互換を持つ * keystone - OpenStack の統合認証機構 - 各コンポーネントに対して HTTP 経由での認証インターフェイスを提供 - LDAP を含む様々な認証手法をサポート * glance - 全てのデータアセット (主にインスタンスのイメージ) を管理するコンポーネント
  13. 13. 主なコンポーネント * neutron - NaaS (Network as a Service) を実現するコンポーネント - 仮想 L2 / L3 ネットワークの管理・構築を行う - その他 SDN, SecurityGroup 等をサポート * cinder - BlockStorage Service を提供するコンポーネント - VM インスタンスに対して仮想 BlockStorage デバイスを提供する - バックエンドのストレージシステムをユーザに対して抽象化 * horizon - ダッシュボードクライアント (WEB UI) を提供するコンポーネント
  14. 14. Private Cloud の 環境 / 構築手法について
  15. 15. システム概要 * ハードウェア - (ほぼ) 全ての機器を社内資産から流用 - 激安で Private Cloud 環境を構築 機材に掛けたコスト +
  16. 16. Controller (Master) Nova, Neutron(Server), Glance, Cinder Horizon, RabbitMQ, MySQL, ... Controller (Slave) Nova, Neutron(Server), Glance, Cinder Horizon, RabbitMQ, MySQL, ... VRRP Network (Master) Neutron (L3-Agent, DHCP-Agent, Metadata-Agent) Network (Slave) Neutron (L3-Agent, DHCP-Agent, Metadata-Agent) Compute NodeCompute NodeCompute NodeCompute Node Monitoring (sensu) Monitoring (sensu) * ソフトウェア / サーバ構成 - OpenStack (Juno) を使用 - 2014/10 リリース。最新版は Kilo (2015/05 リリース) システム概要
  17. 17. chef によるプロビジョニング * The Environment Cookbook Pattern に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上 Environment Wrapper Application WrapperWrapper ApplicationApplication Base
  18. 18. chef によるプロビジョニング * The Environment Cookbook Pattern に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上 Environment Wrapper Application WrapperWrapper ApplicationApplication Base * 各コンポーネント / アプリケーション毎に存在 * コンポーネントを構築する処理のみ記述する (但し、他のサーバと関連する処理は行わない)
  19. 19. chef によるプロビジョニング * The Environment Cookbook Pattern に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上 Wrapper Application WrapperWrapper ApplicationApplication Base * Application cookbook 毎に存在 * Application に特化した Attributes を記述 Environment
  20. 20. chef によるプロビジョニング * The Environment Cookbook Pattern に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上 Environment Wrapper Application Wrapper ApplicationApplication Base * システムに一つだけ存在し、役割毎にレシピを記述 * Wrapper cookbook を呼び出す処理 のみ を記述 * システム全体の Attributes を記述 Wrapper
  21. 21. chef によるプロビジョニング * The Environment Cookbook Pattern に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上 Wrapper Application Wrapper ApplicationApplication Base * システムに一つだけ存在 * 全ての環境に共通な設定を記述 Environment Wrapper
  22. 22. 運用設計について
  23. 23. テナント設計 * テナント (Tenannt) - リソース (CPU, Memory, Storage, Network, ... ) を管理する存在 * 個人アカウント毎にテナントを作成 - リソース制限等の管理を個人毎に行うため
  24. 24. Quota 設定 * 特定のユーザによるシステムリソースの枯渇問題の回避 * ユーザ毎にリソースの上限を個別に変更 - 多くのリソースを必要とするユーザには、多くを割り当て 多くのリソースを必要としないユーザには、少ないリソースを割り当てる * テナントに対して、各種リソースの上限値を設定 - CPU コア数 - Floating IP アドレス数 - BlockStorage 容量
  25. 25. HostAggregate * 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施 物理マシンのリソースキャパシティ ← 仮想マシンの消費リソース
  26. 26. HostAggregate * 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施 Resource Fragment
  27. 27. HostAggregate * 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施 物理マシン 仮想マシン c4m32s30 c8m64s60 c12m4s30 c24m8s60 c1m2s10 c2m4s20 c(コア数) m(メモリサイズ[GB]) s(ストレージサイズ)
  28. 28. HA cHA bHA a HostAggregate * 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施 物理マシン 仮想マシン c4m32s30 c8m64s60 c12m4s30 c24m8s60 c1m2s10 c2m4s20
  29. 29. BlockStorage * 高可用性で大容量のストレージの提供 - ダッシュボードから ボリュームの切出し / アタッチ / デタッチ を実施 - インスタンスからはブロックデバイスとして認識される /dev/vdb
  30. 30. 裏セグ for BlockStorage * BlockStorage のトラフィックを分離させる - FlexLink により裏セグ帯域を 4Gbps に拡張 BlockStorage 用ネットワークセグメント データトラフィック用ネットワークセグメント
  31. 31. グリーの Private Cloud での オリジナルカスタマイズ
  32. 32. DNS 連携 * インスタンスにドメイン名を設定したい * 実現方法 - cloud-init にレコード登録処理を仕込むやり方 - Neutron l3-plugin にレコード登録/削除処理を仕込むやり方 (GREE 方式) - designate を使うやり方
  33. 33. DNS 連携 [1/3] * ネットワーク構成 - シングルフラットネットワーク / DHCP による IP アドレスの割り当て DHCP サーバ OpenStack インスタンス
  34. 34. DNS 連携 [1/3] * 制約 / 特徴 - インスタンスが起動するまで IP アドレスがわからない * 実現方法 - インスタンス起動時に実行される処理機構 (cloud-init) に レコード登録処理を追加する DNS 依頼 作成 登録 DHCP サーバ IP アドレス 取得
  35. 35. DNS 連携 (GREE 方式) [2/3] * ネットワーク構成 - Network Node を用いた (OpenStack Networking) 構成 * 特徴 - Floating IP アドレスを用いてインスタンスにアクセスする External Network Tenant Network IPaddr: A (Floating IP Address) OpenStack インスタンス DHCP サーバ IPaddr: A
  36. 36. Neutron PowerDNS dns-auto-register L3GREEPlugin PowerDNS SDK Aレコードの登録/削除 CNAMEレコードの登録/削除 DNS 連携 (GREE 方式) [2/3] Amazon Route53 API Call
  37. 37. * Designate を使用 - DNSaaS を提供する OpenStack プロジェクト (Incubated プロジェクト) - MiniDNS が DNS プロトコル (NOTIFY, AXFR) を喋ってサーバと連携 - スケーラブルな機構。eBay / PayPal で採用 (*1) DNS 連携 [3/3] (*1) Adopting Designate for Managing Mission Critical eBay/PayPal DNS, OepnStack Summit 2015
  38. 38. DNS 連携 [3/3] Neutron Designate dashboard Designate Sink any DNS miniDNS AXFR
  39. 39. 運用について - トラブル編:過去に遭遇したトラブルなど -
  40. 40. 過去に遭遇したトラブル - 1 * 突然、あらゆる操作がエラーになる問題 - 現象:突然コントローラがあらゆる操作を受け付けなくなる - 原因:コントローラノードのストレージが れる ユーザがスナップショットを大量に取得 - 教訓:全ての機能を提供するのではなく、必要な機能を提供する Controller Node (glance) image snapshot
  41. 41. 過去に遭遇したトラブル - 2 * のアプリケーションエラー問題 - 現象:オブジェクトの生成に失敗する - 現象:mmap に失敗する - 現象:発生しない VM もある - 原因:ホストでメモリエラーが発生していた - 教訓:物理監視大切!
  42. 42. 過去に遭遇したトラブル - 3 * VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が たまに 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在 HA bHA a 物理マシン 仮想マシン c8m64s60 c24m8s60 よく再現する 全く再現しない
  43. 43. 過去に遭遇したトラブル - 3 * VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が たまに 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在 HA bHA a 物理マシン 仮想マシン c8m64s60 c24m8s60 よく再現する 全く再現しない
  44. 44. 過去に遭遇したトラブル - 3 (*1) https://bugs.launchpad.net/nova/+bug/1333654 Neutron Server Compute Node network-vif-plugged * VM が時々起動しない問題 - 現象:特定の物理ホスト群に対するインスタンスの起動が たまに 失敗 - 原因:neutron-server から送られるイベント network-vif-plugged" を compute ノードが取りこぼす (*1)
  45. 45. 過去に遭遇したトラブル - 3 (*1) https://bugs.launchpad.net/nova/+bug/1333654 Neutron Server Compute Node network-vif-plugged * VM が時々起動しない問題 - 現象:特定の物理ホスト群に対するインスタンスの起動が たまに 失敗 - 原因:neutron-server から送られるイベント network-vif-plugged" を compute ノードが取りこぼす (*1)
  46. 46. 過去に遭遇したトラブル - 3 * VM が起動するまでの処理の仕組み - イメージファイルの取得 (Glance) - ボリュームの参照 (Cinder) - ポート / セキュリティグループの設定 (Neutron-server)
  47. 47. 過去に遭遇したトラブル - 3 (*1) https://bugs.launchpad.net/nova/+bug/1333654 Neutron Server Compute Node network-vif-plugged network-vif-unplugged * network-vif-plugged イベントを取りこぼす原因 - ほぼ同時にインスタンスの作成・削除を実施した際に実施される 複数のイベントを同時に送る実装の問題 (*1)
  48. 48. 過去に遭遇したトラブル - 3 * VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が たまに 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在 HA bHA a 物理マシン 仮想マシン c8m64s60 c24m8s60 よく再現する 全く再現しない
  49. 49. 過去に遭遇したトラブル - 3 * ホストスケジューラの仕組み (*1) - Filtering :起動できるホストの選定 - Weighting:起動するホストの重み付け (*1) 詳細:ホストスケジューラの仕組み - GREE Engineers' Blog (出典:OpenStack Developer Manual -Filter Scheduler-)
  50. 50. 振り返り / さいごに
  51. 51. 振り返り * OpenStack は誰もが簡単に使えるものでもない - 機能開発においてはエンジニアリングスキルが求められる - 安定運用においては運用スキル・ナレッジが求められる (上記を満たす組織環境において) * 高機能・柔軟な IaaS クラウド環境が獲得可能 - 国内外の OpenStack 利用企業において共通している - 多彩な要件に対して柔軟に対応可能
  52. 52. さいごに * 腕っこきのエンジニアを擁する企業さまへ - OpenStack により高機能・安定・柔軟な IaaS クラウド環境を構築し インフラ基盤を Next Level に成長させてみませんか * これまで支えてくれた開発 / 運用コミュニティの方々へ感謝 - OpenStack ユーザ会の方々 - 企業の垣根を越えてさまざまな情報を共有してくれた方々 - VALinux さん, CTC さん, 楽天さん (などなど)

×