SlideShare une entreprise Scribd logo
1  sur  30
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
TotalTime(sec)
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
PowerUsage(Watt)
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
Throughput(MB/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
Throughput(MB/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
Throughput(Gbps)
考察(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
DockerOpenStack
Nova
Docker
or
Ironic
Nova
Docker
Docker in Docker の環境で様々なOrchestratorを動かす
様々なOrchestratorとの連携
Docker
Magnum
Mesos
Heat
Solum
CloudFoundary
KubernetesOpenShift
PaaS Patform Orchestrator for
Distributed System
OpenStack
Components
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手順

Contenu connexe

Tendances

Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
Takuya ASADA
 

Tendances (20)

Open stackdaystokyo2016
Open stackdaystokyo2016Open stackdaystokyo2016
Open stackdaystokyo2016
 
Ironic introduction
Ironic introductionIronic introduction
Ironic introduction
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
ROMA のアーキテクチャと社内事例
ROMA のアーキテクチャと社内事例ROMA のアーキテクチャと社内事例
ROMA のアーキテクチャと社内事例
 
○○○で作るOpenStack+Contrail環境
○○○で作るOpenStack+Contrail環境○○○で作るOpenStack+Contrail環境
○○○で作るOpenStack+Contrail環境
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
OSC2012-Fukuoka-CloudStack-Update
OSC2012-Fukuoka-CloudStack-UpdateOSC2012-Fukuoka-CloudStack-Update
OSC2012-Fukuoka-CloudStack-Update
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
Magnum - A new OpenStack API for Containers -
Magnum - A new OpenStack API for Containers -Magnum - A new OpenStack API for Containers -
Magnum - A new OpenStack API for Containers -
 
20171122 altair converge2017publish
20171122 altair converge2017publish20171122 altair converge2017publish
20171122 altair converge2017publish
 
Open contrailのご紹介
Open contrailのご紹介Open contrailのご紹介
Open contrailのご紹介
 
小規模でもGKE - DevFest Tokyo 2016
小規模でもGKE - DevFest Tokyo 2016小規模でもGKE - DevFest Tokyo 2016
小規模でもGKE - DevFest Tokyo 2016
 
Azure Batch Renderingではじめるクラウドレンダリング
Azure Batch RenderingではじめるクラウドレンダリングAzure Batch Renderingではじめるクラウドレンダリング
Azure Batch Renderingではじめるクラウドレンダリング
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
ConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキングConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキング
 
Apache Drill で見る Twitter の世界
Apache Drill で見る Twitter の世界Apache Drill で見る Twitter の世界
Apache Drill で見る Twitter の世界
 

En vedette

Contrail handson 手順書
Contrail handson 手順書Contrail handson 手順書
Contrail handson 手順書
Daisuke Nakajima
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
mestery
 

En vedette (20)

[OCPJ PoCWG Engineering Workshop] Zabbixを用いたOCPベアメタル監視環境の自動構築
[OCPJ PoCWG Engineering Workshop] Zabbixを用いたOCPベアメタル監視環境の自動構築[OCPJ PoCWG Engineering Workshop] Zabbixを用いたOCPベアメタル監視環境の自動構築
[OCPJ PoCWG Engineering Workshop] Zabbixを用いたOCPベアメタル監視環境の自動構築
 
Code for the earth OCP APAC Tokyo 2013-05
Code for the earth OCP APAC Tokyo 2013-05Code for the earth OCP APAC Tokyo 2013-05
Code for the earth OCP APAC Tokyo 2013-05
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 
コモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しようコモディティL3SW/ルータでオープンなSDNを実現しよう
コモディティL3SW/ルータでオープンなSDNを実現しよう
 
Contrail handson 手順書
Contrail handson 手順書Contrail handson 手順書
Contrail handson 手順書
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Container sig#1 ansible-container
Container sig#1 ansible-containerContainer sig#1 ansible-container
Container sig#1 ansible-container
 
Contrail Enabler for agile cloud services
Contrail Enabler for agile cloud servicesContrail Enabler for agile cloud services
Contrail Enabler for agile cloud services
 
vBrownBag OpenStack Networking Talk
vBrownBag OpenStack Networking TalkvBrownBag OpenStack Networking Talk
vBrownBag OpenStack Networking Talk
 
kamesh Videos
kamesh Videoskamesh Videos
kamesh Videos
 
Designing OpenStack Architectures
Designing OpenStack ArchitecturesDesigning OpenStack Architectures
Designing OpenStack Architectures
 
Triangle OpenStack Meetup
Triangle OpenStack MeetupTriangle OpenStack Meetup
Triangle OpenStack Meetup
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
 
Dell SUSE Cloud Solution, Powered by OpenStack
Dell SUSE Cloud Solution, Powered by OpenStackDell SUSE Cloud Solution, Powered by OpenStack
Dell SUSE Cloud Solution, Powered by OpenStack
 
Open stack icehouse microsoftupdate
Open stack icehouse microsoftupdateOpen stack icehouse microsoftupdate
Open stack icehouse microsoftupdate
 
Open Source Cloud, Virtualization and Deployment Technologies
Open Source Cloud, Virtualization and Deployment TechnologiesOpen Source Cloud, Virtualization and Deployment Technologies
Open Source Cloud, Virtualization and Deployment Technologies
 
Dell openstack cloud with inktank ceph – large scale customer deployment
Dell openstack cloud with inktank ceph – large scale customer deploymentDell openstack cloud with inktank ceph – large scale customer deployment
Dell openstack cloud with inktank ceph – large scale customer deployment
 
Dockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and NovaDockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and Nova
 
Postgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStackPostgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStack
 
Is OpenStack Neutron production ready for large scale deployments?
Is OpenStack Neutron production ready for large scale deployments?Is OpenStack Neutron production ready for large scale deployments?
Is OpenStack Neutron production ready for large scale deployments?
 

Similaire à OCP Serverを用いた OpenStack Containerの検証

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
Dell TechCenter Japan
 

Similaire à OCP Serverを用いた OpenStack Containerの検証 (20)

OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUG
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630
 
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
[old] Oracle Container Engine for Kubernetes (OKE) ご紹介 [2020年7月版]
[old] Oracle Container Engine for Kubernetes (OKE) ご紹介 [2020年7月版][old] Oracle Container Engine for Kubernetes (OKE) ご紹介 [2020年7月版]
[old] Oracle Container Engine for Kubernetes (OKE) ご紹介 [2020年7月版]
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
OpenStack Project Update Neutron Update
OpenStack Project Update Neutron UpdateOpenStack Project Update Neutron Update
OpenStack Project Update Neutron Update
 
Mvp road show_0830_rev1
Mvp road show_0830_rev1Mvp road show_0830_rev1
Mvp road show_0830_rev1
 
20180706_VxRailCC_ワークショップ編_NW
20180706_VxRailCC_ワークショップ編_NW20180706_VxRailCC_ワークショップ編_NW
20180706_VxRailCC_ワークショップ編_NW
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
OSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUGOSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUG
 

Plus de Takashi Sogabe

Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しましたYokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
Takashi Sogabe
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
Takashi Sogabe
 

Plus de Takashi Sogabe (6)

Rookの基礎・バージョンアップ
Rookの基礎・バージョンアップRookの基礎・バージョンアップ
Rookの基礎・バージョンアップ
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しましたYokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
 Riak / Riak-CS(Enterprise版) ベンチマークしました Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしました
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 

OCP Serverを用いた OpenStack Containerの検証

Notes de l'éditeur

  1. Hybrid cloud を用いることで、例えば定常的なワークロードはプライベート側、ピークワークロードをパブリック側に寄せることでコストを最適化したり、既に持っているサーバを有効活用することが出来ます。 しかしながら、パブリッククラウドが持っているようなスケールメリットをプライベートクラウドで実現するためにはOCPサーバやOpenStackの導入など、いくつか従来のLegacy ITとは違ったアーキテクチャや考え方を導入する必要があります。 本発表では、主に性能とコストの観点でOCPサーバの利点を検証した結果について発表します。
  2. まず、想定するコンピューティング環境について説明します。 プライベートクラウド上で動かすのが良さそうなワークロードは定常的に計算やIOが発生するようなものが想定されます。何故かと言うと、突発的な負荷であればパブリッククラウド上に逃がしてもたいしてコストは掛からないと考えられます。 そのため、アプリの実行環境としてはBare Metal とコンテナ仮想化技術を組み合わせたようなものが最適ではないかと考えます。 今回のPoCでは、OCPサーバ上に構築した OpenStackとDockerの環境上でベンチマークを取得しました。ベンチマークに用いた構成は二種類あり、一つ目はDockerとHeatを組み合わせたものになります。Heatは、OpenStackで複数のインスタンスをテンプレートベースで一括deployするためのツールです。昨年5月にリリースされたIcehouseでHeatのDocker対応が入りました。二つ目は、OpenStack NovaのバックエンドをDockerにするドライバ nova-docker になります。
  3. 次に、検証内容の概要について説明します。 一つ目は、OCP環境を用いてBare Metal Deployment環境を構築しました。Bare Metal Deploymentを実現するためのツールとしてはMAASを用いました。MAASは、Ubuntuの開発元のCanonical社が開発しているMetal As A Serviceと呼ばれるソフトウェアで、Bare Metal Server上にOperating Systemの初期構築をするためのあらゆる仕組みが提供されます。通常、DesktopのOSであれば人間が手作業でインストールすることも多いですが、台数が多いクラウドのインフラなどでは手作業は現実的ではないため、このようなDeploy Toolを用いることで徹底的に自動化をするのが一般的です。
  4. 二つ目の検証内容としては、OpenStackのcompute環境をDockerにする場合の構築手順をまとめました。2015年1月現在は novaのdocker driverはOpenStackのupstreamに取り込まれておらず、OpenStackとしてはIncubationステージの状態です。そのため、構築手順や検証結果の情報はあまり世の中に存在していません。今回PoCで検証した内容はgithub上でも一般公開するので、沢山の人に情報を共有することができるようになります。
  5. 3つ目の検証内容としては、Dockerを使った場合のメリットを性能及び消費電力の観点で比較、検討を行ないました。 比較対象は2つあり、一つ目はOpenStackとKVMの組み合わせです。二つ目は、Bare Metal としてdeployしたサーバを使います。 測定方法としては、OCPサーバのIPMI/DCMIとして取得できる消費電力情報を定期的に計測しながらベンチマークソフトを走らせることで、負荷に対する消費電力の情報を取得します。
  6. ハードウェアの構成は、台湾のODMメーカ Wiwynn社のOCPサーバを用います。
  7. 次に、OpenStackとKVMの構成についてご説明します。こちらの図は、今回比較対象として用いる OpenStackとKVMを組み合わせた場合のハードウェア構成になります。 OpenStackのコントローラ部については図左のnova-controller側にインストールされています。Computeノードは図右側のnova-computeになります。仮想化技術にはKVMを使うため、KVMの上にOSが載り、さらにその上でアプリケーションソフトが動作するイメージになります。
  8. 次に、OpenStackとdockerの組み合わせについて解説します。 図の左側はOpenStack+KVMの構成と同じくOpenStackのコントローラが動いています。Computing nodeについては、Dockerを用いるためOSのエミュレーションが無く、Dockerの上でアプリケーションソフトが動いているイメージになります。アプリ自体はcompute nodeからは一プロセスとして見えます。
  9. 次に、比較のため環境として用意したBare Metal構成についてご説明します。 こちらの図は、MAASによりDeployされたUbuntuサーバの上で動作するアプリケーションプロセスを意味しています。とくに何の変哲もない、通常のサーバ上で動作する一アプリということになります。
  10. ソフトウェア構成について解説します。 サーバのdeploymentにはMAASサーバを用います。そのため、ベンチマークに用いるサーバとは別にManagement ServerとしてのMAASサーバが別途用意されています。 OSにはUbuntu14.04LTSを用いました。OpenStackのdeployについては、devstackを用いました。使用したOpenStackのバージョンとしては、2015年1月の最新版を用いています。 ネットワーク構成はnova-networkをflat dhcpモードで動かしました。最もシンプルなネットワーク構成なので、ベンチマークには最適です。
  11. 次に、ベンチマークの方法について説明します。 CPUのベンチマークにはsysbenchというフリーのツールを用いました。Sysbenchでは、素数を見つけるアルゴリズムを動かすことでCPUに負荷を掛けます。今回sysbenchに設定したパラメタは、cpu-max-primeが10万、スレッド数は1,2,4,8,…, 32と可変で値を変えていきます。
  12. Disk IOのベンチマークには、fioという名前のベンチマークソフトを用いました。 設定パラメタとしては、direct write及びdirect readについてそれぞれ測定し、block sizeは16kBに設定しました。並列度を意味する numjobsについては、1,2,4,8,16,32と可変に変えていき、sizeについても並列度に合わせて10GB, 5GBx2,,, のように合計で10GBになるように設定しています。 尚、nova-dockerはdevice mapperに対応していないため、benchmarkについてはbare metal server上での測定で代用しました。Dockerはdefault supportのブロックデバイスがAUFSなのですが、AUFSだとIO性能があまり高くないことと direct ioに対応していないため今回の測定から外しました。
  13. 次に、ネットワークの測定方法について説明します。 ネットワークのbenchmarkには iperfを用いました。設定パラメタとしては、length 128kB、並列度は 1,2,4,8,16,32と可変で測定し、測定時間は30秒に設定しました。
  14. CPUのベンチマーク結果についてご説明します。 グラフの横軸はスレッド数になります。1から始まり、2,4,8,16,32の順で測定しています。グラフの縦軸は実行時間を秒数でプロットしています。スレッド数が増えるに従い、計算時間が短くなっていきます。 赤のグラフがnova-dockerになり、bare-metalとほぼ同じ値になっています。Nova-kvmは緑色のグラフになります。
  15. こちらのグラフは、先ほどのbenchmarkの際の消費電力をプロットしたものになります。 消費電力自体は、bare-metal, nova-docker,nova-kvm共にあまり大きな差はありませんでした。
  16. こちらのグラフは、Disk IOのランダムライトに関するベンチマーク結果になります。 横軸はスレッド数、縦軸はスループットで単位はMB/sになります。 ベンチマーク結果としては、bare-metalとdockerの間にはあまり性能差は見られませんでした。Dockerとnova-kvmで比べると、kvmの方が大幅に性能が下がることが読み取れます。
  17. こちらのグラフは、DiskIOのランダムリードに関するベンチマーク結果になります。 ランダムリードに関しても、nova-kvmはdockerに比べて大きく性能が落ちることが読み取れます。但し、その差はランダムライトに比べると小さいです。
  18. こちらのグラフは、ネットワークのベンチマーク結果になります。 Dockerはベアメタルに比べるとスレッド数が少ない時のスループットが若干低めの模様ですが、スレッド数が大きくなるに従い10Gbpsの帯域を使い切れるところにまで到達しました。 Nova-kvmについては、一貫して9Gbpsあたりの帯域を超えることはありませんでした。いわゆる、10Gbpsワイヤーレートまで使い切るのは難しい模様です。
  19. 次に、ベンチマークの結果から読み取れたことをまとめます。 CPUに関しては、nova-dockerはスレッド数が1,2の際には性能が低いものの、スレッド数が増えるに従い性能低下はほとんど見られなくなりました。 消費電力に関しては、CPUの負荷に応じて大きく変わりました。
  20. Disk IOについては、今回はファイルシステムとしては device mapperを使いました。Device mapperであれば、IO性能は bare metalと比べて遜色ないくらいになります。 但し、dockerには他にも複数のストレージが選べるため、モノによってはあまり性能の出ないものがあるので要注意です。 Kvmのrandom write性能については、かなり低い値となりました。 但し、今回のベンチマークはローカルディスクについて行った結果なので、コンテナのインスタンスが永続データを扱う場合はリモートストレージやSQLのPaaS等、ネットワーク越しのI/Oになるので今回のベンチマーク結果とは違う特性になる可能性があります。
  21. ネットワークのベンチマークの結果としては、nova-dockerの場合、プロセス数が1,2,4の場合は性能の低下が見られました。 これは、CPUベンチマークでも同様の傾向があったので、network driver周りの問題というよりは、CPU周りの問題かもしれません。
  22. 全体のまとめとしましては、大きく分けて3つの結果を得ることができました。 一つ目は、CPU処理がメインの場合はKVM等の完全仮想化環境を用いてもオーバーヘッドはあまり大きくありませんでした。 二つ目は、Disk IO処理が大きい処理がメインの場合は、dockerを使うことで処理性能を大幅に引き上げる可能性がありそうでした。 三つ目は、ネットワークに関しては10Gbpsを目いっぱい回すようなアプリになる場合はdockerを使うことで性能向上が期待できそうでした。