dena private cloud のその後 - openstack最新情報セミナー(2017年3月)

35
Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA private cloud のののの Mar 29, 2017 Kengo Sakai IT Platform Dept. System Management Unit DeNA Co., Ltd. OpenStack のののののののの (2017 3 )

Upload: virtualtech-japan-inc

Post on 05-Apr-2017

631 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

DeNA private cloud のその後

Mar 29, 2017

Kengo Sakai

IT Platform Dept.System Management UnitDeNA Co., Ltd.

OpenStack 最新情報セミナー (2017 年 3 月 )

Page 2: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自己紹介

氏名⁃ 酒井 憲吾( Sakai Kengo )

所属⁃ 株式会社ディー・エヌ・エー システム本部 IT 基盤部

経歴⁃ 前職ではネットワーク系の研究開発、ソフトウェア開発⁃ DeNA では遺伝子検査サービス MYCODE のインフラ構築、運用に

携わったのち、現在は private cloud の運用に従事

2

Page 3: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

アジェンダ

2015 年 12 月の発表の振り返り 現在の private cloud の状況 SDN: Big Cloud Fabric SDS: Ceph

3

Page 4: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

2015 年 12 月の発表の振り返り

4

Page 5: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

振り返り: 2015 年 12 月のセミナー

5https://www.slideshare.net/VirtualTech-JP/dena-openstack-201512

Page 6: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

振り返り:サーバ運用とネットワーク運用の統合

6

Page 7: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

振り返り:サーバ運用とネットワーク運用の統合

7

Page 8: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

振り返り:ストレージサービス

8

Page 9: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

振り返り:ストレージサービス

9

Page 10: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

現在の private cloud の状況

10

Page 11: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

private cloud の構成

11

© 2016 Big Switch Networks,Inc. All rights reserved.

© 2014 F5 Networks,Inc. All rights reserved.

© 2015, Red Hat, Inc. All rights reserved.

Production: version: kilo OS: Ubuntu 14.04

Development: version: liberty OS: Ubuntu 14.04

© 2015, Red Hat, Inc. All rights reserved.© The OpenStack Foundation September 19,2012 © The OpenStack Foundation September 19,2012

OpenStack Component: Keystone, Glance, Nova, Neutron, Cinder, Ironic

Page 12: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

1 2 3 4 5 6 7 8 9 10 11 12 1 2 30

200

400

600

800

1000

1200

1400

1600

1800

2000 ProductionDevelopment

Inst

ance

sprivate cloud のインスタンス数の推移

12

2016 2017

既存の開発環境をprivate cloud へ移行

Compute Node: 36 台Instance: 1786 台

Compute Node: 36 台Instance: 144 台

Copyright © 2017 Atlassian

Copyright © 2017 Atlassian

Page 13: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

運用がどう変わったか

サーバ運用とネットワーク運用の統合⁃ VRF 、 VLAN 、 Network ACL の設定• OpenStack + Big Cloud Fabric でサーバエンジニアが自ら設定可能

ストレージサービス⁃ Compute Node 故障時の VM 再構築は不要に• 他の Compute Node 上で VM を起動するだけ

• VM のイメージは ceph storage の中にあるため

⁃ live-migration も出来るように• 負荷の偏りを均す

• 故障予兆時に退避する

13

Page 14: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

SDN: Big Cloud Fabric

14

Page 15: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Big Cloud Fabric とは

15

OpenStack との integration にアンダーレイネットワークをサポート コントローラとスイッチから構成。両者とも Linux が動作している GUI/API が充実

Page 16: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

OpenStack + Big Cloud Fabric Integration

16

! tenanttenant test_project.openstack id 48285b588ec5457f95c38b33a93c45e0 origination openstack ! logical-router route 0.0.0.0/0 next-hop tenant system interface segment net_test ip address 192.0.2.1/24 interface tenant system ! segment net_test id a808b97d-10e1-4f08-b3d3-978b5ae1f07d origination openstack ! endpoint 22accd96-5894-41bc-bd67-57790022a467 attachment-point interface-group osvdev0001 vlan 171 ip 192.0.2.10 mac fa:16:3e:2d:3d:3c origination openstack ! member interface-group osvdev0001 vlan 171 origination openstack

Project

Router

Network

OpenStackでネットワーク作成すると、BCF上に config が自動生成されるよう

インテグレーション

Page 17: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

OpenStack + Big Cloud Fabric 構成パターン

P-Fabric のパターンを採用 ただし、 L3 ( OpenStack の Router )の連携がされない、とい

う仕様

17

Page 18: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

OpenStack + Big Cloud Fabric Integration

18

BCF Controller

REST API

Controller Node

neutron-serverBCF Plugin

L3 Plugin

Neutron プラグインを内製で開発 BCF Controller の REST API を用いて、 L3 ( Router )の情報を

反映 https://github.com/DeNADev/networking-bigswitch-l3-pe で

公開

tenant test_project.openstack logical-router route 0.0.0.0/0 next-hop tenant system interface segment net_test ip address 192.0.2.1/24 interface tenant system

Router

© 2016 Big Switch Networks,Inc. All rights reserved.

Page 19: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

障害発生!

19

Page 20: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

障害:新規に作ったインスタンスが通信できない

原因: neutron-server がインスタンスの Port 情報を BCF に反映できなかったため 経緯

BCF plugin で sync 処理が頻発する、という不具合が発生 sync 処理中は他の処理ができない

Compute Node の neutron-openvswitch-agent は追加 / 削除された Port 情報を定期的に neutron-server に通知する。この通知が sync 処理のためタイムアウト

通知がタイムアウトすると neutron-openvswitch-agent は管理している Port情報をすべて通知する。このため neutron に大量の負荷がかかることになり再度タイムアウト(以下無限ループ)

20

BCF Controller

REST API

Controller Node

neutron-serverBCF Plugin

L3 Plugin

Compute Node

agent

Compute Node

agent

Port

Port

Port

sync © 2016 Big Switch Networks,Inc. All rights reserved.

Page 21: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

障害:新規に作ったインスタンスが通信できない

対応 neutron-openvswitch-agent の通知がさばけるまで順に neutron-

openvswitch-agent を止めていく この時使用していた neutron-openvswitch-agent(liberty) は起動時にインス

タンスのパケットがロスする問題があったため、以下のパッチを適用 Cleanup stale OVS flows for physical bridges Don't disconnect br-int from phys br if connected

neutron-openvswitch-agent を再度起動していく BCF plugin の不具合の原因を突き止めて BigSwitch 社に報告(修正済み )

21

BCF Controller

REST API

Controller Node

neutron-serverBCF Plugin

L3 Plugin

Compute Node

agent

Compute Node

agent

Port

Port

Port

© 2016 Big Switch Networks,Inc. All rights reserved.

Page 22: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

SDS: Ceph

22

Page 23: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Ceph とは

オープンソースの分散ストレージ 何かトラブルが起きた時に迅速に対応するためには、ソフトウェアの振る舞いを詳細に把握する必要がある

構成 MON : OSD の構成、状態監視。 Storage Node 上でも動作 OSD : ディスクへのデータの読み書きやデータのレプリケーション、データ

の配置の管理 現在の Ceph Storage Cluster ( version: 0.94.6 Hammer )

Development: 225 TB / 421 TB Production: 19 TB / 25 TB

23

Storage Node

OSD OSD…

Storage Node

OSD OSD…

Monitor Node

MON …

Ceph Storage Cluster

Page 24: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Compute Node の構成

いわゆるハイパーコンバージドな構成 Compute Node が Ceph の Storage Node も兼ねる

ALL HDD 特に開発環境はコストを抑えるため、 8TB 7200rpm の SATA-

HDD 性能不足の場合は SSD や他のストレージの導入を検討する方針でス

タート

24

Page 25: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

やはり I/O性能が問題に!!

25

Page 26: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

問題その 1: Compute Node のディスクの負荷が高い

OSD は journal領域、 data領域の順に書き込みを行う

26

VM OSD journal data

request

当初は同じディスク (SATA-HDD) だった

Page 27: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

パフォーマンスチューニング :ジャーナルとデータ領域を一つの物理ディスクに共存させない

ディスクへの I/O 負荷を下げるために、ジャーナル領域とデータ領域とは別の物理ディスクに変更

27

ある Compute Node の iostat の %util

ディスク構成変更

SATA-HDD

SAS-HDD

SAS-HDD

SATA-HDD

RAID1

RAID0

RAID0

• Linux root filesystem• OSD.1 journal• OSD.2 journal

• OSD.1 Data

• OSD.2 Data

Page 28: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

問題その 2: VM の I/O リクエストが数秒〜数十秒待たされる

原因調査が難航 Compute Node のディスクの負荷は下がっているので問題ないはず。 Compute Node の CPU 使用率はだんだん高くなってきているものの 20% 以

下。数十秒待たされる原因とは考えにくい。 ネットワーク上の問題も特に発生していない。

28ある Compute Node の CPU 使用率 (user)

[WRN] slow request 15.012665 seconds old, … currently waiting for subops from 26,28

Page 29: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

原因調査 : ログ分析

ceph のログとソースコードを詳細に照らし合わせ調査した結果、 write request受信直後の処理が遅くなっていそうと判明。

OSD は特定の処理を複数の worker thread で処理する方式。何らかの処理が詰まって worker thread が枯渇しているのではないかと推測。

29

VMPrimary

OSD2ndOSD

3rdOSD

write request

write response

Page 30: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

原因調査 : スレッドダンプからボトルネックを特定

内製のデバッガーを用い、稼働中の ceph-osd プロセスにアタッチし、その瞬間の各スレッドのバックトレースを取得

worker thread のほとんどが tcmalloc の処理で埋まっている状況

30

tcmalloc::CentralFreeList::FetchFromOneSpans(int, void**, void**)(7f51b59e9670+81);tcmalloc::CentralFreeList::RemoveRange(void**, void**, int)(7f51b59e99c0+198);tcmalloc::ThreadCache::FetchFromCentralCache(unsigned long, unsigned long)(7f51b59ec8b0+83);operator new(unsigned long)(7f51b59fc620+232);FileStore::build_op(std::list<ObjectStore::Transaction*, std::allocator<ObjectStore::Transaction*> >&, Context*, Context*, std::tr1::shared_ptr<TrackedOp>)(8e6de0+586);FileStore::queue_transactions(ObjectStore::Sequencer*, std::list<ObjectStore::Transaction*, std::allocator<ObjectStore::Transaction*> >&, std::tr1::shared_ptr<TrackedOp>, ThreadPool::TPHandle*)(8eaf40+832);ReplicatedPG::queue_transaction(ObjectStore::Transaction*, std::tr1::shared_ptr<OpRequest>)(89e5d0+219);void ReplicatedBackend::sub_op_modify_impl<MOSDRepOp, 112>(std::tr1::shared_ptr<OpRequest>)(a0fda0+2330);ReplicatedBackend::sub_op_modify(std::tr1::shared_ptr<OpRequest>)(9fca10+73);ReplicatedBackend::handle_message(std::tr1::shared_ptr<OpRequest>)(9fcb00+910);ReplicatedPG::do_request(std::tr1::shared_ptr<OpRequest>&, ThreadPool::TPHandle&)(8269c0+359);OSD::dequeue_op(boost::intrusive_ptr<PG>, std::tr1::shared_ptr<OpRequest>, ThreadPool::TPHandle&)(695e20+957);OSD::ShardedOpWQ::_process(unsigned int, ceph::heartbeat_handle_d*)(6963d0+824);ShardedThreadPool::shardedthreadpool_worker(unsigned int)(b97ce0+2165);ShardedThreadPool::WorkThreadSharded::entry()(b9a660+16);start_thread(7f51b57b30c0+196);__clone(7f51b3d1c310+109)

Page 31: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

パフォーマンスチューニング :tcmalloc のスレッドキャッシュサイズを拡張する

tcmalloc のキャッシュメモリの獲得、解放にかかる CPU 負荷が軽くなる

秒単位で待たされる I/O リクエストがほぼ無くなる

31ある Compute Node の CPU 使用率 (user)

キャッシュサイズ拡張

Page 32: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

課題 : fsync 問題

fsync/fdatasync のようなデータ同期が発生すると後続の write が待たされてしまう

fsync は例えば、 MySQL のトランザクションのコミット処理で使用される

現状のハードウェア構成では根本的な解決は無理と判断 一部のサーバではファイルシステムのバリアオプションを無効にし

てこの問題を回避

32

VM Ceph OSDCluster

write request

write response

VM Ceph OSDCluster

write request

write responsewrite request

write response

fsync

通常時は並列に request を送信 fsync 中は他の request が送信できない

Page 33: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

課題 : ネットワークの輻輳

OSD が相互に TCP セッションを張りメッシュ状に通信するため、スイッチ上でパケットロスが発生しやすい

ネットワークは ceph だけでなく他のトラフィックも共有している 例えば TCP接続時の SYN パケットがロスするとサービスにも影響

がある 対策

BCF の QoS機能を使用し Ceph 以外のトラフィックを優先することを検証中

33

OSD OSD OSD OSD

Switchバーストトラフィックによる

パケットロス

Page 34: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

まとめ

private cloud導入の効果⁃ サーバ運用とネットワーク運用の統合• ネットワーク G への「依頼」を削減

• アプリケーション、サーバ、ネットワークを one stop でできるように

⁃ ストレージサービス• Compute Node 故障時の対応が簡単に

• live-migration により柔軟な運用が可能に

今後の予定⁃ ストレージの改善⁃ VM-HA の導入⁃ OpenStack Upgrade (from kilo/liberty to mitaka)

34

Page 35: DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)

Copyright © DeNA Co.,Ltd. All Rights Reserved.

ご静聴ありがとうございました

35