ocp serverを用いたopenstack containerの検証
TRANSCRIPT
OCP Serverを用いたOpenStack Containerの検証
2015-01-28曽我部崇 (Takashi Sogabe)Internet Initiative Japan, Inc
MAAS + nova-docker OCPサーバを用いたベンチマーク
ハイブリッドクラウドの課題
• 容易に購入できる?
• 容易に運用できる?
• 性能は出る?
• コストメリットはある?
OpenStack + Docker
• Dockerによるコンテナ仮想化を、OpenStackのAPIを用いて利用
– Docker + Heat
– Docker driver
検証内容(1)
• OCP環境で BareMetal Deployment環境の構築方法を確立し、情報を共有する
– MAAS
• Bare Metalサーバを直接使う
検証内容(2)
• OCP環境で OpenStack + Dockerの構築手順を確立し、情報を共有する
– Docker Driver (nova-docker)
• Icehouse にてコードが削除された
検証内容(3)
• OpenStack + Docker構成を性能及び省電力の観点で比較・評価を行なう
–比較対象
• OpenStack with KVM
• BareMetal (MAAS)
–測定方法
• BMCの消費電力情報を計測しながらベンチマークソフトにより負荷を掛ける
Hardware構成(1)
• Server
– Wiwynn Winterfell (Windmill)
– CPU: Xeon E5-2660 2.20GHz x2
• 16-core, 32-thread
– Memory: 32GB
– Disk: Intel SSDSC2BB24, 240GB
– NIC: Intel 82599ES (10GbE)
Hardware構成(2)
nova-controller nova-compute
• nova-compute
– OpenStack + KVM
KVM
OS
App
Hardware構成(3)
nova-controller nova-compute
• nova-docker
– OpenStack + docker driver
docker
App
Hardware構成(4)
Ubuntu
• Bare Metal
– MAASによるdeploy
App
Software構成
• Management Server– MAAS
• OS– Ubuntu14.04LTS
• OpenStack– 2015年1月の master
– devstack
– Network構成• Nova-network (FLAT DHCP)
測定方法(CPU)
• sysbench
– cpu-max-prime=100000
– Num-threads={1,2,4,8,16,32}
測定方法(Disk I/O)
• fio
– direct write, direct read
– bs=16k
– size={10GB x1, 5GB x2, 2.5GB x4, 1.25GB x8, 0.625GB x16, 0.312GB x32}
– numjobs={1, 2, 4, 8, 16, 32}
※ nova-dockerは device mapper に対応していないため、dockerのfio測定については bare metal server(Ubuntu14.04LTS + docker 1.4.1 を用いる
測定方法(iperf)
• iperf
– length 128k
– parallel {1, 2, 4, 8, 16, 32}
– time 30sec
測定結果 (CPU, 計算時間)
0
50
100
150
200
250
300
350
0 4 8 12 16 20 24 28 32
bare-metal
nova-docker
nova-kvm
Tota
l Tim
e (s
ec)
Number of Threads
測定結果 (CPU, 消費電力)
0
50
100
150
200
250
300
350
0 4 8 12 16 20 24 28 32
bare-metal
nova-docker
nova-kvm
Pow
er U
sage
(W
att)
Number of Threads
測定結果 (Disk I/O, randwrite)
0
50
100
150
200
250
300
350
0 4 8 12 16 20 24 28 32
bare-metal
docker-dev-mapper
nova-kvm
Number of Threads
Thro
ugh
pu
t (M
B/s
)
測定結果 (Disk I/O, randread)
0
50
100
150
200
250
300
350
400
450
500
0 4 8 12 16 20 24 28 32
bare-metal
docker-dev-mapper
nova-kvm
Number of Threads
Thro
ugh
pu
t (M
B/s
)
測定結果 (net, outbound)
7
7.5
8
8.5
9
9.5
10
0 4 8 12 16 20 24 28 32
bare-metal
nova-docker
nova-kvm
Number of Threads
Thro
ugh
pu
t (G
bp
s)
考察(CPU)
• nova-dockerスレッド数が1, 2の際に性能が低い
–スレッド数が4以上になると性能低下は見られない
• 消費電力はCPUの負荷に応じて大きく変わる
考察(Disk I/O)
• docker (device mapper)のI/O性能は、bare metal と比べて少し低い程度
– docker(aufs)はおそらくさらに性能が低くなる
• aufsを使うと direct i/o の測定が出来なかったので、グラフでは docker(device mapper) のみを掲載
• kvmの randwrite性能が低い
• 一時データ、キャッシュの用途でローカルディスクを使う場合、kvmはボトルネックが大きくなってしまう
考察(net)
• nova-dockerの場合、プロセス数が1,2,4の際に性能低下が見られる
–プロセス数が少ないときにCPU性能が十分に出ていないのが原因かもしれない
–プロセス数が8以上になると、10Gbpsを使い切れる
考察(全体)
• 計算処理だけが必要な場合は、KVMでもオーバーヘッドはそれほど大きくない
• Disk I/Oを多用するアプリであれば、dockerを使うことでスループットを大幅に改善できそう
• Networkについては、スループットが沢山必要であればdockerを使うことで性能向上が期待できそう
nova-dockerの仕組みは?
• nova-docker
– OpenStack (IaaS)のAPIでアプリをdeploy
– KVMに比べてインスタンスの起動時間が早い
– Docker(hub)のイメージがそのまま動く
–分散処理など、orchestrationをするための仕掛けは基本的に無い
Novaはmachineを抽象化しているのに対し、Dockerはprocessを抽象化している
クラウド時代のアプリケーション
• 今まで– 1つの大きなサーバに手動でアプリを詰め込む
• クラウド時代– 沢山の小さなサーバに自動でアプリを詰め込む
Server
Hypervisor
App1 App2 App3
Server
Kubernetes, Mesos, etc.
App
Server Server
Heat + Docker
• Heat
–複数のアプリを一括してdeployできるツール
• novaで生成されたインスタンスに対してDocker API を操作する
– Scheduler は無いので、deploy先は手動で割り当てる
– Disk I/O性能を上げるのが目的であれば、Ironic等のbare metal deploymentが別途必要
OpenStack API + Docker API
DockerOpenStackNova
Dockeror
IronicNovaDocker
Docker in Docker の環境で様々なOrchestratorを動かす
様々なOrchestratorとの連携
Docker
Magnum
Mesos
HeatSolum
CloudFoundary
KubernetesOpenShift
PaaS Patform Orchestrator forDistributed System
OpenStackComponents
Magnum
• OpenStackのContainer向けSchedulerサービス– Docker, Kubernetesに対応
– APIは新たに設計
• Bay– Work がscheduleされたNodeの集合。AWS ECSのclusterみたいなもの?
– Bay model(テンプレートみたいなもの)を指定して Bay を生成する
• Node– Workが実際に動作するHost(BareMetal or Virtual)
• Pod– 同一Host上で動作するContainerの集合
• Service– Podsとアクセスpolicyが定義された抽象レイヤ
• Replication Controller– 設定数のPodsが動作していることを保証するための、Podsグループの抽象レイヤ
• Container– Docker container
Documents / Tools
• https://github.com/iij/ocpj-poc-openstack
– MAASを用いてOCPサーバをインストールする方法
– nova-dockerインストール方法
– Benchmark手順