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.

July techfesta2014 f30

2,468 views

Published on

  • Be the first to comment

July techfesta2014 f30

  1. 1. Copyright © 2013 NTT DATA Corporation 「OpenStack Swift」をPuppetで数百台自動構築 して見えた課題と現状のベストプラクティス 2014年6月22日 株式会社NTTデータ システム方式技術事業部 柿沼基樹 クラウドストレージを 自前で構築できる
  2. 2. 1Copyright © 2014 NTT DATA Corporation アジェンダ 1 OpenStack Swiftとは 2 OpenStack Swiftを数百台 自動構築して見えた今後の課題 3 これからのインフラプロビジョニング ベストプラクティス
  3. 3. 2Copyright © 2014 NTT DATA Corporation 自己紹介  氏名:柿沼基樹  所属:株式会社NTTデータ 基盤システム事業本部 システム方式技術事業部  経歴:  自社クラウドサービス(BizXaaS)の開発等を担当。  OpenStackと出会い、Swiftの評価を担当。  OpenStack Swiftの自動構築を担当。  現在はImmutableなインフラを検討するR&Dを実施。
  4. 4. 3Copyright © 2014 NTT DATA Corporation
  5. 5. 4Copyright © 2014 NTT DATA Corporation 米国RackSpaceのオンラインストレージ サービスで使われていた基盤ソフト IaaS (nova)で使うなら VMイメー ジのバックアップストレージ 世界中でエンタープライズ用途での 適用が進行中
  6. 6. 5Copyright © 2014 NTT DATA Corporation 技術概要 利用者端末 ストレージ サーバ ストレージ サーバ ストレージ サーバ プロキシ サーバ 外部NW PUT/GE T /DELETE ○ ○ ○ ○ ○ リングファイル ユーザデータ (オブジェクト) 2 2 712 105 2 パーティション ストレージ サーバ ○ 2 a b c d  Proxyは振分け、Storageはデータ格納 1 2 3 … 2^n 格納先ディスクID ① a b c … z 格納先ディスクID ② b c a … q 格納先ディスクID ③ c d d … w 退避先ディスクID ① d a b … a … … … … … … 退避先ディスクID x y z … d 乱数表 (リングファイル) パーティション パーティション番号(n=1…32) シ ス テ ム 内 の 全 物 理 デ ィ ス ク 物理ディスク /swift/2 ∟ 0241.data ∟ 0432.data /swift/105 ∟ 0314.data ∟ 0431.data /swift/712 ∟ 0324.data ∟ 0531.data ∟ 0621.data オブジェクト (=ファイル) パーティション (=ディレクトリ)
  7. 7. 6Copyright © 2014 NTT DATA Corporation 技術概要 利用者端末 ストレージ サーバ ストレージ サーバ ストレージ サーバ プロキシ サーバ 外部NW PUT/GE T /DELETE ○ 1 2 3 … 2^n 格納先ディスクID ① a b c … z 格納先ディスクID ② b c a … q 格納先ディスクID ③ c d d … w 退避先ディスクID ① d a b … a … … … … … … 退避先ディスクID x y z … d 乱数表 (リングファイル) パーティション パーティション番号(n=1…32) シ ス テ ム 内 の 全 物 理 デ ィ ス ク ○ ○ ○ ○ リングファイル ユーザデータ (オブジェクト) 2 2 712 105 2 物理ディスク パーティション /swift/2 ∟ 0241.data ∟ 0432.data /swift/105 ∟ 0314.data ∟ 0431.data /swift/712 ∟ 0324.data ∟ 0531.data ∟ 0621.data オブジェクト (=ファイル) パーティション (=ディレクトリ) ストレージ サーバ ○ 2 退避 a b c d 監視 & 検知  故障に備えて複数のレプリカを書き込む
  8. 8. 7Copyright © 2014 NTT DATA Corporation 技術概要 (1)定期的にお互いのオブジェクトを監視 (4) ディスク復旧時の回復 (3) オブジェクトの退避 (2) ディスク障害発生と検知 Swiftプロセス ディスク (5) 退避オブジェクトの削除 Node 1 Node 2 Node 3 Node 4 Node 2 Node 3 Node 4 Node 1 Node 2 Node 3 Node 4 通常 障害 復旧 Node 1 Node 2 Node 3 Node 4 Node 1 Node 2 Node 3 Node 4Node 1  ディスク故障時やデータ復旧時は自動復旧
  9. 9. 8Copyright © 2014 NTT DATA Corporation 技術概要 Proxy Stora ge Stora ge Stora ge Proxy (増設) (1) プロキシサーバ増設 (2) ストレージサーバ増設 ① ②  Proxyを増やせばスループットが増える  Storageを増やせば容量が増える Proxy Stora ge Stora ge Stora ge Proxy Stora ge (増設) リバランス ① ② ③ ④
  10. 10. 9Copyright © 2014NTT DATA Corporation Swiftを使うのはどんなとき? • スモールスタートしたい • 終局の見積が難しい/見積したくない スケールアウト型 • ハードベンダを非依存にしたい • 激甚対策したい 長期保存型 • 1つのファイルにアクセスが集中する • 利用対象ユーザが多い 高速・性能重視
  11. 11. 10Copyright © 2014NTT DATA Corporation 利用例:階層型ストレージ システムイメージ・利用イメージ 背景・ニーズ ① 過去の資料を廃棄できない ・部門ファイルサーバなど ② 頻度は多くないが閲覧は必要 ・複数年分保存が必要な場合が大半 ・厳しい容量制限はやりづらい 概要 現行のストレージに加え、前年度以前のデータをSwiftに格納するタイプ 選定ポイント ① スモールスタート ・最小限の初期投資 ② データ増量に応じて拡張 ・上限は(ほぼ)なし ・ 拡張時も無停止で実施可能 ※ あくまで一般的なお話です。当社顧客とは一切関係がございません。 windows explorer Swift用 explorer エンドユーザ システムA システムB Connecter(FUSE/ISCSI) Swift 現行サーバ
  12. 12. 11Copyright © 2014 NTT DATA Corporation
  13. 13. 12Copyright © 2014 NTT DATA Corporation 自動構築に至った理由と目標 構築サーバ 検証/本番環境 品質 メンバ …よし、自動構築しよう 数百台 合計6セット 高水準 少人数 目標 ・品質/期限は守る(基盤・Swiftの試験は全部やる) ・構築期間は定時に帰る(社内で成功例を!)
  14. 14. 13Copyright © 2014 NTT DATA Corporation 自動構築で主に利用したもの # 利用項目 利用用途 1 kickstart OS・パッケージのインストールを自動化 2 Puppet 設定ファイルのデプロイを、マニフェストに 従って一括デプロイ 3 Subversion マニフェスト及び構築資材の配布 4 pssh 並列シェルの実行(並行でファイル転送、取得) 5 IPMI 電源管理。リモートから電源をONするため。
  15. 15. 14Copyright © 2014 NTT DATA Corporation Puppetとは ツールの概要 システムを事前定義に従って構成するプロビジョニングツール 開発元 Puppet Labs. ライセンス Apache 2.0 (ver2.6以下はGPLv2) 開発言語 Ruby マニフェスト 記法 独自DSL 利用例 1)ファイルをデプロイする 例)/etc/puppet/hoge/hostsを、 /etc/hostsに パーミッション644 グループ、オーナをroot:root で配置 2)プロセスを起動する 例) /etc/puppet/hoge/httpd.confを /etc/httpd/conf/httpd.confに パーミッション644 グループ、オーナをroot:root で配置したのち、 httpdプロセスを起動する ・実行の都度毎回確認 ・何度実行しても同じ(冪等性)
  16. 16. 15Copyright © 2014 NTT DATA Corporation Puppetを利用する上での懸念 Puppetはサーバ/クライアント構成で利用できない 初期:数百台 ・・・ ・・・ 終局:千台以上 Puppetマスタサーバ  終局見積もりが千台を超える。Puppetマスタは耐えられるか? いつか限界を逢えるのは必至・・・
  17. 17. 16Copyright © 2014 NTT DATA Corporation ローカルデプロイ方式 クライアント/サーバ方式 ✖故障があると、SSL証明書の削除手順が発生 ✖台数が増えるとレスポンスが悪くなる ローカルデプロイ方式 ○故障があっても手順が増えない ○台数が増えてもスケールする ○メンテ時は差分しか送信されないため、負荷 軽減が可能 Puppet Master Puppet Client Puppet Client …… 証明書DB マニフェスト デプロイ資材 各ホスト毎必要な資材を Masterが判断してデプロイ する 構成管理 Puppet Client Puppet Client …… マニフェスト デプロイ資材 psshで各ホストに 全資材を配布 (subversion) 各ホストで必要な資材を 判断してデプロイSSL  Puppetの利用方式をクライアント/サーバ方式から、ローカルデ プロイ方式(分散方式)とした
  18. 18. 17Copyright © 2014 NTT DATA Corporation 自動構築のフロー 構成管理 SVN Proxy Storage (1)IPMIで全台電源ON (2)KickstartでOSインストール(自動) (3)資材とマニフェストを一括チェックアウト(pssh) (4)Puppetを使って一括ファイルデプロイ(pssh) 構築完了!! (0)構成管理サーバ構築(手動)  わずか4ステップ、3手順で一括構築を実現!
  19. 19. 18Copyright © 2014 NTT DATA Corporation 自動構築するのなら、自動試験も  OpenStack Swiftの自動試験ツールを利用:Tempest  コミュニティ版は網羅性が不足しているため、独自で試験を追加。  基盤試験はお手製のツールで。
  20. 20. 19Copyright © 2014 NTT DATA Corporation コミュニティ版との違い コミュニティ版 NTTデータ版 差 異 各APIに対して1パターンの試験を実施 各APIに対して、複数(網羅できるだけの)パターンの試 験を実施 例 【1】 試験名:オブジェクトPUT 試験内容:オブジェクトXXXをPUTする 期待結果:HTTPレスポンス 201 【1】 試験名:オブジェクトPUT+メタデータ付与 試験内容:オブジェクトXXXをメタデータ付きでPUTする 期待結果:HTTPレスポンス 201 【2】 試験名:オブジェクトPUT+Invalid Contentlength 試験内容:不正なContent-lengthを設定してオブジェク トをPUTする 期待結果:HTTPレスポンス400 (BadRequest) ・・etc 試 験 数 例 オブジェクトPUT試験:1 オブジェクトPUT試験:103 Tempest全体で416項目の試験を自動で実施
  21. 21. 20Copyright © 2014 NTT DATA Corporation 【注意】Tempestでは出来ないこと Proxy Storage#1 Storage#2 Storage#3 Tempest proxy-server acc/con/obj- server acc/con/obj- replicator con/obj-updator account-reaper acc/con/obj- auditor acc/con/obj- server acc/con/obj- replicator con/obj-updator account-reaper acc/con/obj- auditor acc/con/obj- server acc/con/obj- replicator con/obj-updator account-reaper acc/con/obj- auditor Tempestで 試験できる Tempestで 試験できない  Swiftのバックグラウンド処理の試験はできない  バックグラウンド処理の試験は、事前に別途実施した
  22. 22. 21Copyright © 2014 NTT DATA Corporation 自動構築&自動試験の効果 目標 ・品質/期限は守る(基盤・Swiftの試験は全部やる) ・構築期間は定時に帰る(社内で成功例を!) 品質は守れたか? 【結果】 全部で一万項目以上の試験 結果を報告 品質水準の充足達成! 定時に帰れたか? 【結果】 構築期間は定時前に作業完 了。サクサク帰宅。 WLBの充足達成! 一見すると大成功のサクセスストーリー。しかし・・・
  23. 23. 22Copyright © 2014 NTT DATA Corporation 遭遇したトラブル  構築直後のアップデート作業(運用作業)にて、トラブルに遭遇 トラブル① 検証環境のファイルを間違って本番環境へデプロイ してしまった トラブル② 別の理由で停止していたプロセスが、Puppetの実 行により意図せず起動してしまった トラブル③ ファイルは正確にデプロイした。しかし、設定が反映さ れていなかったため、想定外の事象が発生した
  24. 24. 23Copyright © 2014 NTT DATA Corporation なぜ起きるか? ~今後解決すべき課題~ 【仮説】本番環境へのプロビジョニング運用は、正しくないのでは? 検証環境のファイルを間違って本番環境へデプロイしてしまった 別の理由で停止していたプロセスが、Puppetの実行により意図せず起動してしまった ファイルは正確にデプロイした。しかし、設定が反映されていなかったため、想定外の事象が発生した Puppetは環境差分を管理してくれるわけではない。 Puppetは定義された通り起動しただけ。 Puppetは設定の反映までは面倒みてくれない。 本番環境へプロビジョニング運用し続けることはやめたい!
  25. 25. 24Copyright © 2014 NTT DATA Corporation
  26. 26. 25Copyright © 2014 NTT DATA Corporation これからのインフラ ~Immutable Infrastructure~ 「1度構成したサーバには2度と変更を加えない。変更時は新たな環境に差し替える。」 • 運用している間にシステムがつぎはぎになり、管理が難しくなるという課題に対する答えのひとつ – Chef/Puppetなどのコード化によって軽減はされるが、本質的な難しさは軽減されない • 「Blue Green Deployment」という考え方を一歩進めた考え方 – 環境を2面用意した上で、バージョンアップ時にロードバランサをもう片方の環境に切り替える方式 • 必須条件は「環境をまっさらなOSイメージから再現できること」 – インフラがコード化されている今、可能になった @IT「継続的デリバリ/デプロイを実現する手法・ツールまとめ (2/2)」 http://www.atmarkit.co.jp/ait/articles/1312/03/news033_2.html **ポイント** 本番環境へプロビ ジョニングしない!
  27. 27. 26Copyright © 2014 NTT DATA Corporation Immutable Infrastructureを実現するプロビジョニング 本番環境へのプロビジョニング運用はやめる。 デプロイ毎に、プロビジョニングで作り直す。 ただし、今までのプロビジョニングツールをそのまま使うと・・ OSの設定はプロビジョニングツールで コード化できるけど… OSのイメージ作成から一貫 してプロビジョニングできないの だろうか? マルチプラットフォームイメージ作成ツール Packer Linuxコンテナ管理アプリケーション Docker あります!今、ちょうど話題の!
  28. 28. 27Copyright © 2014 NTT DATA Corporation packer Packerとは ツールの概要 複数プラットフォームに対応した仮想マシンイメージのビルドツール 開発元 HashiCorp ライセンス Mozilla Public License Version 2.0 開発言語 Go 仮想マシン 定義 ファイル (json) 【プロビジョニング】
  29. 29. 28Copyright © 2014 NTT DATA Corporation Packer:ユースケース① 検証環境 開発環境 本番環境 Virtual BOX packer 検討初期やデバッグ作業は デスクトップ上で 開発中の環境は リーズナブルに 本番環境でも開発環境と 全く同じイメージをデプロイ .qcow2.box AMI 仮想マシン 定義 ファイル (json)  開発環境構築の効率化と本番環境との差異解消
  30. 30. 29Copyright © 2014 NTT DATA Corporation Packer:ユースケース② 初期 中期 後期 導入初期は安価な パブリック・クラウド 規模が大きくなってきたら プライベートクラウドへ移行 利用者の減退に伴い 再度安価なクラウドへ移行 .qcow2 AMIAMI packer 仮想マシン 定義 ファイル (json)  利用形態の変遷に伴うクラウド横断的なマイグレーション
  31. 31. 30Copyright © 2014 NTT DATA Corporation Dockerとは ツールの概要 Linuxコンテナ(LXC)を用いたコンテナ管理アプリケーション 開発元 Docker Inc ライセンス Apache License 2.0 開発言語 Go Linux標準の機能(cgroups, namaspaces)を用いて、 ホスト上のコンテナ間のリソースを隔離している
  32. 32. 31Copyright © 2014 NTT DATA Corporation Dockerの特長 API ・Docker Hub APIによる外部サービスとの連携 ポータビリティ ・サイズが軽量なため、別環境への移行が簡単 ・Dockerリポジトリを利用した移行 バージョニング ・コンテナをバージョン管理できる 1 2 3 http://blog.docker.com/2014/06/announcing-docker-hub-and-official-repositories/
  33. 33. 32Copyright © 2014 NTT DATA Corporation 仮想サーバ Packer + Dockerの使い分け  基本はPackerを使っておく。(Dockerfileでビルドしない)  Dockerはあくまでもプラットフォームとみなす。 packer Docker リポジトリ 2面用意が難しい 物理環境にもってこい S3 container 物理サーバ AMI json
  34. 34. 33Copyright © 2014 NTT DATA Corporation これからのプロビジョニングのベストプラクティス  コード化したインフラ/アプリ/テストコードをCIと連携してプロ ビジョニングする。 CIツール (jenkins) Docker ①ビルド 独自 レポジトリ ③war取得 ソースコミット アプリ開発者 レシピ コミット インフラ開発者 Packer ③ベース コンテナ取得 ④コンテナ登録 ②レシピ&テスト コード取得 【検証環境】 container 【本番環境】 テストコード コミット ④ビルド&テスト 【机上環境】 連携 本番運用中!
  35. 35. 34Copyright © 2014 NTT DATA Corporation 今後取り組むべき課題  Linuxコンテナ(Docker)の利用はまだ課題がある 【現場の声】  DBとかImmutableにできるのか?DBaaSにすべき?  ログ管理はどうする?集約型?Fluentd?  RHEL7から対応!?まだ現場はRHEL5のみ対応アプリとか結構 あるけど、ちゃんと動くか?  プライベートリポジトリの管理…誰がやるの?・・・etc いきなり全部をImmutableにするのは難しい。 まずは徐々に改善ベースでやるのが最適。
  36. 36. 35Copyright © 2014 NTT DATA Corporation
  37. 37. 36Copyright © 2014 NTT DATA Corporation まとめ  OpenStack Swiftを数百台自動構築しました。  構築は成功したものの、運用段階でトラブルが起き、プロビ ジョニングツールだけでの本番環境の運用の限界を感じました。  本番環境に直接プロビジョニングしない、”Immutableなイ ンフラ”を実現してくれるPackerとDocker、その使いドコロを ご紹介しました。  しかし、これらの要素技術はまだ課題もあります。引き続き注 意しながら、いいところは段階的に使っていきましょう。
  38. 38. Copyright © 2011 NTT DATA Corporation Copyright © 2014 NTT DATA Corporation

×