こんにちは、皆さん。お待ちください。このセッションは、スケラルアウト、ラビッテミキュークラスターを紹介します。その中で、高いアベロベリティを保管しています。このセッションは、3つの展示があります。1つの展示は、ラビテミキュークラスターに スケラルアウトを紹介します。2つの演奏は、2. スカントローズのオペレーターのサービスの効果は 高いパフォーマンスのRabbitMQクラスターで 発展することができる最後に、RabbitMQメッセージのパフォーマンスの 作り方についての効果は 特徴的なプロジェクトについての効果ですまずは、私たちの紹介です私はマヒトオグラです。 エンティティコミュニケーションのデバプスエンジニアです私はマサヒトムロイです。 エンティティーソフトアイノベーションセンターの クラウドアクティクトです私はBlazer PTRのコングラスコアレビューアーです私たちは、マッセージQがボトルネックで 発展することを提供しました10,000VMで、3年前の3年後の3年後のVMを 作りにくいことについての効果ですこのデバプスエンジニアの スカイランのアンバーマンスの効果はボトルネックで マッセージQを作りにくいことについての効果ですこのアプスエンジニアの アプスメイトのサービスの 作り方についての効果ですこのアプススタッグのアプロリエーターは、 マッセージQを作りにくいことについての効果ですしかし、アプロリエーターはマッセージQクラウスターを 統計することができることですそして、アプスタッグプロジェクトの 作り方についての効果があることですNTTコミュニケーションの最もナイスクラブサービスで Best Enterprise Cloud Serviceを オープンしたいと言いますNTTコミュニケーションは、クラブエンバーマンスと一緒に 、クラウドエンバーマンスは1,000ノーズの10,000ヴェイアムのパーレジョンでパーレジョンでメッセージキューを行いましょう目標はパーレジョンでメッセージキューはボトルネックでメッセージキューのパーレジョンでメッセージキューはボトルネックでメッセージキューのパーレジョンでハビタミキーパーレマンスバリファイドブロビッテミキューファンクション次にメッセージキューのオープンスタッグでハイロードだ次にレーザーへダウンズのオープンスタッグでラビッテミキの結果です。ラビッテミキは大きなデプロイドオープンソースのメッセージブローカーです。メッセージブローカーはプロデューサーとコンシューマーで使用されています。プロデューサーはメッセージを送るプログラムです。コンシューマーはメッセージを送るプログラムです。ラビッテミキをメッセージするプロタコルMQPは一つです。ラビッテミキクロスタルを整え、データやスタイトがおよそ、ラビッテミキブローカーのオープンソースのメッセージブローカーです。このデプロイドオープンソースはメッセージを送るプログラムです。それぞれのデプロイドオープンソースのメッセージを送るプログラムです。メッセージブローカーはノーズで見られることができます。中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中 Cameron Keal, across node in a cluster.容易しいノーズで、ラビッテミキクロスタルは真っ直ぐに尖地に位置したときについて、面臨。ラビッテミキクロスタルのノーズからの中で多いのが、筆を切り出すと、作成するのは不安だ。このように、ラビテミキのコラスターがこのように、一つのノーズが少ないと、一つのラビテミキのノーズが増えることができる。ラビテミキは、ミラーでQを使って、マラチフルノーズからのリプリカを受けます。ミラーでQは、一つのマッサーと一つのミラーで、最も古いミラーで、新しいマッサーを提供させます。しかし、最も古いマッサーは、多くの理由に出ていません。マッサーがQを使って、一つのマッサーと一つのミラーを受けます。コンシュマーは、一つのマッサーと一つのマッサーについて、マッサーは、一つのマッサーと一つのマッサーを受けます。Qミラーに、 therefore, enhances availability.ラビテミキは、三つのマッサーでQミラーを受けます。全のノーズがクラスターで、クラスターで、クラスターで、クラスターで、クラスターで、クラスターで、クラスターで、クラスターで、クラスターで、クラスターで、CPC Mod Exactlyを十分効果するのか確認されているのが今度。CPC Modの質を確認して、クラスターを招くといいはず。3つを検討する前には30,000メッセージを8度ぐらいでそれをぞったのだ。4つが建築した。7300メッセージのパセッカーで5ノードを使用しました。HMモードを使用する時に、スループを調整するために、HMモードをスカラーすることができます。はい、HMモードをスカラーすることができます。フィギュアビルをスカラーする時にパフォーマンスを見ることができます。3・7000メッセージのパセッカーに1番大つのノードです。4・27000メッセージのパセッカーで4ノードを使用しました。5ノードの大切なエッシュのパセッカー、10都是等を使用したときに、スループを調ゆるように本格的に來了 running of installation processを進行してみます。しかし、スループを調整し、スマイルは себя玉の位置だけです。クラスターに5ノードがあります。HA-MODEは2つのレプリカイティッドクラスターで17,000メッセージのパーセックがあります。しかしHA-MODEは28,000メッセージのパーセックがあります。この違いは、クラスターに2つのレプリカイティッドクラスターで5ノードがあります。クラスターに2つのレプリカイティッドクラスターで1マスターと1ミラルクラスターで1マスターと4ミラルクラスターでラビテミキバリフィケーションのコンクルーションがあります。ラビテミキクラスターのパーセックが仕上げることができます。ラビテミキバリフィケーションのパーセックが仕上げることができます。このパーセックはHA-MODEの設定によってラビテミキバリフィケーションの行動が仕上げることができます。クラスターに2つのレプリカイティッドクラスターで新のノードのパーセックを使用しています。ラビテミキバリフィケーションは新のノードに置くことができます。バリフィケーションのコンクルーションを新のノードに置くことができます。クラスターをまとめて1マスター通せなければならないことができます。クラスターのパーセックを大きなメッセージがありますワークロードが高くなりますノードクラスターのアイテムを配置する必要はコンフィグをアップデートしてコンフィグとノードをあげる必要はないロードバランサーで使用して新ノードをアップデートしてクラスターを取り取って、実際に数値が減っている場合は、漸減物件より多くのことを確認でき、多くの漸減物件の表現は、全果物件のほかの漸減物件に関する為、または漸減物件のほかの漸減物件のほかの漸減物件のほかの漸減物件と同じところを移動しました。ボスケースの解釈に関するつもりは、クランツタイルについてお伺いします。私たちは、コレクトリーを送り、クランツタイルについてお伺いします。クランツタイルについてお伺いします。クランツタイルのビヘビアのラメンタインケークラスターは、クランのクラスターでクランのときに取り出します。クラスターのコアの上下のコアは、ミラーを使うことができます。しかし、コアの上下下に多くのコアがあります。ミラーQのコアを使うことができます。クラスターを使うことができます。クラスターを使うことができます。前回、コアの上下に多くのコアは、ミラーQのコアを使うことができます。しかし、コアの上下に多くのコアを使うことができます。ミラーQが検討されます。オープンスタックのエンスペクションを作りたいと言われます。オープンスタックのメッセージQは、コメントの場合についてコンポネットやサービスを取り付けます。例えば、フィギュアを見た時にNobotサービスが力の中でクロスターでのサービスを使ってオープンスタックに関するコンポネットを使ってクロスターでのサービスが欠かせます。例えば、フィギュアの場合一つ目の中でのサービスを使って多くのノーバーのサービスはQで連れています。中央の中央で、ノーバーとシンダーの中央もメッセージQで連れています。メッセージの2パターンは、APIコールとペロディックタスクを使っています。APIコールは、ペロディックタスク、ペロディックタスクを使っています。APIコールとペロディックタスクが、コンポーネットやサービスのコンポーネットを連れています。ペロディックタスクは、ペロディックタスクがサービスの中央を使っています。ビデオの中央に、インスタンス、インスタンス、インフォメーション、キャッシュの様なスタッフを見ます。3つのメッセージの種があります。1つはキャストです。キャストはメッセージをクロスして1つのタイヤを達成することができます。もし、マロジプルタイヤがメッセージを受けたらメッセージは1つのタイヤを達成することができます。レプライはメッセージを受けたらメッセージを送ることができます。2つはコールです。コールはキャストのシミュレーターです。メッセージを送ることができます。1つのタイヤを達成することができます。マロジプルタイヤがメッセージを受けたら1つのタイヤが達成することができます。レプライはメッセージを送ることができます。最後の一つはファナウトのメッセージを メッセージQとMessageReachedMultipleTargetのメッセージを繋げていないレプライを繋げます。Name of the Qs used in Compostak Messaging have some rules which are following four.ServiceName is QName according to service which message are sent for such as conductor,scheduler and so on.ServiceName of the UID is created for sending message to whole service for example Compute, etc.ServiceName Point HostName is created for sending message to specified service host.ReplyUID is created for sending reply message corresponding to call message.As I said there are two pattern which are API call and periodic task.I will talk about messaging by API call first.API call messaging occur by user request or call from long periodic task.This figure shows the follow of creating an instance by user request.First, user send an instance creation request to Nova API.Nova API that receives the request then cast a message to Nova conductor via conductor queue.Second, Nova conductor send a call message to Nova scheduler via scheduler queue.Third, Nova scheduler return to reply Nova conductor.First, Nova conductor send a call message to Nova compute via queue of computer point host which is specified in Nova scheduler.His Nova compute replies the result of instance creation to Nova conductor.Let me talk about the second messaging pattern periodic task.OpenStack service have tasks that executed periodically.Some of them send message to other service by remote procedure call or API.In other words,OpenStack execute periodically messaging internally.The number of periodic task in major component is as follow.Nova,neutron, and sender have periodic task which send message to other service while grass and keystone don't have periodic tasks.Piodic task regularly execute API call,db access or messaging to other service.This figure shows the flow of instance information synchronization to Nova scheduler.The periodic task of Nova compute.First, the periodic task of Nova compute send a call message to Nova conductor via conductor queue.Nova conductor access database to synchronize instance information.Second, Nova conductor reply the result of database access to Nova compute via reply queue.Third, Nova compute cast a message to Nova scheduler via scheduler queue update instance information.In this flow,db access is executed only once but how many times db access will be executed by other periodic tasks like update available resources.It depends on the number of instance.So, the amount of API call and messaging depends on the number of resources.For example, instance, block device and so on.Let me sum up the result of OpenStack messaging inspection.OpenStack has two messaging pattern, API call and periodic task.These two use common set of queues.For examples, service name, service name, point host name, reply and final.The number of queues does not increase unless those service components are added.In other words, when a node service component is added, a new queue will be created.The amount of message depends on the number of API call from users.The number of resources such as instance, block device and virtual routers and the number of service nodes.As these value increase, the amount of messages will increase.The message size also depends on the number of resources such as instance, block device and routers too.For example, when instance information synchronized to Nova scheduler,message size will be large if the number of instances is large.Next, I'll talk about some result of instance increasement load testing.We verify the workload of messaging inside OpenStack on our test environment.We increase the instance from one to a thousand to measure the number of messages and the message size of each queues.Some information of our test environment is as follows.Although the environment is not big, it was enough for the load testing.This figure below shows the accumulation of the number of messages and the message sizefrom one to a thousand instances each running for one hour.You can see that the number of messages and message size both increase when instance increases.Especially, we found that the number of message and message size of the conductor queueincreases much when increasing resources.Because every resource data stored in database by Nova compute will be checked and updated by Nova conductor.In other words, if we expand an OpenStack cluster and continue to add new resources,we can regard that the highest workload in message queue is conductor queue.Obviously, this could be a problem.Thank you, Mahito.I'm Mahito Muroi.In my part, I'll show how the RabbitMQ issue could be solved by the developer's side.First, I will show you the details of the problem in RabbitMQand the design of how we solve that problem.Second, I will dive into the details of implementation for the solutions.The main reason of this performance issue is all of the Nova compute nodes use one conductor nodesto send a message to Nova conductors process.All periodic messages go through the queue,and it makes message stacks in that conductor queue.Then, it requires RabbitMQ has high throughput to handle tons of messages in that queue.Of course, the current architecture has a lot of advantage,though it could have the performance issue.For example, the good point of this architecture is it makes Nova processmore easily to scale out all processes that is the Nova conductor queue,and all messages can be load-balanced to every Nova conductor.In addition to the scale-out advantage,it also has a feature to Nova conductor process.When one Nova conductor goes down,the other Nova conductor process can pick up the messages from the conductor queue.The basic idea to solve that performance problem is to divide one conductor queueto multiple conductor queues that Nova compute used for sending messages.It looks like making mesh architecture for messaging network.In this picture,the two Nova compute processes use red conductor queues,one Nova compute process use blue conductor queues,and the last Nova compute process use green conductor queues to Nova conductors.It can reduce workloads in conductor queues rather than only using one conductor queue.As I mentioned,using mesh architecture can reduce its workload,but we need to think how we realize this architecture in current RPCand the messaging implementation.In next,I will explain some tricks to achieve that mesh architecturewith current Nova implementation.To divide queues used by a Nova compute process,each compute process locally pick up a leader Nova conductor process.One Nova compute process and its messages were only to the leader processin the Nova conductor process.So,how the states to choose the local leader are following.First,a Nova compute process called conductor queues as usualin the initial RPC call,and then the one Nova conductor processreceives its RPC.Then,the Nova compute process gets a response from Nova conductor process,and remember the Nova conductor process as a local leader of the Nova compute process.After the first RPC,Nova compute process sends all messages to the compute host queueto the Nova conductor process instead of just conductor queue.In case of down as a local leader,in that case,the top of Nova conductor process goes down.The Nova compute process starts again from step oneto choose a new local leader.As a result of these steps,Nova compute sends their messagesto the different conductors host queues.In this picture,two compute nodes send messages through conductor host one queue.Then,one compute process sends its messages through compute host two queues.And finally,the la compute process sends the messages through conductor host three queues.So,the local selection has some advantages over other approaches.First advantage is no central manager.In general,to pick a leader from multiple process,a central manager which decides the leader is required.However,the local leader selection approach doesn't require any central managerbecause each Nova compute decides its leader in itself.The second advantage of this architecture is load balancing among every Nova conductor processis automatically done by RabbitMQ features.Consumers who get the messages from one queue are changed by RabbitMQ.Incial RPCs are taken by each conductor node,and every Nova compute node sends their messagesto the different Nova conductors.Finally,third advantage is the local leader selection rebalanced workloadin case ofNova conductors process goes down.When Nova conductors goes down,the Nova compute process starts again from theincial RPC to pick a new leader conductor process.In the second advantage,all initial RPCs are loaded to every Nova conductor process.I want to quickly conclude our sessions,our implementation,investigation,and something.Our experiment results show that RabbitMQ can scale out with keeping its higheravailability.Scale out in a RabbitMQ cluster to create additional message queuein that cluster.However,if one queue hits its performance limit,cluster nodes having that queue needs to be scaled up.Next,the number of messages and the message size are proportional to the number of instancesand services of OpenStack processes,like Nova compute,Nova conductors.Second conclusion is that the performance issue in conductor queue can be solved by changingthe messaging style.You can find our sample implementation for that approach in that repository.Current status for upstreaming this implementation to the Nova community is not yet done,but we are planning to upstream this style of messaging to solve that problem.We already find out.One of our future work is because there is no much information on HA mode exactly setting.We think it is necessary to confirm that there are no problems due to large scale and long-termstabilization tests in the future.So,thanks for coming this session.This presentation is powered by entity and entity communications.Next,question Q&A time.So,any questions and comment?If you have,please use this mic to record all the questions and answer in that video.I'm an Oslo messaging core.I develop Oslo messaging.I'm wondering why not just get rid of rabbit,get rid of broker,and use one of the other messaging technologiesthat we're developing.There is a messaging technology that is more distributed in natureand more point-to-point,which get rid of all the overhead associated with doing RPC over queues.RPC over queues is a hack.It's because when you only have a broker or you only have a hammer,everything looks like a nail.There are better ways of doing RPC and there are other technologiesand also messaging that will do this for you.But they're new.They're newer technologies and we're trying to build awareness.It sounds like using other MQ system instead of rabbit MQ?For RPCs,yes.There's things like zero MQ and there's even the one that is more distributedcalled the message router.It enables the performance or the distributed MQ.It does two things.It is faster and at least the benchmarks that we run,because it doesn't do any queuing.But it also allows if you have like locality,if you have conductors distributed through this mesh of you,if you will messaging mesh,then any clients that want to dock to those conductorswill talk to the one that's local,and that way you can load balance across multiple sites.Anyways,it's just something to consider.These are developer-ready,so I'm not saying go to production,but I'm saying if you're testing the stuffand you want to quantify it,I would suggest looking a little bit into this stuff,because it's kind of a future direction,I think,for these technologies.So that wasn't a question that was just a comment.Yeah,yeah,yeah.I think the answer of this question should be fromthe creator side.It's good,like why we choose rabbit MQ.Yeah,so why rabbit MQ choose?So,we verify also,zero MQ,and so Kafka,and then just message queue.So,zero MQ lost the message,and so we can't catch the lost messaging.And so Kafka,and same,so lost the message.So,because so rabbit MQ so have this data star,and so rabbit MQ,and we haveso achievement,and so we production use the rabbit MQ,and so we,so it's difficult to change,so as a message queue,so in production,and so wechoose rabbit MQ.No,it's just kind of an experimental mode.Can't be used for RPC.These other ones can be.You can still use rabbit for noting that.So this is a follow-up question to your comment.I also looked at rabbit MQ performance problems on our infrastructure recently,andso it's,okay,well,there might be an alternative,and I heard about zero MQ beingsupported in OpenStack,but I saw that it's being deprecated.So,what's the long term go from lost messaging,and maybe the technical committeeor,about what should be the message bus for,or the message bus is,if there are severalsupported for OpenStack.Yes,actually,zero MQ,we're working on trying to get more maintainers.The maintainers that we're working on,that driver have,unfortunately,nolonger part of OpenStack.So we're recruiting if anybody's interested to usezero MQ,but the other technology that's very similar,and I think in some waysmore of a solution for distributed cloud,would be the message road.And that,that's being maintained.I'm here,I'm doing that.I've got other people working to get inand to triple out.It's in CI,it's upstream.I've been here for four years,working on this stuff.And they'll get my key card when they pry for my cold dead hands.So,but that's a good question,and we're working with the also message groupto kind of get a statement of,you know,what other technologies there are,whatsupport.Okay,other questions?Yeah,actually,there's,it's alsocomments about the two gentlemen's questions.So,for,so I heard it's zero MQ,andRobin MQ,and there's some other MQ,like Kafka.So there are someadvantages,advantages.My comments is why OpenStack community don'tdo like AWS do.So I worked with AWS before.So they always use their ownplatform MQ system,like the SQS,SNS.So it looks like we have Zacker,if Iunderstand correctly.So why the OpenStack community that's now usingOpenStack as their own MQ?Yeah,okay.Thank you.Okay.It's,it's my,my answer isnot the official OpenStack community,but it's my,it's my personalopinion that Zacker is a service for the user of Messaging Q,andRobin MQ is an internal middleware to connect to,in one services,like anova,sinder.So it's the,the purpose of the Messaging is different from ZackerBetween the Rabbit MQ.I think it's a design decision of OpenStackcommunity,or,and each OpenStack component.Is it okay to your questions?Any otherquestions or comments?It's nothing.It's time to finish this presentation.Okay.Thanks.Thanksfor coming this presentation.