More Related Content Similar to OpenStack on OpenStack with CI Similar to OpenStack on OpenStack with CI (20) OpenStack on OpenStack with CI2. Summit
Developers
Developers Summit 2013 Summer
自己紹介
【氏名】
金渕 満 (かなぶち みつる)
【所属】
NTTソフトウェア株式会社
技術開発センター OSS技術部門 クラウド推進室
【担当業務】
OpenStackをテスト/高品質化するプロジェクトに所属
OpenStackに関する調査及び、トラブルシュートなどを実施
【活動領域】
元々はWeb系エンジニア、システム連携エンジニアを経て、3年ほど前
からOS・仮想化・ネットワーク等のプラットフォーム技術にどっぷり。
4. Summit
Developers
Developers Summit 2013 Summer
OpenStackをご存知ですか?
クラウドを構築するオープンソースソフトウェア
• コミュニティ側でもCIやIntegrationTestを活用したGatingに強く取り組んでおり、
コードの品質維持に努めている
• 私たちのプロジェクトでは、更に使用するコンポーネント及びAPIに対してのテス
ト及びバグ改修を実施
引用元: http://www.openstack.org/software引用元: http://www.openstack.org/software
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サイクルサイクルサイクルサイクルのののの停滞停滞停滞停滞
⇨⇨⇨⇨環境待環境待環境待環境待ちのちのちのちの発生発生発生発生
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
テスト基盤管理者テスト基盤管理者
環境一括生成環境一括生成
生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成 生成生成生成生成
イメージを更新の上、一括展開することで同一作業繰返しを排除
イメージ取得イメージ取得
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を使う準備は整っている!!
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
テナントα
テナントβ
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に収める
ことで疎通