産総研における
プライベートクラウドへの取り組み
高野 了成
!
産業技術総合研究所 情報技術研究研究部門!
2
発表の流れ
• プライベートクラウド
• 産総研におけるスパコンの変遷
• 産総研クラウドの構築
• 仮想化の壁とI/O高速化
• インタークラウド連携
• まとめ
クラウドコンピューティング
3 エンドユーザ ソフトウェア開発者 システム管理者ネットワークを介して、
資源を
サービス
として利用
(
X as a Service
)
クラウドが提供するサービス
4 Infrastructure as a Service (IaaS) Platform as a Service (PaaS) Software as a Service (SaaS) 物理インフラ エンドユーザ アプリケーションを オンデマンドに提供 Google Apps, Salesforce.com ソフトウェア開発者 Webアプリケーションを 構築するプラットフォー ムを提供Google App Engine, Windows Azure
システム管理者
(仮想化された)ハード
IaaSの形態
5• Pay-as-you-goスタイル
• “無限”の資源を提供
• シンプルなWebインタ
フェース
パブリッククラウド
プライベートクラウド
• 排他的ネットワーク内での
運用
•
仮想化
による資源プール化
• IT資産のライフサイクルの
効率化
ハイブリッドクラウド
• 両者の連携
• 例)負荷をオフロード(Cloud bursting)
インタークラウド
• グリッドコンピューティングの
夢再び!?
産総研におけるスパコンの変遷
産総研におけるスパコンの変遷
• HPC(高性能計算)、グリッドからクラウドへ
• 電力効率の問題
7
AIST Super Cluster 2004年3月∼2010年2月
スーパークラスタ
AIST Green Cloud 2010年3月∼ グリーンクラウド
AIST Super Cloud 2011年6月∼ スーパークラウド リプレース 共用サーバ
AIST
スーパークラスタの構成
P-32
M-64
F-32
ストレージ
ユーザ用データ格納10
ギガイーサ
合計
79ラック
AIST
スーパークラスタ諸元
P-32
M-64
F-32
CPU Model
AMD Opteron Intel Itanium2Madison Intel Pentium4 Xeon
周波数
2.0GHz
1.3GHz
3.06GHz
#cpu/node
2
4
2
#node
1072
132
268
総CPU数
2144
528
536
Memory (GB)
6400
2100
1100
Disk (TB)
565
117
99
R
max/R
peakTflops䈊
Rank (2003. Nov.)
6.155/8.60䈊
11位相当
1.616/2.70䈊
65位相当
1.997/3.30䈊
39位相当
20,000原子を越えた光合成たんぱく質の全電子計算
・300ノード(600CPU)を用い、86.7時間で計算を完了
・全電子第一原理計算として20,000原子を超えたものは世界初
・スーパーコンピューティングと高速ネットワークに関する世界最大かつ最高品質の会議 ACM/IEEE Supercomputing 2005にて、日本初のBest Paper Awardを受賞
Ikegami, T., Ishida, T., Fedorov, D. G., Kitaura, K., Inadomi, Y., Umeda, H.,. Yokokawa, M. and Sekiguchi, S.: “Full Electron Calculation Beyond 20,000 Atoms: Ground Electronic State of Photosynthetic Proteins”
日米グリッド上での大規模実証実験(2007)
! NEB+Hybrid QM/MD法によるガンマアルミナ内での水素原子拡散シミュレーション ! GridRPC + MPI によるプログラミング ! 日米グリッド上で実行(1193 CPUs) ! 約58時間にわたり、5000 QM シミュレーションを実行 reaction coordinates sy ste m e n er gy end-1 end-2 MPI QM QM QM QM MPI QM QM QM QM MPI QM QM QM QM MPI QM QM QM QM RPC scheduler Purdue SDSC AIST MPI MD MD MD MD RPC RPC RPC NEB NCSA USCAIST F32 41!1 CPUs for MD AIST F32 64!3 CPUs for QM AIST P32 64!4 CPUs for QM
NCSA 64!4 CPUs for QM SDSC 64!2 CPUs for QM Purdue 64!4 CPUs for QM USC 64!1 CPUs for QM
0 20 40 60 80 100 120 140 160 0 10 20 30 40 50 USC SDSC NCSA Purdue F cluster P cluster Number of Execution Elapsed time (hour)
Top500
の推移
P32
19位 458位 地球シミュレータ 京性能の相対的な劣化より、電力効率の悪さが問題
AIST Green Cloud Server (AGC)
! 2010年3月導入
! ブレードシャーシ
! Dell PowerEdge M1000e !8
! ブレード
! Dell PowerEdge M610 !16!8 (=128)
! クアッドコアIntel Xeon E5540 ! 2(2.53GHz, 8MBキャッシュ) ! 48GB メモリ
! 300GB HDD !2
! 計算用ネットワーク
! Mellanox M3601Q FI
Infiniband I/F 4X QDR 32port
! 管理・データ転送用ネットワーク
AIST Super Cloud Server (ASC)
! 2011年6月導入
! ブレードシャーシ
! Dell PowerEdge M1000e !12
! ブレード
! Dell PowerEdge M610 !16!12 (=192)
! クアッドコアIntel Xeon E5620 ! 2(2.4GHz, 12MBキャッシュ) ! 24GB メモリ ! 600GB HDD !2
! 計算用ネットワーク
! 10GB Ethernet
! 管理・データ転送用ネットワーク
! Gigabit Ethernet
! 共用サーバとして利用
産総研クラウドの
物理基盤
同性能の計算機の消費電力が
1/10
15 AISTスーパーク ラスタ(ASC) AISTグリーンク ラウド(AGC) AISTスーパーク ラウド(ASC) 導入年度 2004 2009 2011 導入経費(M円) 1500 76 66 電気代(M円/5年) 400 28 43 ノード数 1408 128 192 コア数 2816 1024 1536 ピーク演算性能(TFlops) 14.6 10.4 14.6 定格消費電力(KW) 800 63 86 実効消費電力(KW) 460 40 48 性能/定格電力(Gflops/KW) 18.25 165.08 169.77 性能/実効電力(Gflops/KW) 31.74 260 304.17 価格/性能(円/Tflops) 1億 760万 450万ASC:共用サーバとしての利用
• クラウド的な運用を目指す
– Pay as you goスタイル
– 仮想化、マルチテナント
• 現状はまだまだ中途半端で試行錯誤中
16 0 50 100 150 200 BMM占有(期限付き) BMM占有 KVM KVM(OpenNebula) その他 KVM環境・ホストOS: Scientific Linux 6.0
・ゲストOS: CentOS 5.6、CentOS 4.9、openSUSE 11.4 BMM占有環境
・CentOS 5.6 ・openSUSE 11.4
産総研クラウドに至る背景
• AIST Super Clusterは導入初期は相対的な性能も
高く、HPCやグリッドの研究に有効に活用できた。
国内外の機関とも対等に渡り合えた。
• AIST Green CloudやAIST Super Cloudは、電力
効率や対価格性能は劇的に向上しているが、絶対
的な性能は世界的な水準からすると
1~2ケタ低い。
– T2Kなど外部リソースの利用は必須になるだろう。
• クラウド的に物を作っておけば、そういった連携が容易になる。
• IT資源全体の消費電力削減や計算資源の有効利
用に貢献すべく、プライベートクラウドの構築を進め
ていく。
17産総研クラウドの構築
産総研クラウドのイメージ
19物理クラスタ
(
e.g., ASC)
仮想クラスタ
計算の種類・規模に 応じた資源の要求 利用者ごとに仮想的な専用 クラスタ計算機を提供従来のセンタ運用とは異なる基盤ソフトウェアが必要
クラウド管理ソフトウェア(1)
• ハイパーバイザ技術はコモディティ化
– VMWare ESXi、Xen、KVM、Hyper-V
• 一方で、
クラウド管理ソフトウェアが差別化要因
– クラウドスタック、クラウドコントローラ、クラウド基盤構築
ソフトウェア、クラウド
OSなどと呼ばれることも
• 百花繚乱の様相
– Eucalyptus、OpenStack、CloudStack、OpenNebula、
Nimbus、Wakame、Rocks、Condor、VMWare vSphere!
20予算は限られているので(しかし、手を動かす人材と
ノウハウはある)、
OSSでのシステム構築を検討
クラウド管理ソフトウェア(2)
• IaaS型クラウドを構築、運用するソフトウェア
– VMの起動・停止、マイグレーションの制御
– VMイメージの管理
– 資源管理、資源利用の監視
21 計算ノード 計算ノード 管理ノード Instance Instance Instance Instanceクラウド管理ソフトウェアの比較(1)
• Rocks: http://www.rocksclusters.org/
– 米国・UCSDで開発されたクラスタ管理ソフトウェア
– CentOS (RHEL)ベースの拡張パッケージ群(Rolls)
• Eucalyptus: http://www.eucalyptus.com/
– 米国・UCSBなどで開発されたAmazon EC2/S3クローン
• OpenStack: http://openstack.org/
– 米国・NASA、Rackspaceなどで開発
• NASAはEucalyptusを使っていたが、スケーラビリティと開発のオープン性の 問題から独自開発を選択• OpenNebula: http://opennebula.org/
– スペイン・マドリッド大学などで開発
22我々の全ての要求を満たすものはない。シンプルかつ拡張の
容易性から
OpenNebulaを選択。OpenStackの今後にも注目
クラウド管理ソフトウェアの比較(2)
23
Rocks Eucalyptus OpenStack OpenNebula
物理マシンOSの制約 RHEL5系 ※1 特になし 特になし 特になし 利用可能なVMM Xenのみ Xen、KVM Xen、KVM、VMWare、
Hyper-Vなど ※2 物理マシン管理 ○ 他環境で作成したVMの移設 ○ ○ ○ ○ 仮想クラスタ管理 VLAN設定 ○ ○ ○ △ ※4 ユーザアカウント一元管理 ○ △ ※4 クラスタ毎の/home提供 ○ △ ※4 実装の完成度 ○ △ ※5 ○ ※1 カーネル等が古く仮想化関連機能のサポートが不十分 ※2 libvirtが対応しているVMM ※3 管理者権限が必要 ※4 スクリプト実行によりVM起動時にカスタマイズ可能 ※5 現在活発な開発が進められており、将来性は期待大
OpenNebula
24• スペイン・マドリッド大学(Complutense University of
Madrid)による研究開発
• オープンソースソフトウェア(Apache License 2.0)
• C12G Labsによる商用サポートもあり
http://opennebula.org/about:about より引用 (FP7)OpenNebulaアーキテクチャ
25VM host 1
VM host 2
frontend
local network global network VMM SSH |-- one /srv/cloud `-- images /srv/cloud ONED CLI or Sunstone GUIVMM SSH /srv/cloud VMの制御 VMイメージのデプロイ(NFS共有、scp) Sche duler
OpenNebulaの操作例
26• CUI (ライブマイグレーション)
• Sunstone
– WebベースGUI
VM ID Host IDContextualization機能
• VMテンプレートファイルなどで定義した値やファイ
ル、スクリプトを
VMの起動時に実行することで、
VM固有の設定
を実現
• 産総研クラウドでの利用例
– ユーザアカウントの作成、パスワードの初期化
– rootパスワードの設定
– SSH公開鍵のコピー
– /etc/hosts、/etc/resolv.
confファイルなどの作成
– NFSの設定(予定)
27 VM作成時に onedにより 自動生成Contextualizationの例
28 DISK = [IMAGE_ID=6]� NIC = [NETWORK_ID=0]� NIC = [NETWORK_ID=1]� LOCALID = 1� � CONTEXT = [ # CONTEXTセクション�description = context test � id = $VMID ,�
localid = $testvm-$VMID ,� localid = $LOCALID ,�
ip_public = $NIC[IP, NETWORK_ID=0] ,�
ip_private = $NIC[IP, NETWORK=\ private\ ] ,� dns = $NETWORK[DNS, NETWORK_ID=0] ,�
]�
VMテンプレート
(test.one)
# Context variables generated by OpenNebula�context.sh
DESCRIPTION= context test � DNS= 123.123.123.1 � HOSTNAME= testvm-12 � ID= 12 � IP_PRIVATE= 192.168.0.112 � IP_PUBLIC= 123.123.123.112 � LOCALID= 1 � TARGET= hdb �
MAC_PREFIX:IPルール
• OpenNebulaデーモンがVMに払い出すIPアドレス
と
MACアドレスの組みを管理する。重複しないMAC
アドレスを
IPアドレスから自動生成
• VMは割り当てられたMACアドレスからIPアドレスを
計算して
NICに設定
29 % onevnet show 1 (snip) LEASES INFORMATIONLEASE=[IP=192.168.57.209, MAC=02:00:c0:a8:39:d1, USED=0, VID=-1]
プレフィックス
(デフォルトは”02:00”)
IPアドレス
産総研クラウド:現状と今後の課題
• 対応済み
– ユーザ毎に独立したクラスタ計算機を提供
• 複数の利用可能OSからユーザが利用したいOSを選択
– 既存の物理マシンから仮想マシンを作成
– 要求に応じた仮想マシン数の増減
• 今後の課題
– ユーザの利用量に応じた課金
– 仮想クラスタ毎のVLANによるネットワーク隔離
• OpenNebula 3.0の機能を検討
– PCIパススルー利用によるI/O高速化
– 仮想マシンライブマイグレーション
30運用で得られた知見:よかった点
• VMイメージファイルのテンプレート化
– OSインストールはテンプレート作成時の一度で済む• 任意時点でのバックアップが容易
• 各種プログラムをインストール・カスタマイズした専用クラスタの運用
• 物理クラスタと比べて、少ない労力でクラスタを構築、複製、廃棄可能
– 一時的にVMを米国SDSCにデプロイして運用• 既存の物理マシン環境をP2Vで複製でき、移行が比較的容易
• H/Wの故障、陳腐化にも物理マシンを更新してサービスを継続可能
– ハードウェアの寿命とソフトウェア環境の寿命の分離• 仮想クラスタ上の管理権限をユーザに移管可能
– 一部のユーザサポート対応(アカウント作成、プログラムインストール依頼な ど)を物理基盤運用業務から分離• バッチシステム(旧ASC環境)と比べて、各ユーザが好きなときに好きな
だけジョブを実行可能
31運用で得られた知見:困った点
• 仮想化層の追加により問題の切分けが複雑化
– VMM、ネットワークブリッジなど• QEMU、Xen、libvirtなどの開発速度が早く、バージョン間で使用可能な
機能が大きく異なる
– Linuxディストリビューションのlibvirtが古くて、OpenStackが動かない – QEMUの-cpu hostオプション• クラウド管理ソフトウェアが開発途上
– 実装が未成熟 – ドキュメント、ノウハウ不足 – 開発プロジェクトの先行きが不透明• 仮想化I/O(ネットワーク、ストレージ)のオーバヘッドによる性能低下
– ただし、数年前のマシンから移行すると高性能になることも• ユーザによって「計算用クラスタ」として要求する水準(コンパイラの種類、
バッチシステムの有無など)が異なるので、事前に意識あわせが必要
• 既存クラスタユーザには仮想化に対する心理的な抵抗感が根強い
32 人柱になるのを覚悟して、 フィードバックを上げていく必要仮想化の壁と
I/O
高速化
仮想化導入の壁
経営サイドから見るとよいことずくめに見えるが
!
• 本当に安いのか?
– 初期導入コストが高い
• 縦割り組織の弊害
– 研究室、プロジェクト単位ではスケールメリットが出ない
• 現場の反対
– 性能が悪い(特にネットワーク、ストレージIO)
– システム管理者に要求される知識が増える
• サーバだけじゃなくネットワークやストレージの知識も!
– 仮想マシンの研究開発に使えない
34とある現場の声
• 最初はメールサーバやプリンタサーバなど、負荷が
小さなサーバ機器の集約化を目的に仮想化を導入
• 仮想化の効果が確認できたら(ノウハウがたまれ
ば)、適用範囲を広げる予定
"
いまここ
•
(心の声)
現状ではネットワークやストレージに対し
て高い性能を要求していないが、性能が出るなら、
DBサーバ、HPCサーバなども仮想化していきたい
35マイグレーションパスを提示することが重要
仮想計算機の
IOアーキテクチャ
36IO emulation
VM1 NIC VMM Guest driver Physical driver Guest OS VM2 vSwitch …PCI passthrough
VM1 NIC VMM Physical driver Guest OS VM2 …SR-IOV
VM1 NIC VMM Physical driver Guest OS VM2 … Switch (VEB)IO emulation PCI passthrough SR-IOV
VM sharing 䘠 䘢 䘠
実験環境:
AIST Green Cloud
37
Compute node(Dell PowerEdge M610)
CPU Intel quad-core Xeon E5540/2.53GHz x2
Chipset Intel 5520 Memory 48 GB DDR3
InfiniBand Mellanox ConnectX (MT26428)
37
Blade switch
InfiniBand Mellanox M3601Q (QDR 16 ports)
AGCクラスタの1エンクロージャ(16ノード)を使用して、
HPCアプリケーションの性能を評価
Host machine environment
OS Debian 6.0.1 Linux kernel 2.6.32-5-amd64 KVM 0.12.50
Compiler gcc/gfortran 4.4.5 MPI Open MPI 1.4.2
VM environment
VCPU 8
Memory 45 GB
1 10 100 1000 10000 1 10 100 1k 10k 100k 1M 10M 100M 1G Bandwidth [MB/sec]
Message size [byte]
Bare Metal KVM
MPI Point-to-Point 通信性能
38 (higher is better)PCIパススルーを使うことで、KVMでも
通信スループットは
Bare Metalに匹敵
Bare Metal: 非仮想化マシンNPB BT-MZ: 並列化効率
390
20
40
60
80
100
0
50
100
150
200
250
300
1
2
4
8
16
Pa
ra
lle
l e
ffi
ci
en
cy
[%
]
Pe
rfo
rm
an
ce
[G
o
p
/s
to
ta
l]
Number of nodes
Bare Metal KVM Amazon EC2 Bare Metal (PE) KVM (PE)Amazon EC2 (PE)
(higher is better)
Degradation of PE:
KVM: 2%, EC2: 14%
Bloss: 並列化効率
40 0 20 40 60 80 100 120 1 2 4 8 16 Parallel Efficiency [%] Number of nodes Bare Metal KVM Amazon EC2 IdealDegradation of PE:
KVM: 8%, EC2: 22%
Bloss: 非線形固有値問題ソルバ
– MPIとOpenMPによる階層化並列プログラム
通信と仮想化による オーバヘッド実験のまとめ
• (まだアプリは選ぶが)HPC用途であっても十分
実用的な性能を得られる見込み
• 詳細は以下の論文参照
– 高野他、"InfiniBandをPCIパススルーで用いる仮想化HPCクラスタ
の性能評価
", SACSIS2011, pp.109-116, 2011年5月.
• KVMとXen PVM。NAB-MZ、Bloss– 高野他、"HPCクラウドの実現に向けた仮想化クラスタの性能評価",
情報処理学会論文誌(
ACS37).
• NUMAアフィニティを考慮。KVMとXen HVM– Takano, et al., "Toward a practical "HPC Cloud":
Performance tuning of a virtualized InfiniBand cluster",
CUTE2011, December 2011.
• VMMノイズの問題。HPC Challenge benchmark
PCIパススルー時のマイグレーション
• PCIパススルー時のライブマイグレーションはNG
•
PCIホットプラグ
と
Bondingデバイス
の併用で解決
– マイグレーション中はPCIパススルーするNICを切断し、
マイグレーション先で再接続する
– マイグレーション中の通信継続とNIC切断・接続の隠蔽の
ために、仮想
IOとパススルーNICをactive-standbyで
bondingする
– 既存の道具の組合せでうまく動くが、ゲストOSの設定が
必要な点が難か?
•
SR-IOV NIC
では、
VFをパススルーして、仮想IOは
PV経由とすれば、1枚のNICで実現可能
動作の流れ(1/4)
43 SR-IOV NIC Host OS GesutOS tap0 eth0 (virtio) bond0 eth1 (igbvf) br0 eth0 (igb) SR-IOV NIC Host OS tap0 br0 eth0 (igb)動作の流れ(2/4)
44 SR-IOV NIC Host OS GesutOS tap0 eth0 (virtio) bond0 eth1 (igbvf) br0 eth0 (igb) SR-IOV NIC Host OS tap0 br0 eth0 (igb) (qemu) device_del vf0動作の流れ(3/4)
45 SR-IOV NIC Host OS GesutOS tap0 eth0 (virtio) bond0 br0 eth0 (igb) SR-IOV NIC Host OS tap0 br0 eth0 (igb) GesutOS(qemu) migrate -d tcp:x.x.x.x:y
動作の流れ(4/4)
46 SR-IOV NIC Host OS tap0 br0 eth0 (igb) SR-IOV NIC Host OS tap0 br0 eth0 (igb) GesutOS eth0 (virtio) bond0 eth1 (igbvf) (qemu) device_add pci-assign,MPIプログラムによる動作検証
47 SR-IOV NIC Guest OS tap0 eth0 (virtio) bond0 eth1 (igbvf) br0 eth0 (igb) SR-IOV NIC tap0 br0 eth0 (igb) rank 0 rank 1 NIC 2プロセスでメッセージをバケツリレーしながら、 ライブマイグレーションする # 問題なく動作 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.0/24インタークラウド連携
GridARS資源管理フレームワーク
49! 資源管理システム !"#$
" 要求された仮想インフラのための資源の選択,確保#
" $%&#'#グローバル資源コーディネータ#
" %(#)&%(*+%(*,%(-#'#資源マネージャ#
! アプリケーション実行管理$
システム
$%&"$
" 確保資源上に仮想インフラを構築#
" &%(内に配備#
! 分散モニタリング$
システム
'"#$
" 仮想インフラの監視#
" .(,*/#'#アグリゲータ#
" .(,*&#'#コレクタ#
GRC .(,*/ +%( &%( ,%( &%( +%( ,%( &%( GRC .(,*/ GRC .(,*/ .01234#5 .01234#6 789: GRS .01234#; &%( .01234#< .(&*& .(&*& .(&*& .(&*& .(&*& .(&*/ プラン ニング =.50
PRAGMA Grid/Clouds
26 institutions in 17 countries/regions,23 compute sites, 10VM sites
UZH Switzerland NECTEC KU Thailand UoHyd India MIMOS USM Malaysia HKU HongKong ASGC NCHC Taiwan HCMUT HUT IOIT-Hanoi IOIT-HCM Vietnam AIST OsakaU UTsukuba Japan MU Australia KISTI KMU Korea JLU China SDSC USA UChile Chile CeNAT-ITCR Costa Rica BESTGrid New Zealand CNIC China LZU China UZH Switzerland LZU China ASTI Philippines IndianaU USA UValle Colombia
51 %(#)$*+,#-+,$.$/+01+2$$ >?,# >?,# >?,# >?,# >?,# #'#/$34#%5$ !+678$9:0$ ;/*/$3)<=><05$ ?-:0;:@AB<$CD"$ EF4$3/G=0<5$ !+678$CD"$ %(#)$3H<-<05$ ?-:0;:@AB<$CD"$ (4$34#%5$ !+678$9:0$ ?8<7<$3H<-<05$ !+678$9:0$ >?&# >?&# >?&# >?&# >?&# >?&# >?,# >?,# >?,# >?,# >?,#