More Related Content
Similar to goo基盤を支えるOpenstack (20)
goo基盤を支えるOpenstack
- 16. OpenStack環境の紹介
• ホスト名の命名ルールを
強制したい
• セキュリティルールは
各サービスには触らせない
• OpenStackへの改造を実施
– Horizon(Webコンソール)への
修正を中心に約40項目
NTTレゾナント運用要件
• VM作成後、
VMの名前解決を可能にする
• VM作成後、
Puppetを即時実行可能にする
• OpenStack APIと連携したツールの実装
– VM追加・削除時に
ローカルDNS・LDAPにデータ連携
対応方法
• NTTレゾナント独自の運用要件に以下のように対応
– 組織によるが、素のOpenStackで業務を回せるとは限らない
OpenStackの改造と周辺ツール
16
- 18. OpenStack環境の紹介
• Puppetを標準ツールとして大規模に使用
– Puppetとは
• ユーザ作成・設定ファイルの配布など環境構築をコード化するツール
• 誰が、いつ実行しても完全に同じサーバが構築できる
– 2012年ごろから本格的に利用開始
– OpenStackそのもの、OpenStack上の仮想サーバもpuppetで構成管理
– ほぼすべてのサービスで利用
class openstack_keystone {
package { 'openstack-keystone':
ensure => latest,
require => [
Class['openstack_yum'],
File['/usr/local/bin/deploy_utils/check_keystone_tables.sh']];
}
:
: ※マニフェストの一部
構成管理について
18
- 19. OpenStack環境の紹介
• Openstack自体のバージョンアップ
– 1世代先へのversion upは設計上サポートされている
• ○Icehouse → Juno
• ×Icehouse → 一気にKilo
– 半年に1回のリリースに追従するのはかなり厳しい
• 自社用パッチを半年ごとに書き直す必要
• 検証や手順作成に手間がかかる(特に、初回はノウハウもない)
• Icehouse → 一旦Juno化 → すぐKilo化
を一度のメンテナンスで実施するのか?
– Verup作業中にサービス提供中のVMを停止したくない
• VMを稼働させながらのverup作業が自環境で可能か?
• Openstackのダウンタイムも極力短くしたいが、所要時間は?
– 悩みは尽きない
今後の方向性と課題
19
- 25. OpenStack環境の紹介
• Openstackのログ管理と分析
– DEBUGログを除外して解析してみる (request-idでgrep)
– 例)インスタンスを1つ作成しようとして失敗した場合
25
2015-07-XX 17:00:YY TopCellController INFO
nova.osapi_compute.wsgi.server
172.X.X.X "GET <API_URL>/servers/<VM-UUID> HTTP/1.1" status: 200
→作成依頼を受け付けた
2015-07-XX 17:00:YY TopCellController INFO
nova.scheduler.filter_scheduler Attempting to build 1 instance(s)
→これから1インスタンスを作成する予告
2015-07-XX 17:00:YY ChildCellController WARNING
nova.scheduler.driver [instance:<VM-UUID>] Setting instance to ERROR state.
→インスタンスの状態をERRORに変更
2015-07-XX 17:00:YY ChildCellController INFO
nova.filters Filter DiskFilter returned 0 hosts
→ディスク容量判定フィルタが「作成先ハイパーバイザがない」と返している模様
…理由は?
2015-07-XX 17:00:YY TopCellController INFO
nova.osapi_compute.wsgi.server
172.X.X.X "GET <API_URL>/servers/<VM-UUID> HTTP/1.1" status: 200
→作成依頼を受け付けた
2015-07-XX 17:00:YY TopCellController INFO
nova.scheduler.filter_scheduler Attempting to build 1 instance(s)
→これから1インスタンスを作成する予告
2015-07-XX 17:00:YY ChildCellController WARNING
nova.scheduler.driver [instance:<VM-UUID>] Setting instance to ERROR state.
→インスタンスの状態をERRORに変更
2015-07-XX 17:00:YY ChildCellController INFO
nova.filters Filter DiskFilter returned 0 hosts
→ディスク容量判定フィルタが「作成先ハイパーバイザがない」と返している模様
…理由は?
今後の方向性と課題
- 26. OpenStack環境の紹介
• Openstackのログ管理と分析
– DEBUGログを解析してみると…
– 例)インスタンスを1つ作成しようとして失敗した場合
26
2015-07-XX 17:00:YY ChildCellController DEBUG
nova.filters Filter RamFilter returned 88 host(s) get_filtered_objects
/usr/lib/python2.6/site-packages/nova/filters.py:88
→要求したメモリを確保可能なハイパーバイザは88台ある
2015-07-XX 17:00:YY ChildCellController DEBUG
nova.scheduler.filters.disk_filter
(<hypervisor-name>) ram:46581 disk:731136 io_ops:0 instances:3
does not have 1433600 MB usable disk, it only has 731136.0 MB usable disk.
→要求したディスク容量を確保できない通知 × ハイパーバイザ88台分
…
2015-07-XX 17:00:YY ChildCellController INFO
nova.filters Filter DiskFilter returned 0 hosts
→要求したディスク容量が大きすぎたので作成できなかった、と読める
2015-07-XX 17:00:YY ChildCellController DEBUG
nova.filters Filter RamFilter returned 88 host(s) get_filtered_objects
/usr/lib/python2.6/site-packages/nova/filters.py:88
→要求したメモリを確保可能なハイパーバイザは88台ある
2015-07-XX 17:00:YY ChildCellController DEBUG
nova.scheduler.filters.disk_filter
(<hypervisor-name>) ram:46581 disk:731136 io_ops:0 instances:3
does not have 1433600 MB usable disk, it only has 731136.0 MB usable disk.
→要求したディスク容量を確保できない通知 × ハイパーバイザ88台分
…
2015-07-XX 17:00:YY ChildCellController INFO
nova.filters Filter DiskFilter returned 0 hosts
→要求したディスク容量が大きすぎたので作成できなかった、と読める
今後の方向性と課題
DEBUGログがないと内部挙動が見えない
が、DEBUGログを出力するとログ管理が大変
- 27. OpenStack環境の紹介
• スケーラビリティ&拡張
– 現在:1DC, 1リージョン, 1AZ, Cell×2構成
– 今後の拡張をどうやっていくか?
– Cell
• ハイパーバイザ(HV)の管理単位を分割する機能
• HVが200台~から利用するか要検討
今後の方向性と課題
27
TopCellControllerTopCellController
ChildCellControllerChildCellController ChildCellControllerChildCellController
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
~200台 ~200台弊社構成
- 28. OpenStack環境の紹介
• スケーラビリティ&拡張
– 複数Cell構成(Icehouse)はリソースが逼迫してくるとVM作成に失敗する
– ログを追うと、②Cell選択と③HV割当のアルゴリズムが連動していない
• TopCellには空きがあるように見えているが、実際は空きがない
今後の方向性と課題
28
TopCellControllerTopCellController
ChildCellControllerChildCellController ChildCellControllerChildCellController
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
HVHV
①VM作成指示
空きがあるCellを選んでくれない
④空きがなかった
③空きHVを調べる⑤作成失敗通知
②どちらかのCellに処理を割り振る