OpenStack の最新動向 ~Kilo, Liberty と Mxx にむけて~ Akihiro Motoki 13 Jul, 2015
OpenStack の最新動向 ~Kilo, Liberty と Mxx にむけて~
Akihiro Motoki
13 Jul, 2015
Agenda
• Kilo リリースの概要
• Liberty リリースでの注目ポイント
• M リリースについて考えてみる
自分が関わっているプロジェクトの都合上、 Neutron に偏っている点はご了承を。
Who am I?
• 元木 顕弘 (@ritchey98) – 以前はIPルータ、広域Ethernet装置、迷惑メールフィルタなどを開発していました。
– ここ数年は、ネットワーク仮想化、OpenStack, OpenFlow 周りで活動しています。
• OpenStack Developer
– Neutron Core Developer (+ Neutron Spec Review team) – Horizon Core Developer – I18N (国際化) Project member
• Linux JM (日本語マニュアル) Project Maintainer
– 最近やめました。もうLinuxの日本語マニュアルなんていりませんよね?
Kilo リリースの概要
• “Big Tent”
• Nova
• Neutron
• Cinder
• Keystone
• Horizon
• Swift
• Sahara
カバーしているプロジェクトは完全に主観 (^^;
“Big Tent”
• これまでの “Integrated projects” の仕組みでは要件が多くなってきた。スケールしない。
• “Big Tent” という考え方に移行 • 柔軟に OpenStack Official プロジェクトとして認めていく方向に変化。 – OpenStack の Mission にあっていれば認めていく方向
• The OpenStack Mission: to produce the ubiquitous
Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable.
これまでの Project Lifecycle
• Outside project → Incubation Project → Integrated Project
https://raw.githubusercontent.com/openstack/training-guides/master/doc/upstream-training/source/_assets/04-02-lifecycle.png
New projects under “Big Tent”
• Murano
• Congress
• Rally
• Barbican
• Designate
• Manilla
• Magnum
• Zaqar
• MagnetoDB
• Puppet OpenStack
• Mistral
OpenStack Official になったといっても これまでの “Integrated” とは異なる点に注意。 ステータスはそれぞれチェックする必要あり
“Big Tent”
• プロジェクトとして認められる条件 – OpenStack Mission にあっているか – 他のプロジェクトとの相互運用性 – プロジェクト参加者が継続的かつ複数の組織からか – Four *Open*
• Open Source, Open Community, Open Design, Open Development
• Tags – プロジェクトのリリース、運営方針などの状態を “tag” という形で表現。 – http://governance.openstack.org/reference/projects/index.html
• DefCore (OpenStack “Powered”)
– http://www.openstack.org/brand/interop/ – 商用として “OpenStack” と名乗るための要件 – 対象となるプロジェクト、満たすべきテストが DefCore Committee で定義されており、このテストをパスする必要あり。
Nova
• Nova v2.1 API – v2.1 = v2.0 compatibility
+ validations + microsversion – Strong parameter validation framework – Microversions : 実際には Kilo には 3つのバージョンあり – v2.1 : v2.0 compat API – v2.2 : new parameter to keypair API response
+ response code change for keypair create/delete (following API guideline from API-WG)
– v2.3 : new parameter to “show server” API for EC2
• NUMA (non-uniform memory access) サポートが完了 – NUMA 対応スケジューリング – 仮想CPUのPinning対応、メモリのコアへの対応付け – Large page 対応
Nova v2.1 API $ nova version-list +------+-----------+----------------------+-------------+---------+ | Id | Status | Updated | Min Version | Version | +------+-----------+----------------------+-------------+---------+ | v2.0 | SUPPORTED | 2011-01-21T11:33:21Z | | | | v2.1 | CURRENT | 2013-07-23T11:33:21Z | 2.1 | 2.3 | +------+-----------+----------------------+-------------+---------+ $ nova --debug --service-type computev21 list [...] DEBUG (connectionpool:383) "GET /v2.1/74bf6cda8e3946f6869ac76684e09b2c/servers/detail HTTP/1.1" 200 15 DEBUG (session:224) RESP: [200] content-length: 15 x-compute-request-id: req-30495e36-5c14-4028-b119-e9522b3cdbee vary: X-OpenStack-Nova-API-Version connection: keep-alive x-openstack-nova-api-version: 2.1 date: Sun, 12 Jul 2015 16:22:33 GMT content-type: application/json +----+------+--------+------------+-------------+----------+ | ID | Name | Status | Task State | Power State | Networks | +----+------+--------+------------+-------------+----------+ +----+------+--------+------------+-------------+----------+
Neutron • Vendor plugin decomposition
– ベンダープラグイン/ドライバーはそれぞれ別レポジトリーに分離。 • プラグイン開発のスピードアップ • Neutronのメインコードは API とフレームワークを提供
– Juno 時点で 40のベンダープラグイン、ドライバーが存在 • プラグイン開発者から見ると、レビューの遅さに不満 • レビューする側は「分からない」コードをレビューしないといけない
– これらの Pain Points を解消するために実施。
• Advanced service split – LBaaS, VPNaaS, FWaaS – 別のレポジトリーに分離。 – 領域に特化した知識が必要なのが レポジトリー分離の大きな理由。
• “Neutron Big Stadium”
– Neutron はネットワーク関係プロジェクト の Big Umbrella
Neutron
• Subnet allocation
• VLAN support in DVR
• ML2 plugin hierarchical port binding
• Restructure of L2 agent / L3 agent
• Port Security for OVS ML2 mechanism driver
• MTU advertisement
• Transparent VLAN support for VM (note that not supported in OVS driver)
ML2 hierarchical port binding
SW SW SW SW
VXLAN
VM VM VM VM
OVS OVS
VM VM
OVS
VM VM
OVS
VLAN VLAN VLAN VLAN
Assign VXLAN
VNI when creating
a network
Different VLAN-ID can be
used per compute node
OVS mech driver
HW-SW mech driver
• VXLAN encapsulation requires CPU power.
• Hierarchical port binding allows operators to combine VXLAN and VLAN.
• Most NICs has VLAN offloading feature.
• Can leverage VXLAN encap of hardware switches
Neutron
• IPv6 improvement – IPv6 router: to allow tenants to use global IPv6 addresses – Multiple prefixes for IPv6 (multiple IPv6 addresses for guest
interface)
• process monitoring for subprocess (such as dnsmasq, metadata-proxy)
• Rootwrap daemon to improve performance of root-priv commands
• LBaaS v2 API
• http://specs.openstack.org/openstack/neutron-specs/index.html#kilo-approved-specs
Cinder
• Rolling Upgrade に向けた対応 – Versioned object 対応により、データ構造が違うモジュールが混在可能に。
– DB schema アップグレード時に、サービス再起動が不要に。
• Incremental Backup (差分バックアップ) • Encrypted Backup • Consistency Group の改良
– Consistency Group = そのグループ内の複数のボリュームのスナップショットで、データ一貫性が保証
– 追加、削除のサポート。 – 既存スナップショットからのグループ作成。
地道な変更が多いが使い勝手順調に向上
Keystone
• Identity Federation (認証連携) – Keystone – Keystone 連携 – OpenID 対応 – Web Single Sign-on (SSO) 経由での認証連携に対応 (Horizon)
• Fernet Token – Token 内に基本的なアカウントID情報や有効期限を共通暗号で暗号化して格納。
– KeystoneではDBなしでトークンを検証できるが、サイズはUUID Token とあまり変わらない。
• 階層的なプロジェクト管理 – プロジェクト作成時に parent_id としてプロジェクトを指定する。 – 実際に使えるようになるには、OpenStack の他のサービスの対応が必要。Liberty以降に期待。
今回はかなり目立つ変更が多い
Horizon • 新しいインスタンス起動画面(ベータ版) • Angular JS ベースの実装が進展。JS ベースでの開発への道筋。 • Glance メタデータ編集 • Nova インスタンスのホストからの追い出し • Cinder v2 API デフォルトに。ボリューム暗号化メタデータ対応、など
Swift
• グローバルクラスターでのレプリケーションの改善 – 広域でクラスターを組む場合、リージョン間でのコピー時にはコピーされるオブジェクトが1つだけに。移動先で2個レプリカを持つ場合、リージョン間でコピーした後で、リージョン内でレプリカをコピーする。
• Erasure Coding のベータリリース – 新しい Storage Policy として追加。Ring 単位の設定。 – Erasure Coding を使うことでReplica方式よりも必要なディスク量が削減 (数10%の追加で冗長性確保)
– ほとんどの機能が実装されている。
• Composite Token – Nova、GlanceなどのサービスがSwiftにデータを格納する際に、ユーザーの代わりにデータを保存する機能。これまではサービスアカウントで格納。
– データは使用量が把握しやすいよう、ユーザアカウント配下に格納。
PUT: /v1/SERVICE_1234/<container>/<object> x-auth-token: <user-token> x-service-token: <service-token>
Sahara
• 新しいプラグイン – Spark, Storm, Hadoop 2.6.0, CDH
• イベントログ対応 – クラスターでのジョブ進捗状況を把握可能に。
• Horizon でのガイド付きのクラスター/ジョブ作成
• プラグイン単位でのノードグループとクラスターのテンプレート
• VM Deployment Engine として Heat がデフォルトに。
• Multi-worker のサポート
使い勝手がかなり向上した印象
Sahara (Horizon)
• クラスターとジョブをガイドで作成可能に。
Liberty リリースの注目ポイント
• Nova
• Neutron
• Ironic
カバーしているプロジェクトは完全に主観 (^^;
Release Versioning Change
• Liberty release ≠ 2015.2.X
• Liberty release からは、以下のようになります。 – “1” は最初の Integrated Release
• keystone 8.0.0
• neutron(-*aas) 7.0.0
• nova 12.0.0
• sahara 3.0.0
• trove 4.0.0
• ceilometer 5.0.0
• cinder 7.0.0
• glance 11.0.0
• heat 5.0.0
• horizon 8.0.0
• ironic 2.0.0
Nova
• 重要な開発項目は Liberty Priorities の形でまとめられている。 – http://specs.openstack.org/openstack/nova-
specs/priorities/liberty-priorities.html
• Cells v2
• API v2.1
• Scheduler
• Upgrades
• Developer Document Update
Neutron
• API versioning (extension vs micro-versioning) – API framework refactoring
• Nova-network migration – Linux Bridge の本格サポートの復活
– “Get me a network” (VM 起動時に Neutron Network を自動作成する)
• QoS sub team
• Availability zone support
• VLAN aware VMs
• RBAC for network
Neutron
• Ironic and Neutron integration • Vendor plugin/driver decomposition phase-2
– Neutron メインツリーからの完全分離 – Reference Implementation の別レポジトリーへの分離
• networking-foo プロジェクト – L2GW, Service Functional Chaining (SFC) – ODL, OVN, …
• 他にもたくさんあります • http://specs.openstack.org/openstack/neutron-
specs/#liberty-approved-specs
Ironic Neutron Integration
• Ironic (Baremetal) 使用時の Tenant Network Isolation を実現する。
• IronicからNeutronへの物理情報を渡すAPIの定義 – Ironic Port Table の拡張、物理情報の収集方法など
• IronicのProvisioning NetworkからTenant Networkへの切替
Bare Metal Server
Bare Metal Server
Bare Metal Server VM VM
vSwitch
Physical Switch Physical Switch
Neutron NW1
Neutron NW2
Switch ID Port ID
(more info)
Tenant Network
Provisioning Network
Cleaning Network
システム共通
テナント単位
BM Server
BM Server
BM Server
テナント利用中
利用終了後 利用開始時
Magnum
• プロトタイプからの脱却 (Production Level へ)
–内部で利用するミドルウェアへのTLS Auth対応
– API mirco-versioning 対応
– Scale-out Archicture
• Mesos サポート
• ロードバランサーサポート
M リリースについて勝手に考える
“M” release naming
• もう “M” リリースの名前が決まっているはずだったのですが・・・・・
M リリースについて考えてみる
• Single Networking Stack がやっと実現?
– Migration from nova-network to Neutron
• アップグレードがより現実的に?
– Live Upgrade (RPC & object versioning)
– Non-stop database schema migration
• コンテナを使ったデプロイが一般化?
– Kolla は使われるようになる?
–実現例がいろいろ出て来る頃か。
M リリースについて考えてみる
• たくさんできた openstack/xxxx プロジェクトはどうなる?
–ますます進む “Big Tent” モデル
• Cloudkitty や Monosca もどうなるか
–そろそろ淘汰されて消えていくものが出てくるか
ありがとうございました