• Save
OpenStack on OpenStack with CI
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,183
On Slideshare
2,129
From Embeds
54
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
7

Embeds 54

https://twitter.com 54

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Summit Developers Developers Summit 2013 Summer OpenStack on OpenStack with CI 金渕金渕金渕金渕 満満満満 NTTソフトウェア株式会社 技術開発センター OSS技術部門 クラウド推進室#natsumiB2
  • 2. Summit Developers Developers Summit 2013 Summer 自己紹介 【氏名】 金渕 満 (かなぶち みつる) 【所属】 NTTソフトウェア株式会社 技術開発センター OSS技術部門 クラウド推進室 【担当業務】 OpenStackをテスト/高品質化するプロジェクトに所属 OpenStackに関する調査及び、トラブルシュートなどを実施 【活動領域】 元々はWeb系エンジニア、システム連携エンジニアを経て、3年ほど前 からOS・仮想化・ネットワーク等のプラットフォーム技術にどっぷり。
  • 3. Summit Developers Developers Summit 2013 Summer 本日伝えたいこと テスト基盤にOpenStackを使いましょう!!テスト基盤にOpenStackを使いましょう!! 【アジェンダ】 • 1. 私たちのプロジェクト • 2. OpenStack on OpenStack • 3. まとめ
  • 4. Summit Developers Developers Summit 2013 Summer OpenStackをご存知ですか? クラウドを構築するオープンソースソフトウェア • コミュニティ側でもCIやIntegrationTestを活用したGatingに強く取り組んでおり、 コードの品質維持に努めている • 私たちのプロジェクトでは、更に使用するコンポーネント及びAPIに対してのテス ト及びバグ改修を実施 引用元: http://www.openstack.org/software引用元: http://www.openstack.org/software
  • 5. Summit Developers Developers Summit 2013 Summer 1. 私達のプロジェクト
  • 6. Summit Developers Developers Summit 2013 Summer 私達のプロジェクトの開発サイクル 各チーム環境各チーム環境 UT環境UT環境CI環境 コミュニティに倣いつつ独自の味付けを実施 ×チーム数分 ×1~2環境×1~2環境 改修部分局所的な 部分的IntegrationTest レグレッションテストの役 割を含んだ 全体IntegrationTest 受け入れ側確認のための UnitTest
  • 7. Summit Developers Developers Summit 2013 Summer “1テスト環境”の内容 Tempest ServerTempest ServerCloud ControllerCloud Controller Network GatewayNetwork Gateway Check ServerCheck Server Storage NodeStorage Node HypervisorHypervisor HypervisorHypervisor バックエンド系ノード 実行系ノード テストノード Check ServerCheck Server API ProviderAPI Provider 各チーム内のIntegrationTestもマルチノード構成で実施 • CI環境で実施するIntegrationTest(Full)は長時間(半日~一日)を要し、この地点 でバグが頻出すると、開発サイクルが停滞する ⇨IntegrationTest(Partial)を各チーム環境/マルチノード構成で実施し、 早期に構成問題も含めて不具合を刈り取り
  • 8. Summit Developers Developers Summit 2013 Summer ノード数の爆発 各チーム環境各チーム環境 UT環境UT環境CI環境 CIサイクルを回すために必要なノード数が爆発 ×8環境 ×1環境×1環境 72 ノード 9 ノード 1 ノード 82 ノード!! 各各各各チームチームチームチーム環境環境環境環境のののの ノードノードノードノードをををを減減減減らすらすらすらす???? 各各各各チームチームチームチーム環境環境環境環境のののの ノードノードノードノードをををを減減減減らすらすらすらす???? 環境数環境数環境数環境数をををを 減減減減らすらすらすらす???? 環境数環境数環境数環境数をををを 減減減減らすらすらすらす???? ⇨⇨⇨⇨CIサイクルサイクルサイクルサイクルのののの停滞停滞停滞停滞 ⇨⇨⇨⇨環境待環境待環境待環境待ちのちのちのちの発生発生発生発生
  • 9. Summit Developers Developers Summit 2013 Summer 2. OpenStack on OpenStack
  • 10. Summit Developers Developers Summit 2013 Summer アプローチ:OpenStack on OpenStack OpenStack上でOpenStackのテストを実施し物理ノード数を削減 BareMetal Servers チーム1環境チーム1環境 CI 環境UT環境UT環境 ・・・ テスト基盤テスト基盤 テスト対象テスト対象 OpenStack EssexOpenStack Essex OpenStack Folsom OpenStack Folsom OpenStack Folsom OpenStack Folsom OpenStack Folsom OpenStack Folsom OpenStack Folsom OpenStack Folsom GuestGuest GuestGuest GuestGuest GuestGuest GuestGuest GuestGuest GuestGuest GuestGuest チーム2環境チーム2環境
  • 11. Summit Developers Developers Summit 2013 Summer 9 VMs 得られたメリット1:物理ノード削減 物理ノード数の数量を約1/3に削減 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs OpenStack EssexOpenStack Essex 30 nodes Bare Metal Servers FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom UTUT CI チーム1チーム1 チーム2チーム2 チーム3チーム3 チーム4チーム4 チーム5チーム5 チーム6チーム6 チーム7チーム7 チーム8チーム8UTUT 82物理ノードが必要なところを30物理ノード(82VM)で実現
  • 12. Summit Developers Developers Summit 2013 Summer 得られたメリット2:環境の復元 バグやテストモジュールでテスト環境が破損した場合でも、 9 VMs OpenStack Essex OpenStack Essex FolsomFolsom チーム1チーム1 テスト実行テスト実行 環境破損環境破損 OpenStack Essex OpenStack Essex チーム1チーム1 9 VMs OpenStack Essex OpenStack Essex FolsomFolsom チーム1チーム1 テスト基盤管理者テスト基盤管理者 環境削除環境削除 テスト基盤管理者テスト基盤管理者 環境再配置環境再配置 イメージ管理イメージ管理 再実行再実行 テスト基盤側イメージ管理により、容易/迅速な復元が可能
  • 13. Summit Developers Developers Summit 2013 Summer 得られたメリット3:構成の変更 環境構成の変更を行いたい場合でも、 9 VMs OpenStack Essex OpenStack Essex FolsomFolsom チーム1チーム1 SE作業を最小限に留めつつ、テスト基盤操作で構成変更が可能 9 VMs OpenStack Essex OpenStack Essex FolsomFolsom テスト基盤管理者テスト基盤管理者 環境追加環境追加 環境再構成環境再構成環境再構成環境再構成 チーム1チーム1 OpenStack Essex OpenStack Essex FolsomFolsom 11 VMs チーム1チーム1
  • 14. Summit Developers Developers Summit 2013 Summer 得られたメリット4:環境の更新 各環境の更新をしたい場合は、 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs OpenStack EssexOpenStack Essex FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom UTUT CI チーム1チーム1 チーム2チーム2 チーム3チーム3 チーム4チーム4 チーム5チーム5 チーム6チーム6 チーム7チーム7 チーム8チーム8UTUT イメージ管理 (Glance) イメージ管理 (Glance) ハイパーバイザ管理 (nova) ハイパーバイザ管理 (nova) テスト基盤管理者テスト基盤管理者 最新イメージアップロード最新イメージアップロード
  • 15. Summit Developers Developers Summit 2013 Summer 得られたメリット4:環境の更新 各環境の更新をしたい場合は、 OpenStack EssexOpenStack Essex UTUT CI チーム1チーム1 チーム2チーム2 チーム3チーム3 チーム4チーム4 チーム5チーム5 チーム6チーム6 チーム7チーム7 チーム8チーム8UTUT イメージ管理 (Glance) イメージ管理 (Glance) ハイパーバイザ管理 (nova) ハイパーバイザ管理 (nova) テスト基盤管理者テスト基盤管理者 環境一括削除環境一括削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除 削除削除削除削除
  • 16. Summit Developers Developers Summit 2013 Summer 得られたメリット4:環境の更新 各環境の更新をしたい場合は、 OpenStack EssexOpenStack Essex UTUT CI チーム1チーム1 チーム2チーム2 チーム3チーム3 チーム4チーム4 チーム5チーム5 チーム6チーム6 チーム7チーム7 チーム8チーム8UTUT イメージ管理 (Glance) イメージ管理 (Glance) ハイパーバイザ管理 (nova) ハイパーバイザ管理 (nova) 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs 9 VMs FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom FolsomFolsom テスト基盤管理者テスト基盤管理者 環境一括生成環境一括生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 イメージを更新の上、一括展開することで同一作業繰返しを排除 イメージ取得イメージ取得
  • 17. Summit Developers Developers Summit 2013 Summer 3. まとめ
  • 18. Summit Developers Developers Summit 2013 Summer まとめの前に、支えている基礎技術 OpenStack on OpenStackは以下の基礎技術に支えられています • VMネスト方式 ⇨ KVM on KVM • NWネスト方式 ⇨ VLAN on VLAN (≠Q-in-Q) ⇨上記についての詳細は本発表には収まりきりませんでした!! 【その他補足】 • IaaS上で全てのテストを実施しているわけではなく、性能系、障害系、運用系テ ストについては、本テストの後にベアメタル環境で実施を行なっています • OpenStackコミュニティ側でも "TripleO" というプロジェクトにて、OpenStack on OpenStackの取り組みが行われています(本内容はTripleOとは関連ありませ ん) slideshareにはアップしますので、ご参照ください!slideshareにはアップしますので、ご参照ください!
  • 19. Summit Developers Developers Summit 2013 Summer まとめ • 一昔前、OpenStackのセットアップはやや敷居の高い作業だった ⇨現在はdevstack(http://devstack.org)で最低限環境なら簡単に セットアップ可能 ドキュメントも充実、運用で主に使うコマンドマニュアルも以下にあります http://docs.openstack.org/ops/ • 更にオーケストレーションエンジンが搭載され、1つの環境をテンプレートで生成 できるように OpenStackをテスト基盤に用いるメリットは計り知れない、さらに $ git clone https://github.com/openstack-dev/devstack.git $ cd devstack/ $ git checkout origin/stable/grizzly $ ./stack.sh テスト基盤にOpenStackを使う準備は整っている!!テスト基盤にOpenStackを使う準備は整っている!!
  • 20. Summit Developers Developers Summit 2013 Summer ご清聴ありがとうございました
  • 21. Summit Developers Developers Summit 2013 Summer おまけ1:OS on OSの構成技術
  • 22. Summit Developers Developers Summit 2013 Summer 2つのXonX VM及びネットワークのネスト方式が重要 • VMのネスト方式 ⇨ KVM on KVM(Nested KVM) • ネットワークのネスト方式 ⇨ VLAN on VLAN(≠Q-in-Q)
  • 23. Summit Developers Developers Summit 2013 Summer KVM on KVM 一応二つの選択肢があるがKVM on KVMを使わない理由はない OSOS OSOS KVMKVM KVMKVM Guest OSGuest OS OpenStack EssexOpenStack Essex OpenStack FolsomOpenStack Folsom • KVM on KVM • QEMU on KVM OSOS OSOS KVMKVM QEMUQEMU Guest OSGuest OS OpenStack EssexOpenStack Essex OpenStack FolsomOpenStack Folsom • Guest OSの速度差は歴然(というよりは、QEMU on KVMの場合、Guest OSインス トールテストなど重めのテストは実行不可)
  • 24. Summit Developers Developers Summit 2013 Summer VLAN on VLAN OpenStackは「テナント」単位に仮想NWを分離する VMVM VMVM VMVM VMVM Hypervisor #1 Hypervisor #2 テナントA テナントB • テナント単位に仮想NWを分離する方式には幾つか選択肢があります。 • 最もシンプルな方式はタグVLANを使う方法です。 • VLAN ID数の制限(1~4094)がありますが、ID数が不足しない場合、最も構築が 簡単な仮想NW環境となります。
  • 25. Summit Developers Developers Summit 2013 Summer VLAN on VLAN VLAN on VLAN構成を選択 VMVM VMVM VMVM VMVM Hypervisor #1 Hypervisor #2 テナントA テナントB • テスト対象側のVLANは必要機能と定義されていたため必要確定 • テスト基盤側はnova-networkとVLAN構成を選択 VM VM VM VM テナントα テナントβ
  • 26. Summit Developers Developers Summit 2013 Summer おまけ2:トラブル集
  • 27. Summit Developers Developers Summit 2013 Summer 特定Hypervisorに通信できない! 特定のHypervisorに通信できない事象が発生 VMVM Hypervisor #1 VM VM VMVM Hypervisor #2 VM VM VMVM Hypervisor #3 VM VM テナントA テナントα テナントβ VMVM VMVM VM VM テナントB テナントγ テナントε VM VM
  • 28. Summit Developers Developers Summit 2013 Summer 特定Hypervisorに通信できない! 18:54:44.656627 fa:16:3e:53:a3:44 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 64: vlan 50, p 0, ethertype 802.1Q, vlan 100, p 0, ethertype ARP, Request who-has .... 4:44.656916 fa:16:3e:6c:51:a6 > fa:16:3e:53:a3:44, ethertype 802.1Q (0x8100), length 50: vlan 50, p 0, ethertype 802.1Q, vlan 100, p 0, ethertype ARP, Reply .... 18:57:44.537006 fa:16:3e:3a:5e:a6 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 64: vlan 20, p 0, ethertype 802.1Q, vlan 100, p 0, ethertype ARP, Request who-has .... 18:57:44.537449 fa:16:3e:39:3f:d5 > fa:16:3e:3a:5e:a6, ethertype 802.1Q (0x8100), length 46: vlan 20, p 0, ethertype ARP, Reply .... 正常に通信できている場合のパケット 通信できていない場合のパケット ethertype 802.1Q (0x8100), length 50: vlan 50, p 0, ethertype 802.1Q, vlan 100 ethertype 802.1Q (0x8100), length 46: vlan 20 tcpdumpでの解析⇨NICドライバ依存 • 特定のハードウェア(厳密には特定のハードウェアのNICドライバ)はVLAN on VLANで付 与される二重タグの一つを捨ててしまうことが判明 ⇨Hypervisorにパケットが到達した時点で捨てられているため、アプリ側 で対処の仕様がない • 二重タグに対応しているハードウェア/していないハードウェアを分類し、非対応ハード ウェア上でネットワーク処理が必要なコンポーネントを立ち上げないよう、テスト基盤側で コントロールし解決
  • 29. Summit Developers Developers Summit 2013 Summer 特定UDP通信ができない! 特定のUDP通信ができない事象が発生 VMVM VMVM Hypervisor #1 Hypervisor #2 テナントA VM テナントα VM • 同じUDP通信だが、DHCPの通信は確実に成功し、netperfからのUDP負荷通信 は必ず失敗する(1パケットも届かない) • Hypervisor間及びVM間でのフィルタリングはしていない DHCP netperf
  • 30. Summit Developers Developers Summit 2013 Summer 特定UDP通信ができない! 宛先MAC 送信元MAC Type Data FCS 宛先MAC 送信元MAC Type Data FCSTag 宛先MAC 送信元MAC Type Data FCSTag Tag 通常のイーサネットフレーム タグVLANのイーサネットフレーム 二重タグVLANのイーサネットフレーム(VLAN on VLAN) ifconfigに不審な形跡⇨イーサネットフレーム超過 RX packets:36490322 errors:108060 dropped:2322613 overruns:0 frame:108060 TX packets:24722828 errors:0 dropped:0 overruns:0 carrier:0 dropped:2322613 overruns:0 frame:108060 MAX 1518 bytes MAX 1522 bytes MAX 1526 bytes • 二重タグにより、イーサネットフレームの最大値を超え、不正パケットとして破棄 されていることが判明 • netperfのUDPデータサイズを1468bytesとし、イーサネットフレームを1522bytesに収める ことで疎通
  • 31. Summit Developers Developers Summit 2013 Summer 商標及び登録商標について • OpenStack及びOpenStackロゴはOpenStack Foundationの登録商標または商標 です