OpenStack 運用実践によるエンタープライズ適用に向けた課題と今後について ~ ベアメタルサービスの現状と Design Summit での討議状況 ~ 2015 年 7 月 13 日富士通株式会社椎名宏徳 0
本日のアジェンダ Ironic の概要説明 ベアメタルサービスの現状と Design Summit での討議状況 1
Ironic の概要 2
ベアメタルサービス エンタープライズ適用に向けて必要な機能 仮想化に適さないワークロードへの対応 I/O 負荷が高く 性能要求の厳しいシステム ( データベースなど ) ベアメタルが必要 仮想マシンとベアメタルの共通管理 OpenStack のベアメタルサービス :Ironic OpenStack Kiloで正式にリリース Kiloでの修正規模 機能追加数 :24 件 バグ修正数 :170 件 ソース追加 : 約 27,000 行 3
OpenStack Ironic ベアメタルサービスを提供するコンポーネント 利用者は VM 配備と共通の操作でベアメタル配備可能 Nova Request VM Nova Request baremetal Hypervisor Ironic deploy deploy VM VM VM 4
Ironic の構成 Nova ベアメタル配備の要求 Ironic Ironic API Neutron ネットワーク制御 Ironic Conductor Driver Glance イメージ取得 ベアメタルの制御 5
ドライバ Ironic Conductor に ベアメタルを制御するインタフェースを提供 標準のドライバは IPMI を利用 ハードベンダも固有のドライバを開発 ( 性能向上や追加機能のため ) irmc driver ( 富士通 ) ilo driver (HP) DRAC driver (Dell) etc... ベアメタル配備の方式 ( ドライバで実装 ) PXE ブート Ironic Python Agent Virtual media 機能による配備 6
システムの全体像 コントローラノード Nova Neutron ノード = 物理サーバ Glance 管理ネットワーク ネットワークノード Neutron Agents コンピュートノード 外部ネットワーク DHCP L3 Nova Ironic 利用者の通信用 データネットワーク ベアメタル ベアメタル BMC BMC OOBネットワーク BMC: Baseboard Management Controller 7 BMC での電源制御
Ironic のセットアップ ベアメタルを Ironic に登録 使用するドライバ BMC の認証情報 ベアメタルのスペック情報 (CPU 数 メモリ量など ) MAC アドレス ベアメタル用のフレーバを作成 ( 利用者はフレーバを選択して ベアメタルの配備を要求 ) ベアメタル用のイメージを作成 デプロイ用イメージ ( 配備時のみ利用 ) bm-deploy-kernel, bm-deploy-ramdisk ユーザ用イメージ user-image, user-image-vmlinuz, user-image-initrd 8
ベアメタル配備の流れ 1. Ironicがベアメタルの電源を入れる 2. ベアメタルがデプロイ用イメージを取得してブート 3. デプロイ用イメージにより iscsiをセットアップ 4. Ironicがユーザ用イメージをベアメタルにコピー 5. Ironicがベアメタルを再起動 6. ベアメタルがユーザ用イメージで起動 user OS image deployment image Ironic tftp dhcp IP address iscsi target Compute node Network node Power management 9
ベアメタルサービスの現状と Design Summit での討議状況 10
Design Summit について 普段から IRC ミーティングで貢献を積んでいる開発者が次のリリースの大方針 デザインなどを決定する場 10 以上のセッションが並列開催 1 セッションから 5 名 ~50 名の参加者 座談会方式で 自由に発言 最前列の開発者が中心になって議論 人気セッションでは PTL やコア開発者を捕まえられない セッションでのアジェンダ登録は 事前に IRC ミーティングで議論して EtherPad に登録 11
Ironic-Neutron integration session の様子 12
ベアメタルの要件と Ironic の対応状況 要件 可否 課題 仮想マシンと同一 APIでの配備 OSプロビジョニング SAN Boot 構成 Cinderとの連携 サーバ故障時の復旧 ボリューム割り当て マルチテナント対応 Neutronとの連携 仮想マシンとのネットワーク接続 今回の発表の範囲 13
Design Summit での討議結果 Design Summit の目玉テーマの一つ マルチテナント対応 仮想マシンとのネットワーク接続 新しいクロスプロジェクト Ironic-Neutron integration の立ち上げ 実装方法の大枠について合意 14
実現する機能 マルチテナント対応のためには ネットワークの分離が必要 ベアメタルの場合 物理スイッチの設定が必要 物理スイッチ設定の自動化を行う マルチテナント スイッチ設定の自動化 VLAN100 VLAN200 スイッチ Tenant1 Tenant2 15
解決方法 2 種類の VLAN を利用 配備用 VLAN 管理者が作成するNeutronネットワーク Ironicを接続するVLAN ベアメタルは配備時のみこのVLANに接続 テナント用 VLAN テナント利用者が作成するNeutronネットワーク ベアメタルは配備後にこのVLANに接続 配備の前後で 2 種類の VLAN を切り替える 16
物理スイッチの制御方法 Neutron のドライバで物理スイッチを制御 スイッチポートの VLAN 設定を実施 Neutron の ML2 メカニズムドライバを実装する方針 Ironic Neutron VLAN 設定をリクエスト Ironic Conductor Neutron Server VLAN を設定 Neutron plugin (ML2 mechanism driver) 物理スイッチ 17
検討の過程 ( 案 1) 単純に VLAN でネットワークを分割 配備するときに どのベアメタルも Ironic から OS イメージの取得が必要 VLAN100 VLAN200 スイッチ Ironic Tenant1 Ironic への接続が必要 Tenant2 18
検討の過程 ( 案 2) テナントごとに Ironic を配置 VLAN100 VLAN200 スイッチ Ironic Tenant1 Tenant2 Ironic 19
検討の過程 ( 案 2) テナントごとに Ironic 用のノードを用意するのは非現実的 Ironic Ironic Ironic 20
解決方式の概要 (1/4) ベアメタルを配備するときは 配備用 VLAN を利用 配備用 VLAN Untagged VLAN 100 Untagged VLAN 100 Switch Untagged VLAN 200 Ironic OS イメージのコピー ( 配備中 ) ( 配備済み ) Tenant 1 VLAN ID 100:Deployment 200:Tenant1 21
解決方式の概要 (2/4) 配備完了後に Ironic がベアメタルの VLAN 設定を変更 ( 配備用 VLAN からテナント用 VLAN へ ) VLAN ID を変更 テナント用 VLAN Switch Untagged VLAN 100 Untagged VLAN 200 Untagged VLAN 200 Ironic Neutron ドライバ ( 配備済み ) ( 配備済み ) Tenant 1 VLAN ID 100:Deployment 200:Tenant1 22
解決方式の概要 (3/4) 別のテナントも配備用 VLAN を使ってベアメタルを配備可能 Switch Untagged VLAN 100 Untagged VLAN 100 Untagged VLAN 200 Untagged VLAN 200 Ironic ( 配備済み ) ( 配備済み ) Tenant 1 OS イメージのコピー VLAN ID 100:Deployment 200:Tenant1 ( 配備中 ) Tenant 2 300:Tenant2 23
解決方式の概要 (4/4) VLAN を切り替えることで Ironic が全テナントのベアメタルを配備可能 Switch Untagged VLAN 100 Untagged VLAN 300 Untagged VLAN 200 Untagged VLAN 300 Untagged VLAN 200 Ironic ( 配備済み ) テナント内で通信可能 ( 配備済み ) Tenant 1 VLAN ID 100:Deployment 200:Tenant1 300:Tenant2 ( 配備済み ) テナント内で通信可能 ( 配備済み ) Tenant 2 マルチテナント 24
配備の詳細 ( 準備 ) 管理者のオペレーション 1. Neutron ネットワークを作成 ( 配備用 VLAN) Neutron が DHCP サーバを作成 2. untagged VLAN を Ironic 用コンピュートノードが接続するスイッチポートに設定 2 untagged VLAN (deployment) trunk Data Network Switch Ironic tftp Compute node OOB Network dhcp (deploy) br-eth br-int 1 Network node BMC 25
配備の詳細 (1/6) 1. テナント利用者がネットワークを作成 ( テナント用 VLAN) Neutron が DHCP サーバを作成 2. テナント利用者がベアメタルの配備をリクエスト Data Network Switch untagged VLAN (deployment) trunk br-eth Ironic tftp dhcp (deploy) br-int dhcp (tenant) 1 Compute node Network node BMC OOB Network 26
配備の詳細 (2/6) 3. Ironic が配備用 VLAN の VLAN ID をベアメタルが接続しているスイッチポートに設定 4. Ironic がベアメタルの電源を ON Neutron Driver untagged VLAN (deployment) br-eth trunk 3 Data Network Switch untagged VLAN (deployment) Ironic Compute node tftp dhcp (deploy) br-int Network node dhcp (tenant) BMC OOB Network Power on 4 27
配備の詳細 (3/6) 5. ベアメタルが配備用 VLANのDHCPサーバからIPアドレスを取得 6. ベアメタルがデプロイ用イメージをtftpサーバから取得 Data Network Switch untagged VLAN (deployment) trunk 6 untagged VLAN (deployment) deployment image br-eth Ironic tftp Compute node OOB Network dhcp (deploy) br-int Network node dhcp (tenant) 5 BMC 28
配備の詳細 (4/6) 7. ベアメタルが デプロイ用イメージでブート後 iscsi ターゲットを用意し Ironic に通知 8. 通知を受けた Ironic がユーザ用 OS イメージをベアメタルにコピー Notification Data Network Switch untagged VLAN (deployment) trunk 7 untagged VLAN (deployment) 8 Ironic tftp Compute node OOB Network dhcp (deploy) br-eth br-int Network node dhcp (tenant) BMC iscsi target 29
配備の詳細 (5/6) 9. Ironic がテナント用 VLAN の ID を ベアメタルが接続するスイッチポートに設定 10.Ironic がベアメタルを再起動 Neutron Driver untagged VLAN (deployment) br-eth trunk 9 Data Network Switch untagged VLAN (tenant) Ironic tftp Compute node OOB Network Reboot dhcp (deploy) br-int Network node dhcp (tenant) BMC 10 30
配備の詳細 (6/6) 11. 再起動後 ベアメタルが テナント用 VLAN の DHCP サーバから IP アドレスを取得 12. テナント利用者がベアメタルを利用可能 Data Network Switch untagged VLAN (deployment) trunk untagged VLAN (tenant) br-eth Ironic tftp Compute node OOB Network dhcp (deploy) br-int Network node dhcp (tenant) 11 BMC 31
Liberty での取り組み 専用 IRC で実装の詳細を討議し Liberty での実現に貢献 Ironic-Neutron IRC ミーティングで議論毎週月曜 16:00(UTC) / 25:00(JST) ドライバ実装のよい前例となることを目指して ベンダ固有ドライバを開発中 Neutron の ML2 メカニズムドライバを開発中 neutron に RFE(Request For Enhancement) を発行 https://bugs.launchpad.net/neutron/+bug/1464190 Ironic Neutron 実装詳細の議論 Ironic Conductor VLAN 設定をリクエスト Neutron Server ドライバの実装 VLAN を設定 Neutron plugin (ML2 mechanism driver) 物理スイッチ 32
M シリーズに向けて Ironic の機能強化に向けて Design Summit での課題の提案 議論に貢献 要件 可否 課題 仮想マシンと同一 APIでの配備 OSプロビジョニング SAN Boot 構成 Cinderとの連携 サーバ故障時の復旧 ボリューム割り当て マルチテナント対応 Neutronとの連携 仮想マシンとのネットワーク接続 33