cedec2015_openstack で運用する private cloud の泥臭い(リアル)な話

52
OpenStack で運用する Private Cloud の泥臭い ( リアルな ) グリー株式会社 インフラストラクチャ本部 大山 裕泰 (オオヤマ ヒロヤス) CEDEC 2015- 20150827

Upload: greetech

Post on 07-Jan-2017

2.631 views

Category:

Engineering


2 download

TRANSCRIPT

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

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

グリー株式会社 インフラストラクチャ本部 大山 裕泰 (オオヤマ ヒロヤス)

CEDEC 2015- 20150827

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

自己紹介

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

オオヤマ ヒロヤス

大山 裕泰開発 - オリジナルカーネル OnixOS 開発 2008 年下期 IPA 未踏事業採択 (スーパークリエータ認定)

- OpenFlow Controller JAXON Author

- OpenFlow Controller Trema Contributorhttp://www.noxrepo.org/2012/03/335

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

著書 - 次世代ネットワーク制御技術 OpenFlow入門 [著者 石井秀治, 大山裕泰, 河合栄治] [発行 株式会社KADOKAWA アスキー・メディアワークス]

登壇 - JANOG33: ゴチャゴチャネットワークの可視化・OAM (高嶋隆一, 大山裕泰, 高橋正和) - JANOG34: DCネットワークの新時代? -ホワイトボックススイッチの利用可否-

(石田渉, 大山裕泰)

オオヤマ ヒロヤス

大山 裕泰

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

開発環境用 Private Cloud の話

概要編

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

目的 / 特徴* エンジニア向け開発環境の提供 - OpenStack (Juno) を利用

Service Quality

Functionality/AgilityAWS

オンプレミス環境

個人用開発マシン

従来の開発環境基盤

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

かつての開発環境基盤* XCP -> XenServer - インスタンスの運用を運用者が実施 - 社内で運用できる人がわずか - 保守的な運用

* 物理マシン - 管理コストが高い - サポートなし

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

OpenStack 導入による変化* 運用コストの低減 / デリバリータイムの短縮 - インスタンスの運用をユーザがオンデマンドで実施

* 管理コストの低減 - 誰がどのリソースをどれだけ使っている (使える) か システマチックに管理可能

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

(そもそも)

OpenStack とは?

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

概要* クラウド環境を作るための OpenSource Software (OSS) - 特定のベンダーに依存しない運営体制 (OpenStack Foundation) - 協賛・サポート企業を含め 500 社が参画 ( Intel, HP, IBM, Rackspace, Redhat, SUSE, AT&T, Canonical 他多数 )

* 国内の多くの企業が OpenStack を積極採用 - Fujitsu, NTT Com, GMO, Yahoo! Japan, Rakuten, GREE 他多数

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

[出典] “So, What is the Core of OpenStack?” より

利用している部分

全体像

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

主なコンポーネント* nova - 仮想マシンリソースの管理を行うソフトウェアコンポーネント - Amazon EC2, S3 と API 互換を持つ

* keystone - OpenStack の統合認証機構 - 各コンポーネントに対して HTTP 経由での認証インターフェイスを提供 - LDAP を含む様々な認証手法をサポート

* glance - 全てのデータアセット (主にインスタンスのイメージ) を管理するコンポーネント

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

主なコンポーネント* neutron - NaaS (Network as a Service) を実現するコンポーネント - 仮想 L2 / L3 ネットワークの管理・構築を行う - その他 SDN, SecurityGroup 等をサポート

* cinder - BlockStorage Service を提供するコンポーネント - VM インスタンスに対して仮想 BlockStorage デバイスを提供する - バックエンドのストレージシステムをユーザに対して抽象化

* horizon - ダッシュボードクライアント (WEB UI) を提供するコンポーネント

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

Private Cloud の

環境 / 構築手法について

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

システム概要* ハードウェア - (ほぼ) 全ての機器を社内資産から流用 - 激安で Private Cloud 環境を構築

機材に掛けたコスト

+

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

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 Node Compute Node Compute Node Compute Node Monitoring (sensu) Monitoring (sensu)

* ソフトウェア / サーバ構成 - OpenStack (Juno) を使用

- 2014/10 リリース。最新版は Kilo (2015/05 リリース)

システム概要

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

chef によるプロビジョニング* “The Environment Cookbook Pattern” に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上

Environment

Wrapper

Application

WrapperWrapper

ApplicationApplication

Base

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

chef によるプロビジョニング* “The Environment Cookbook Pattern” に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上

Environment

Wrapper

Application

WrapperWrapper

ApplicationApplication

Base

* 各コンポーネント / アプリケーション毎に存在 * コンポーネントを構築する処理のみ記述する (但し、他のサーバと関連する処理は行わない)

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

chef によるプロビジョニング* “The Environment Cookbook Pattern” に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上

Wrapper

Application

WrapperWrapper

ApplicationApplication

Base* Application cookbook 毎に存在 * Application に特化した Attributes を記述

Environment

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

chef によるプロビジョニング* “The Environment Cookbook Pattern” に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上

Environment

Wrapper

Application

Wrapper

ApplicationApplication

Base

* システムに一つだけ存在し、役割毎にレシピを記述 * Wrapper cookbook を呼び出す処理 “のみ” を記述 * システム全体の Attributes を記述

Wrapper

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

chef によるプロビジョニング* “The Environment Cookbook Pattern” に基づいた手法 - 複数の組織・チームによる cookbook 開発のための手法として注目 - cookbook を複数のレイヤに分割。コードの可読性 / 再利用性が向上

Wrapper

Application

Wrapper

ApplicationApplication

Base

* システムに一つだけ存在 * 全ての環境に共通な設定を記述

Environment

Wrapper

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

運用設計について

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

テナント設計* テナント (Tenannt) - リソース (CPU, Memory, Storage, Network, ... ) を管理する存在

* 個人アカウント毎にテナントを作成 - リソース制限等の管理を個人毎に行うため

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

Quota 設定* 特定のユーザによるシステムリソースの枯渇問題の回避

* ユーザ毎にリソースの上限を個別に変更 - 多くのリソースを必要とするユーザには、多くを割り当て 多くのリソースを必要としないユーザには、少ないリソースを割り当てる

* テナントに対して、各種リソースの上限値を設定 - CPU コア数 - Floating IP アドレス数 - BlockStorage 容量

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

HostAggregate* 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施

物理マシンのリソースキャパシティ

← 仮想マシンの消費リソース

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

HostAggregate* 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施

Resource Fragment

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

HostAggregate* 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施

物理マシン

仮想マシンc4m32s30

c8m64s60

c12m4s30

c24m8s60

c1m2s10

c2m4s20

c(コア数) m(メモリサイズ[GB]) s(ストレージサイズ)

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

HA cHA bHA a

HostAggregate* 異なるスペックのサーバリソースを効率的に利用 - 各サーバの種類毎に VM の収容設計を実施

物理マシン

仮想マシンc4m32s30

c8m64s60

c12m4s30

c24m8s60

c1m2s10

c2m4s20

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

BlockStorage* 高可用性で大容量のストレージの提供 - ダッシュボードから ボリュームの切出し / アタッチ / デタッチ を実施 - インスタンスからはブロックデバイスとして認識される

/dev/vdb

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

裏セグ for BlockStorage* BlockStorage のトラフィックを分離させる - FlexLink により裏セグ帯域を 4Gbps に拡張

BlockStorage 用ネットワークセグメント

データトラフィック用ネットワークセグメント

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

グリーの Private Cloud での

オリジナルカスタマイズ

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

DNS 連携* インスタンスにドメイン名を設定したい * 実現方法 - cloud-init にレコード登録処理を仕込むやり方 - Neutron l3-plugin にレコード登録/削除処理を仕込むやり方 (GREE 方式) - designate を使うやり方

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

DNS 連携 [1/3]* ネットワーク構成 - シングルフラットネットワーク / DHCP による IP アドレスの割り当て

DHCP サーバ

OpenStack インスタンス

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

DNS 連携 [1/3]* 制約 / 特徴 - インスタンスが起動するまで IP アドレスがわからない

* 実現方法 - インスタンス起動時に実行される処理機構 (cloud-init) に レコード登録処理を追加する

DNS

依頼 作成

登録

DHCP サーバ

IP アドレス 取得

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

DNS 連携 (GREE 方式) [2/3]* ネットワーク構成 - Network Node を用いた (OpenStack Networking) 構成

* 特徴 - Floating IP アドレスを用いてインスタンスにアクセスする

External Network

Tenant Network

IPaddr: A’ (Floating IP Address)

OpenStack インスタンス DHCP サーバ

IPaddr: A

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

Neutron

PowerDNS

dns-auto-register

L3GREEPlugin

PowerDNS SDK

Aレコードの登録/削除

CNAMEレコードの登録/削除

DNS 連携 (GREE 方式) [2/3]

Amazon Route53

API Call

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

* 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

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

DNS 連携 [3/3]

Neutron

Designate

dashboardDesignate

Sink

any DNS

miniDNS

AXFR

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

運用について - トラブル編:過去に遭遇したトラブルなど -

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

過去に遭遇したトラブル - 1* 突然、あらゆる操作がエラーになる問題 - 現象:突然コントローラがあらゆる操作を受け付けなくなる - 原因:コントローラノードのストレージが溢れる ユーザがスナップショットを大量に取得 - 教訓:全ての機能を提供するのではなく、必要な機能を提供する

Controller Node (glance)

image snapshot

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

過去に遭遇したトラブル - 2* 謎のアプリケーションエラー問題 - 現象:オブジェクトの生成に失敗する - 現象:mmap に失敗する - 現象:発生しない VM もある

- 原因:ホストでメモリエラーが発生していた - 教訓:物理監視大切!

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

過去に遭遇したトラブル - 3* VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が “たまに” 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在

HA bHA a

物理マシン

仮想マシン c8m64s60 c24m8s60

よく再現する 全く再現しない

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

過去に遭遇したトラブル - 3* VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が “たまに” 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在

HA bHA a

物理マシン

仮想マシン c8m64s60 c24m8s60

よく再現する 全く再現しない

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

過去に遭遇したトラブル - 3

(*1) https://bugs.launchpad.net/nova/+bug/1333654

Neutron Server Compute Node

network-vif-plugged

* VM が時々起動しない問題 - 現象:特定の物理ホスト群に対するインスタンスの起動が “たまに” 失敗 - 原因:neutron-server から送られるイベント “network-vif-plugged" を compute ノードが取りこぼす (*1)

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

過去に遭遇したトラブル - 3

(*1) https://bugs.launchpad.net/nova/+bug/1333654

Neutron Server Compute Node

network-vif-plugged

* VM が時々起動しない問題 - 現象:特定の物理ホスト群に対するインスタンスの起動が “たまに” 失敗 - 原因:neutron-server から送られるイベント “network-vif-plugged" を compute ノードが取りこぼす (*1)

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

過去に遭遇したトラブル - 3* VM が起動するまでの処理の仕組み - イメージファイルの取得 (Glance) - ボリュームの参照 (Cinder) - ポート / セキュリティグループの設定 (Neutron-server)

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

過去に遭遇したトラブル - 3

(*1) https://bugs.launchpad.net/nova/+bug/1333654

Neutron Server Compute Node

network-vif-pluggednetwork-vif-unplugged

* network-vif-plugged イベントを取りこぼす原因 - ほぼ同時にインスタンスの作成・削除を実施した際に実施される 複数のイベントを同時に送る実装の問題 (*1)

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

過去に遭遇したトラブル - 3* VM が時々起動しない問題 - 現象1:特定の物理ホスト群に対するインスタンスの起動が “たまに” 失敗 - 現象2:現象1 が再現するホスト群とそうでないホスト群が存在

HA bHA a

物理マシン

仮想マシン c8m64s60 c24m8s60

よく再現する 全く再現しない

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

過去に遭遇したトラブル - 3* ホストスケジューラの仕組み (*1) - Filtering :起動できるホストの選定 - Weighting:起動するホストの重み付け

(*1) 詳細:ホストスケジューラの仕組み - GREE Engineers' Blog(出典:OpenStack Developer Manual -Filter Scheduler-)

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

振り返り / さいごに

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

振り返り* OpenStack は誰もが簡単に使えるものでもない - 機能開発においてはエンジニアリングスキルが求められる - 安定運用においては運用スキル・ナレッジが求められる

(上記を満たす組織環境において) * 高機能・柔軟な IaaS クラウド環境が獲得可能 - 国内外の OpenStack 利用企業において共通している - 多彩な要件に対して柔軟に対応可能

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

さいごに* 腕っこきのエンジニアを擁する企業さまへ - OpenStack により高機能・安定・柔軟な IaaS クラウド環境を構築し インフラ基盤を Next Level に成長させてみませんか

* これまで支えてくれた開発 / 運用コミュニティの方々へ感謝 - OpenStack ユーザ会の方々 - 企業の垣根を越えてさまざまな情報を共有してくれた方々 - VALinux さん, CTC さん, 楽天さん (などなど)