SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Copyright © NTT Communications Corporation. All rights reserved.Copyright © NTT Communications Corporation. All rights reserved.
RabbitMQ can scale out !!
OpenStack RPC messaging analysis
Copyright © NTT Communications Corporation. All rights reserved.
Mahito Ogura <m.ogura@ntt.com>
NTTコミュニケーションズ
技術開発部 クラウドコアTU
本業:主夫、副業としてIT芸人の活動
● インフラ構築(Chef, Ansible)
● アプリケーション開発(Ruby)
● OpenStackとか分散ミドルとかコンテナ
● 採用のお手伝いとか各種イベント業, etc...
About me
2
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
● 2年ほど前にCanonical社から「1万VMでMessageQueue(以下MQ)がボトルネッ
クとなりそれ以降のVM作成が困難」とのレポートがあった
○ OpenStack SummitやOps MeetupにおいてもMQの性能問題は話題に上がっており、
Nova Cellの利用や、一部のコンポーネントを別 MQに分けるなどの対策が知られている
○ 一方で、OpenStackで多く利用されている RabbitMQクラスタを複数運用する場合、
安定性の面で課題があると言われている
● OpenStackの大規模化においてMQがボトルネックになりうるかの検証、ならびに、
ボトルネックの解消や安定運用に繋がる方式の検討を行った
Background
Copyright © NTT Communications Corporation. All rights reserved.
Goal:
● 1 RabbitMQ Clusterで多数のVMを収容可能にする
Action
● RabbitMQ 性能 / 機能検証
● OpenStack 内部メッセージング解析 / 負荷試験
● OpenStack 上におけるMQ改善方式の検証
Goal / Action
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
RabbitMQはPivotal社が開発するAdvanced Message Queuing Protocol(AMQP)を
使用したオープンソースのメッセージ指向ミドルウェアである。
RabbitMQクラスタではQueueをミラーリングすることで高可用性(HA)を実現している。
ミラーリング設定(ha-mode)には以下の3つがある[1]
● all:Queueはクラスタの全てのノードにミラーされる。
● exactly:Queueはクラスタ内のノードに指定数分だけミラーされる。クラスタ内のノードが指定
数よりも少ない場合は、クラスタ内のすべてのノードにミラーされる。
● node:Queueはノード名で指定したノードにミラーされる。
RabbitMQ is
[1]:https://www.rabbitmq.com/ha.htmla
Copyright © NTT Communications Corporation. All rights reserved.
RabbiMQ
クラスタ
Can RabbitMQ scale out with “exactly” mode ?
RabbitMQクラスタはQueueをクラスタ内に分散させることでRead/Writeの分散を行う。
複数QueueへのRead/Writeが存在する場合、処理が各ノードへ分散するため,1ノード
あたりの負荷が軽減しクラスタ全体として性能向上すると考えられる。
今回はexactly(mirror = 2)に設定し、可用性を担保した上でスケールアウト可能か検証
を行った
client
2
4
6 スケールアウト
client
1
3
4
5 6
2
3
5
1
単一ノード
Copyright © NTT Communications Corporation. All rights reserved.
“HA = exactly” can scale out
下記図の通り,exactly(mirror=2)の設定においてスケールアウトが可能である
クラスタのノード台数が増えるごとに処理性能が向上することを確認できた[1]
図1:Node=5 図2:Node=6 図3:Node=7
[1]:message受付ノードに負荷が集中するのを避けるため、Load Barancerを置いて負荷分散を行った上で性能測定を行った
Copyright © NTT Communications Corporation. All rights reserved.
“HA = all” can NOT scale out
allではノード数が増えると大幅に性能低下する
● all設定ではスケールアウトしない
○ ミラーリングに大きくコストがかかっていると思われる
図2:Node=5, HA-mode=all図1:Node=2, HA-mode=all
Copyright © NTT Communications Corporation. All rights reserved.
● スケールアウト
○ HA-modeがexactlyの設定においてスケールアウトが可能
● RabbitMQクラスタのノード増設の挙動
○ 増設を行った場合、新規キューは増設ノードに配置される可能性があるが、
既存キューはリバランスが行われないため増設ノードに配置されない
■ リバランスには手動でのリバランス、もしくは、クラスタの再構築が必要
● リバランスにより容量の多いキューのミラーリングは高負荷が発生する
○ 増設後にクライアントもしくはLBで増設ノードへの接続先更新等の処理が必要
Results of RabbitMQ verification 1/2
Copyright © NTT Communications Corporation. All rights reserved.
● RabbitMQクラスタのノード減設の挙動
○ 耐障害性は高く,検証においてはキューが完全に消失することはなかった
○ 減設時にメッセージロストが通常時より増加する点は注意が必要
■ クライアント側でのエラーハンドリングが必要
● RabbitMQクラスタの障害時の挙動
○ クラスタノード減設時と同様の挙動
○ 障害に伴うノード減により既存キューのリバランスは発生するが、増設と同様に復旧によ
るノード増によるリバランスが発生しない
■ リバランスには手動でのリバランス、もしくは、クラスタの再構築が必要
Results of RabbitMQ verification 2/2
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
OpenStack messaging inspection
OpenStackではコンポーネント間や、コンポーネント内のサービス間のやりとりにおいて
MQを利用したメッセージングを採用している。
OpenStackのメッセージングは大きく分けると以下の2タイプである
● API起因メッセージング
○ ユーザリクエスト
○ 定期メッセージングからの呼び出し
○ etc…
● 定期メッセージング
○ ステータス確認/更新等
○ etc...
図1:NovaとCinderにおけるメッセージング
Copyright © NTT Communications Corporation. All rights reserved.
OpenStackの中で使われているMQのメッセージング種別は以下の3つ
作成されるQueueの目安
● “サービス名”のQueue
● fanout用の“サービス名_fanout_<<uuid>>”のQueue
● “サービス名.ホスト名”のQueue
● callのリプライ用の”reply_<<uuid>>”のQueue
Messaging kinds in OpenStack
メッセージング種別 メッセージング対象 リプライの有無
cast 1 : 1 なし
call 1 : 1 あり
fanout 1 : n なし
Copyright © NTT Communications Corporation. All rights reserved.
ユーザリクエストや、定期メッセージングからの呼び出しにより通信が発生する
Type 1: API call messaging
16
nova-api
Queue
<conductor>
RabbitMQ
nova-conductor
Queue
<scheduler>nova-scheduler
Queue
<reply_xxx>
Queue
<compute.”host”>nova-compute
①
②
③
④
⑤
① ”conductor”へのcast
② ”scheduler”へのcall
③ ②へのreply
④ 特定のcomputeノードへのcall
⑤ ④のreply
図1:インスタンス作成の流れ
Copyright © NTT Communications Corporation. All rights reserved.
Periodic task in OpenStack
OpenStackのサービス内では定期的に実行されるタスクが存在する。それらの中には
RPCにより他サービスへのメッセージングを行うものも存在する。
主要コンポーネント(Nova, Neutron, Cinder, Glance, Keystone)では以下の通り
● Nova:24(RPCあり23, RPCなし:1)
● Neutron:2(RPCあり:2)
● Cinder:2(RPCあり:1, RPCなし:1)
● Glance:なし
● Keystone:なし
Copyright © NTT Communications Corporation. All rights reserved.
内部で定期的にAPIコールやDBアクセス、他サービスへの通信が発生する
Type 2: Periodic task messaging
18
nova-compute
Queue
<conductor>
RabbitMQ
nova-conductor
Queue
<reply_xxx>
nova-scheduler
Queue
<scheduler>
①
②
③
① ”conductor”へのcall
  Databaseへのアクセス
② ①へのreply
③ ”scheduler”へのcast
図1:スケジューラへのインスタンス情報同期の流れ
Database
Copyright © NTT Communications Corporation. All rights reserved.
Results of OpenStack messaging inspection 1/2
OpenStackのメッセージングは大きく分けて「API起因」と「定期実行」の2種類が存在す
る。
API起因、定期実行ともに共通のキューを利用するためキューの数はノードやサービス
の増加がない限り増えない
メッセージの流量はAPI call数やインスタンス、ブロックデバイス、ルータなどのリソース
や、サービスノードの数に比例して増減する
メッセージサイズはインスタンスやブロックデバイス、ルータの数などに比例して増加す
る
Copyright © NTT Communications Corporation. All rights reserved.
Results of OpenStack messaging inspection 2/2
Novaへの最大メッセージ流量見積もり(msg/s)
メッセージサイズはインスタンス数やルータの数などに比例して増加する
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
Environment
弊部で公開しているOpenStackのStaging環境においてインスタンスを1~1,000 インス
タンスまで作成を行い各キューへのメッセージングの流量やメッセージのサイズの計測
を行った。
● nova-compute:13 node
● RabbitMQ v3.2.4:3 node (HA:ALL)
Copyright © NTT Communications Corporation. All rights reserved.
Number of Messages & Message size
1時間におけるメッセージ数、メッセージサイズ累計はインスタンスの増加に比例して増
加することが分かる。特にconductorに対する増加は顕著である。
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
Conclusion
● RabbitMQのクラスタ機能と、HA機能を組み合わせることで、
可用性を持ちつつスケールアウト可能なMQクラスタを構築できる
○ キューのRead/Writeをクラスタ内で分散させる負荷分散のため、特定のキューに対する性能上限
を迎えた場合はスケールアップでの対応が必要
● OpenStackのメッセージングはAPI callと定期タスクにより発生し、その流度やメッ
セージサイズはサービス数やインスタンス数に比例して増減する
○ 特にnova-computeがDBアクセスのために、nova-conductorに投げるMessageが増加する。
● RabbitMQのHA: exactlyでの運用に関する情報が少ないため、
今後は大規模化・長期安定化試験などによリ問題がないかの確認が必要
Copyright © NTT Communications Corporation. All rights reserved.
Agenda
● Background
● Goal / Action
● RabbitMQ verification
● OpenStack messaging inspection
● Instance increasement load testing
● Conclusion
● Reference
Copyright © NTT Communications Corporation. All rights reserved.
Reference : OpenStack Summit Barcelona
● RabbitMQ at Scale, Lessons Learned
○ Ciscoが1つのRabbitMQクラスタで800+ compute nodeを運用しているという話
○ HAはALLでRabbitMQは3台構成
○ KernelとErlang VMとRabbitMQをチューニングすれば 800+ nodeも対応可能とのこと
● Chasing 1000 Nodes Scale
○ デフォルトの設定では CPUロードがさばけなくコアを増やして対応した
○ CPUとRAMを十分に設定した場合 MySQLやRabbitMQはボトルネックではない
○ nova-schedulerのパフォーマンスとスケーラビリティが問題
Copyright © NTT Communications Corporation. All rights reserved.
[1]:https://bugs.launchpad.net/neutron/+bug/1528895
[2] : https://bugs.launchpad.net/neutron/+bug/1430999
Reference : Error while processing VIF ports
事象:OVS Neutron agentのエラーが多発
Module:neutron.plugins.openvswitch.agent.ovs_neutron_agent
Message:Error while processing VIF ports
原因:Neutronのupdate_device_up処理がRPCリクエストの
  時間内に完了せずタイムアウトを迎えるため[1][2]
対処:RPCタイムアウトの時間を伸ばす
  (修正パッチは現在対応が停止中)
Copyright © NTT Communications Corporation. All rights reserved.
Reference : Remote error: DBConnectionError
事象:DBコネクションエラー
Error during ComputeManager.update_available_resource: Remote error: DBConnectionError
(OperationalError) (2003, "Can't connect to MySQL server on 'x.x.x.x' (113)") None None
原因:インスタンスが増加に伴いDBへのコネクションが枯渇
対処:DBへのコネクション数を増やす

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
KubeVirt 101
KubeVirt 101KubeVirt 101
KubeVirt 101
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
 
OVN operationalization at scale at eBay
OVN operationalization at scale at eBayOVN operationalization at scale at eBay
OVN operationalization at scale at eBay
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 

Ähnlich wie RabbitMQ can scale out!!(jp ops-workshop-3)

OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
VirtualTech Japan Inc.
 

Ähnlich wie RabbitMQ can scale out!!(jp ops-workshop-3) (20)

OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
OpenStack Project Update Neutron Update
OpenStack Project Update Neutron UpdateOpenStack Project Update Neutron Update
OpenStack Project Update Neutron Update
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたOpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
 
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
 
QFabric for Cloud Builders
QFabric for Cloud BuildersQFabric for Cloud Builders
QFabric for Cloud Builders
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
 
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
 
OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?
 
2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)
 
Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤
 
Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905
 
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...
 
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
 
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
 
Open Source Study Session #3
Open Source Study Session #3Open Source Study Session #3
Open Source Study Session #3
 

Mehr von NTT Communications Technology Development

Mehr von NTT Communications Technology Development (20)

クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えよう
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
 
Argo CDについて
Argo CDについてArgo CDについて
Argo CDについて
 
SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!
 
100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV
 
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築
 
Troveコミュニティ動向
Troveコミュニティ動向Troveコミュニティ動向
Troveコミュニティ動向
 
Web rtc for iot, edge computing use cases
Web rtc for iot, edge computing use casesWeb rtc for iot, edge computing use cases
Web rtc for iot, edge computing use cases
 
NTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening KeynoteNTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening Keynote
 
NTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing KeynoteNTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing Keynote
 
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボットWebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
 
TPAC 2015 WebRTC WG 最新レポート
TPAC 2015 WebRTC WG 最新レポートTPAC 2015 WebRTC WG 最新レポート
TPAC 2015 WebRTC WG 最新レポート
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

RabbitMQ can scale out!!(jp ops-workshop-3)

  • 1. Copyright © NTT Communications Corporation. All rights reserved.Copyright © NTT Communications Corporation. All rights reserved. RabbitMQ can scale out !! OpenStack RPC messaging analysis
  • 2. Copyright © NTT Communications Corporation. All rights reserved. Mahito Ogura <m.ogura@ntt.com> NTTコミュニケーションズ 技術開発部 クラウドコアTU 本業:主夫、副業としてIT芸人の活動 ● インフラ構築(Chef, Ansible) ● アプリケーション開発(Ruby) ● OpenStackとか分散ミドルとかコンテナ ● 採用のお手伝いとか各種イベント業, etc... About me 2
  • 3. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 4. Copyright © NTT Communications Corporation. All rights reserved. ● 2年ほど前にCanonical社から「1万VMでMessageQueue(以下MQ)がボトルネッ クとなりそれ以降のVM作成が困難」とのレポートがあった ○ OpenStack SummitやOps MeetupにおいてもMQの性能問題は話題に上がっており、 Nova Cellの利用や、一部のコンポーネントを別 MQに分けるなどの対策が知られている ○ 一方で、OpenStackで多く利用されている RabbitMQクラスタを複数運用する場合、 安定性の面で課題があると言われている ● OpenStackの大規模化においてMQがボトルネックになりうるかの検証、ならびに、 ボトルネックの解消や安定運用に繋がる方式の検討を行った Background
  • 5. Copyright © NTT Communications Corporation. All rights reserved. Goal: ● 1 RabbitMQ Clusterで多数のVMを収容可能にする Action ● RabbitMQ 性能 / 機能検証 ● OpenStack 内部メッセージング解析 / 負荷試験 ● OpenStack 上におけるMQ改善方式の検証 Goal / Action
  • 6. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 7. Copyright © NTT Communications Corporation. All rights reserved. RabbitMQはPivotal社が開発するAdvanced Message Queuing Protocol(AMQP)を 使用したオープンソースのメッセージ指向ミドルウェアである。 RabbitMQクラスタではQueueをミラーリングすることで高可用性(HA)を実現している。 ミラーリング設定(ha-mode)には以下の3つがある[1] ● all:Queueはクラスタの全てのノードにミラーされる。 ● exactly:Queueはクラスタ内のノードに指定数分だけミラーされる。クラスタ内のノードが指定 数よりも少ない場合は、クラスタ内のすべてのノードにミラーされる。 ● node:Queueはノード名で指定したノードにミラーされる。 RabbitMQ is [1]:https://www.rabbitmq.com/ha.htmla
  • 8. Copyright © NTT Communications Corporation. All rights reserved. RabbiMQ クラスタ Can RabbitMQ scale out with “exactly” mode ? RabbitMQクラスタはQueueをクラスタ内に分散させることでRead/Writeの分散を行う。 複数QueueへのRead/Writeが存在する場合、処理が各ノードへ分散するため,1ノード あたりの負荷が軽減しクラスタ全体として性能向上すると考えられる。 今回はexactly(mirror = 2)に設定し、可用性を担保した上でスケールアウト可能か検証 を行った client 2 4 6 スケールアウト client 1 3 4 5 6 2 3 5 1 単一ノード
  • 9. Copyright © NTT Communications Corporation. All rights reserved. “HA = exactly” can scale out 下記図の通り,exactly(mirror=2)の設定においてスケールアウトが可能である クラスタのノード台数が増えるごとに処理性能が向上することを確認できた[1] 図1:Node=5 図2:Node=6 図3:Node=7 [1]:message受付ノードに負荷が集中するのを避けるため、Load Barancerを置いて負荷分散を行った上で性能測定を行った
  • 10. Copyright © NTT Communications Corporation. All rights reserved. “HA = all” can NOT scale out allではノード数が増えると大幅に性能低下する ● all設定ではスケールアウトしない ○ ミラーリングに大きくコストがかかっていると思われる 図2:Node=5, HA-mode=all図1:Node=2, HA-mode=all
  • 11. Copyright © NTT Communications Corporation. All rights reserved. ● スケールアウト ○ HA-modeがexactlyの設定においてスケールアウトが可能 ● RabbitMQクラスタのノード増設の挙動 ○ 増設を行った場合、新規キューは増設ノードに配置される可能性があるが、 既存キューはリバランスが行われないため増設ノードに配置されない ■ リバランスには手動でのリバランス、もしくは、クラスタの再構築が必要 ● リバランスにより容量の多いキューのミラーリングは高負荷が発生する ○ 増設後にクライアントもしくはLBで増設ノードへの接続先更新等の処理が必要 Results of RabbitMQ verification 1/2
  • 12. Copyright © NTT Communications Corporation. All rights reserved. ● RabbitMQクラスタのノード減設の挙動 ○ 耐障害性は高く,検証においてはキューが完全に消失することはなかった ○ 減設時にメッセージロストが通常時より増加する点は注意が必要 ■ クライアント側でのエラーハンドリングが必要 ● RabbitMQクラスタの障害時の挙動 ○ クラスタノード減設時と同様の挙動 ○ 障害に伴うノード減により既存キューのリバランスは発生するが、増設と同様に復旧によ るノード増によるリバランスが発生しない ■ リバランスには手動でのリバランス、もしくは、クラスタの再構築が必要 Results of RabbitMQ verification 2/2
  • 13. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 14. Copyright © NTT Communications Corporation. All rights reserved. OpenStack messaging inspection OpenStackではコンポーネント間や、コンポーネント内のサービス間のやりとりにおいて MQを利用したメッセージングを採用している。 OpenStackのメッセージングは大きく分けると以下の2タイプである ● API起因メッセージング ○ ユーザリクエスト ○ 定期メッセージングからの呼び出し ○ etc… ● 定期メッセージング ○ ステータス確認/更新等 ○ etc... 図1:NovaとCinderにおけるメッセージング
  • 15. Copyright © NTT Communications Corporation. All rights reserved. OpenStackの中で使われているMQのメッセージング種別は以下の3つ 作成されるQueueの目安 ● “サービス名”のQueue ● fanout用の“サービス名_fanout_<<uuid>>”のQueue ● “サービス名.ホスト名”のQueue ● callのリプライ用の”reply_<<uuid>>”のQueue Messaging kinds in OpenStack メッセージング種別 メッセージング対象 リプライの有無 cast 1 : 1 なし call 1 : 1 あり fanout 1 : n なし
  • 16. Copyright © NTT Communications Corporation. All rights reserved. ユーザリクエストや、定期メッセージングからの呼び出しにより通信が発生する Type 1: API call messaging 16 nova-api Queue <conductor> RabbitMQ nova-conductor Queue <scheduler>nova-scheduler Queue <reply_xxx> Queue <compute.”host”>nova-compute ① ② ③ ④ ⑤ ① ”conductor”へのcast ② ”scheduler”へのcall ③ ②へのreply ④ 特定のcomputeノードへのcall ⑤ ④のreply 図1:インスタンス作成の流れ
  • 17. Copyright © NTT Communications Corporation. All rights reserved. Periodic task in OpenStack OpenStackのサービス内では定期的に実行されるタスクが存在する。それらの中には RPCにより他サービスへのメッセージングを行うものも存在する。 主要コンポーネント(Nova, Neutron, Cinder, Glance, Keystone)では以下の通り ● Nova:24(RPCあり23, RPCなし:1) ● Neutron:2(RPCあり:2) ● Cinder:2(RPCあり:1, RPCなし:1) ● Glance:なし ● Keystone:なし
  • 18. Copyright © NTT Communications Corporation. All rights reserved. 内部で定期的にAPIコールやDBアクセス、他サービスへの通信が発生する Type 2: Periodic task messaging 18 nova-compute Queue <conductor> RabbitMQ nova-conductor Queue <reply_xxx> nova-scheduler Queue <scheduler> ① ② ③ ① ”conductor”へのcall   Databaseへのアクセス ② ①へのreply ③ ”scheduler”へのcast 図1:スケジューラへのインスタンス情報同期の流れ Database
  • 19. Copyright © NTT Communications Corporation. All rights reserved. Results of OpenStack messaging inspection 1/2 OpenStackのメッセージングは大きく分けて「API起因」と「定期実行」の2種類が存在す る。 API起因、定期実行ともに共通のキューを利用するためキューの数はノードやサービス の増加がない限り増えない メッセージの流量はAPI call数やインスタンス、ブロックデバイス、ルータなどのリソース や、サービスノードの数に比例して増減する メッセージサイズはインスタンスやブロックデバイス、ルータの数などに比例して増加す る
  • 20. Copyright © NTT Communications Corporation. All rights reserved. Results of OpenStack messaging inspection 2/2 Novaへの最大メッセージ流量見積もり(msg/s) メッセージサイズはインスタンス数やルータの数などに比例して増加する
  • 21. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 22. Copyright © NTT Communications Corporation. All rights reserved. Environment 弊部で公開しているOpenStackのStaging環境においてインスタンスを1~1,000 インス タンスまで作成を行い各キューへのメッセージングの流量やメッセージのサイズの計測 を行った。 ● nova-compute:13 node ● RabbitMQ v3.2.4:3 node (HA:ALL)
  • 23. Copyright © NTT Communications Corporation. All rights reserved. Number of Messages & Message size 1時間におけるメッセージ数、メッセージサイズ累計はインスタンスの増加に比例して増 加することが分かる。特にconductorに対する増加は顕著である。
  • 24. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 25. Copyright © NTT Communications Corporation. All rights reserved. Conclusion ● RabbitMQのクラスタ機能と、HA機能を組み合わせることで、 可用性を持ちつつスケールアウト可能なMQクラスタを構築できる ○ キューのRead/Writeをクラスタ内で分散させる負荷分散のため、特定のキューに対する性能上限 を迎えた場合はスケールアップでの対応が必要 ● OpenStackのメッセージングはAPI callと定期タスクにより発生し、その流度やメッ セージサイズはサービス数やインスタンス数に比例して増減する ○ 特にnova-computeがDBアクセスのために、nova-conductorに投げるMessageが増加する。 ● RabbitMQのHA: exactlyでの運用に関する情報が少ないため、 今後は大規模化・長期安定化試験などによリ問題がないかの確認が必要
  • 26. Copyright © NTT Communications Corporation. All rights reserved. Agenda ● Background ● Goal / Action ● RabbitMQ verification ● OpenStack messaging inspection ● Instance increasement load testing ● Conclusion ● Reference
  • 27. Copyright © NTT Communications Corporation. All rights reserved. Reference : OpenStack Summit Barcelona ● RabbitMQ at Scale, Lessons Learned ○ Ciscoが1つのRabbitMQクラスタで800+ compute nodeを運用しているという話 ○ HAはALLでRabbitMQは3台構成 ○ KernelとErlang VMとRabbitMQをチューニングすれば 800+ nodeも対応可能とのこと ● Chasing 1000 Nodes Scale ○ デフォルトの設定では CPUロードがさばけなくコアを増やして対応した ○ CPUとRAMを十分に設定した場合 MySQLやRabbitMQはボトルネックではない ○ nova-schedulerのパフォーマンスとスケーラビリティが問題
  • 28. Copyright © NTT Communications Corporation. All rights reserved. [1]:https://bugs.launchpad.net/neutron/+bug/1528895 [2] : https://bugs.launchpad.net/neutron/+bug/1430999 Reference : Error while processing VIF ports 事象:OVS Neutron agentのエラーが多発 Module:neutron.plugins.openvswitch.agent.ovs_neutron_agent Message:Error while processing VIF ports 原因:Neutronのupdate_device_up処理がRPCリクエストの   時間内に完了せずタイムアウトを迎えるため[1][2] 対処:RPCタイムアウトの時間を伸ばす   (修正パッチは現在対応が停止中)
  • 29. Copyright © NTT Communications Corporation. All rights reserved. Reference : Remote error: DBConnectionError 事象:DBコネクションエラー Error during ComputeManager.update_available_resource: Remote error: DBConnectionError (OperationalError) (2003, "Can't connect to MySQL server on 'x.x.x.x' (113)") None None 原因:インスタンスが増加に伴いDBへのコネクションが枯渇 対処:DBへのコネクション数を増やす