30
OCP Serverを用いた OpenStack Containerの検証 2015-01-28 曽我部 崇 (Takashi Sogabe) Internet Initiative Japan, Inc MAAS + nova-docker OCPサーバを用いたベンチマーク

OCP Serverを用いたOpenStack Containerの検証

Embed Size (px)

Citation preview

Page 1: OCP Serverを用いたOpenStack Containerの検証

OCP Serverを用いたOpenStack Containerの検証

2015-01-28曽我部崇 (Takashi Sogabe)Internet Initiative Japan, Inc

MAAS + nova-docker OCPサーバを用いたベンチマーク

Page 2: OCP Serverを用いたOpenStack Containerの検証

ハイブリッドクラウドの課題

• 容易に購入できる?

• 容易に運用できる?

• 性能は出る?

• コストメリットはある?

Page 3: OCP Serverを用いたOpenStack Containerの検証

OpenStack + Docker

• Dockerによるコンテナ仮想化を、OpenStackのAPIを用いて利用

– Docker + Heat

– Docker driver

Page 4: OCP Serverを用いたOpenStack Containerの検証

検証内容(1)

• OCP環境で BareMetal Deployment環境の構築方法を確立し、情報を共有する

– MAAS

• Bare Metalサーバを直接使う

Page 5: OCP Serverを用いたOpenStack Containerの検証

検証内容(2)

• OCP環境で OpenStack + Dockerの構築手順を確立し、情報を共有する

– Docker Driver (nova-docker)

• Icehouse にてコードが削除された

Page 6: OCP Serverを用いたOpenStack Containerの検証

検証内容(3)

• OpenStack + Docker構成を性能及び省電力の観点で比較・評価を行なう

–比較対象

• OpenStack with KVM

• BareMetal (MAAS)

–測定方法

• BMCの消費電力情報を計測しながらベンチマークソフトにより負荷を掛ける

Page 7: OCP Serverを用いたOpenStack Containerの検証

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)

Page 8: OCP Serverを用いたOpenStack Containerの検証

Hardware構成(2)

nova-controller nova-compute

• nova-compute

– OpenStack + KVM

KVM

OS

App

Page 9: OCP Serverを用いたOpenStack Containerの検証

Hardware構成(3)

nova-controller nova-compute

• nova-docker

– OpenStack + docker driver

docker

App

Page 10: OCP Serverを用いたOpenStack Containerの検証

Hardware構成(4)

Ubuntu

• Bare Metal

– MAASによるdeploy

App

Page 11: OCP Serverを用いたOpenStack Containerの検証

Software構成

• Management Server– MAAS

• OS– Ubuntu14.04LTS

• OpenStack– 2015年1月の master

– devstack

– Network構成• Nova-network (FLAT DHCP)

Page 12: OCP Serverを用いたOpenStack Containerの検証

測定方法(CPU)

• sysbench

– cpu-max-prime=100000

– Num-threads={1,2,4,8,16,32}

Page 13: OCP Serverを用いたOpenStack Containerの検証

測定方法(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 を用いる

Page 14: OCP Serverを用いたOpenStack Containerの検証

測定方法(iperf)

• iperf

– length 128k

– parallel {1, 2, 4, 8, 16, 32}

– time 30sec

Page 15: OCP Serverを用いたOpenStack Containerの検証

測定結果 (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

Page 16: OCP Serverを用いたOpenStack Containerの検証

測定結果 (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

Page 17: OCP Serverを用いたOpenStack Containerの検証

測定結果 (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

)

Page 18: OCP Serverを用いたOpenStack Containerの検証

測定結果 (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

)

Page 19: OCP Serverを用いたOpenStack Containerの検証

測定結果 (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)

Page 20: OCP Serverを用いたOpenStack Containerの検証

考察(CPU)

• nova-dockerスレッド数が1, 2の際に性能が低い

–スレッド数が4以上になると性能低下は見られない

• 消費電力はCPUの負荷に応じて大きく変わる

Page 21: OCP Serverを用いたOpenStack Containerの検証

考察(Disk I/O)

• docker (device mapper)のI/O性能は、bare metal と比べて少し低い程度

– docker(aufs)はおそらくさらに性能が低くなる

• aufsを使うと direct i/o の測定が出来なかったので、グラフでは docker(device mapper) のみを掲載

• kvmの randwrite性能が低い

• 一時データ、キャッシュの用途でローカルディスクを使う場合、kvmはボトルネックが大きくなってしまう

Page 22: OCP Serverを用いたOpenStack Containerの検証

考察(net)

• nova-dockerの場合、プロセス数が1,2,4の際に性能低下が見られる

–プロセス数が少ないときにCPU性能が十分に出ていないのが原因かもしれない

–プロセス数が8以上になると、10Gbpsを使い切れる

Page 23: OCP Serverを用いたOpenStack Containerの検証

考察(全体)

• 計算処理だけが必要な場合は、KVMでもオーバーヘッドはそれほど大きくない

• Disk I/Oを多用するアプリであれば、dockerを使うことでスループットを大幅に改善できそう

• Networkについては、スループットが沢山必要であればdockerを使うことで性能向上が期待できそう

Page 24: OCP Serverを用いたOpenStack Containerの検証

nova-dockerの仕組みは?

• nova-docker

– OpenStack (IaaS)のAPIでアプリをdeploy

– KVMに比べてインスタンスの起動時間が早い

– Docker(hub)のイメージがそのまま動く

–分散処理など、orchestrationをするための仕掛けは基本的に無い

Novaはmachineを抽象化しているのに対し、Dockerはprocessを抽象化している

Page 25: OCP Serverを用いたOpenStack Containerの検証

クラウド時代のアプリケーション

• 今まで– 1つの大きなサーバに手動でアプリを詰め込む

• クラウド時代– 沢山の小さなサーバに自動でアプリを詰め込む

Server

Hypervisor

App1 App2 App3

Server

Kubernetes, Mesos, etc.

App

Server Server

Page 26: OCP Serverを用いたOpenStack Containerの検証

Heat + Docker

• Heat

–複数のアプリを一括してdeployできるツール

• novaで生成されたインスタンスに対してDocker API を操作する

– Scheduler は無いので、deploy先は手動で割り当てる

– Disk I/O性能を上げるのが目的であれば、Ironic等のbare metal deploymentが別途必要

Page 27: OCP Serverを用いたOpenStack Containerの検証

OpenStack API + Docker API

DockerOpenStackNova

Dockeror

IronicNovaDocker

Docker in Docker の環境で様々なOrchestratorを動かす

Page 28: OCP Serverを用いたOpenStack Containerの検証

様々なOrchestratorとの連携

Docker

Magnum

Mesos

HeatSolum

CloudFoundary

KubernetesOpenShift

PaaS Patform Orchestrator forDistributed System

OpenStackComponents

Page 29: OCP Serverを用いたOpenStack Containerの検証

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

Page 30: OCP Serverを用いたOpenStack Containerの検証

Documents / Tools

• https://github.com/iij/ocpj-poc-openstack

– MAASを用いてOCPサーバをインストールする方法

– nova-dockerインストール方法

– Benchmark手順