Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
OSC.Cloud 2012           openstack      Open source software to build public and private clouds.     OpenStack を支える     メッ...
前置き●   OpenStack は分散指向    ●   スケーラビリティ    ●   アベイラビリティ    ●   その仕組みとして、 AMQP によるメッセージング機構が        採用されています。               ...
復習●   OpenStack とは?             OpenStack API 、 Amazon 互換 API               ストレージ                         オブジェクト    サーバ仮想化...
復習●   OpenStack とは?             OpenStack API 、 Amazon 互換 API               ストレージ                         オブジェクト    サーバ仮想化...
OpenStack の全体像                 5
拡大図      6
拡大図      これの話             7
概略イメージ図  ●   全体像                                      nova-scheduler Horizon    HTTP                      nova-scheduler  ...
概略イメージ図  ●   クライアントから API サーバに命令を発行                                      nova-scheduler Horizon    HTTP                   ...
概略イメージ図  ●   API が命令を解釈してキューへリクエストを送信                                      nova-scheduler                              msg...
概略イメージ図  ●   キューを取り出し、実行するホストを決定。                                      nova-scheduler   msg Horizon    HTTP               ...
概略イメージ図  ●   実行するホストを指定してキューへ命令を戻す。                                      nova-scheduler                              msg H...
概略イメージ図  ●   指定されたホストがキューから命令を取り出し実行                                      nova-scheduler Horizon    HTTP                  ...
これが DB だったらかなり大変                                    nova-scheduler Horizon    HTTP                    nova-scheduler      ...
OpenStack では?                15
Queue とは?  ●   AMQP を使ったメッセージング機構      ●     異なるノードに分散配置された各 Nova コンポーネント            間での通信を実現する。                          ...
AMQP とは?●   Advanced Message Queuing Protocol    ●   メッセージ指向ミドルウェアのオープンスタンダードなア        プリケーション層プロトコルである。 AMQP の機能の定       ...
AMQP とは?●   用語    ●   ブローカー        –    ようはキューサーバ / メッセージサーバの事    ●   ブローカーは以下の 2 つの要素を持つ        –    Queue ・・・メッセージがたまる所 ...
AMQP とは?●   Queue と Exchange を組み合わせる事で柔軟な    メッセージ配送が可能になる。    ●   Direct 配送        –    Exchage & Queue が1:1で対応する    ●   ...
OpenStack のメッセージ処理●     メッセージングの実体は openstac.common.rpc      以下に配置されている (Folsom )        ●     通称 RPC        ●     Exchang...
nova-* が利用する queue●   各 nova プロセスは起動時に AMQP ブローカーへ    接続し、 3 つのキューを作成し、このキューへのメッ    セージを待ち受けする。    ●   例 ) QPID & nova-vol...
nova-* が利用する queue                                                              どれか一台  ●   例 ) QPID & nova-volume         ...
まとめ●   OpenStack は分散環境の制御に AMQP を利用    ●   シンプルにスケーラビリティ、アベイラビリティを実現    ●   AMQP は Exchage/Queue から構成される    ●   メッセージングの仕組...
Upcoming SlideShare
Loading in …5
×

OSC.Cloud 2012 分散システムを支えるメッセージングの仕組み

4,185 views

Published on

  • Be the first to comment

OSC.Cloud 2012 分散システムを支えるメッセージングの仕組み

  1. 1. OSC.Cloud 2012 openstack Open source software to build public and private clouds. OpenStack を支える メッセージングの基礎 2012.12.16 日本 OpenStack ユーザ会 中島 @irix_jp 1
  2. 2. 前置き● OpenStack は分散指向 ● スケーラビリティ ● アベイラビリティ ● その仕組みとして、 AMQP によるメッセージング機構が 採用されています。 2
  3. 3. 復習● OpenStack とは? OpenStack API 、 Amazon 互換 API ストレージ オブジェクト サーバ仮想化 NW 仮想化 仮想化 ストア OpenStack プロプライエタリ コモディティサーバ コモディティサーバ ハードウェア 3
  4. 4. 復習● OpenStack とは? OpenStack API 、 Amazon 互換 API ストレージ オブジェクト サーバ仮想化 NW 仮想化 仮想化 ストア OpenStack プロプライエタリ コモディティサーバ コモディティサーバ ハードウェアこの中どうなってるの?? 4
  5. 5. OpenStack の全体像 5
  6. 6. 拡大図 6
  7. 7. 拡大図 これの話 7
  8. 8. 概略イメージ図 ● 全体像 nova-scheduler Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor 8
  9. 9. 概略イメージ図 ● クライアントから API サーバに命令を発行 nova-scheduler Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor 9
  10. 10. 概略イメージ図 ● API が命令を解釈してキューへリクエストを送信 nova-scheduler msg Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor 10
  11. 11. 概略イメージ図 ● キューを取り出し、実行するホストを決定。 nova-scheduler msg Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor 11
  12. 12. 概略イメージ図 ● 実行するホストを指定してキューへ命令を戻す。 nova-scheduler msg Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor 12
  13. 13. 概略イメージ図 ● 指定されたホストがキューから命令を取り出し実行 nova-scheduler Horizon HTTP nova-scheduler nova-api(web I/F) Queue Client nova-apiCommand nova-compute hypervisor msg nova-compute hypervisor nova-compute hypervisor 13
  14. 14. これが DB だったらかなり大変 nova-scheduler Horizon HTTP nova-scheduler nova-api(web I/F) DB Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor FIFO の保証をどう担保? 負荷も集中 nova-compute hypervisorOpenStack も DB は持っているので誤解なきように 14
  15. 15. OpenStack では? 15
  16. 16. Queue とは? ● AMQP を使ったメッセージング機構 ● 異なるノードに分散配置された各 Nova コンポーネント 間での通信を実現する。 nova-scheduler Horizon HTTP nova-api nova-scheduler(web I/F) AMQP Client nova-apiCommand nova-compute hypervisor nova-compute hypervisor nova-compute hypervisor http://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol 16
  17. 17. AMQP とは?● Advanced Message Queuing Protocol ● メッセージ指向ミドルウェアのオープンスタンダードなア プリケーション層プロトコルである。 AMQP の機能の定 義は、メッセージ指向、キューイング、ルーティング ( ポイ ント・ツー・ポイント , 出版 - 購読型モデル ) 、信頼性、セ キュリティに及ぶ。 *1 ● OpenStack では以下が利用可能 – RabbitMQ (鉄板) – Apache QPID ( RHEL 系ならあり) – ZeroMQ (動かしてる人を見たことがない??) http://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol 17
  18. 18. AMQP とは?● 用語 ● ブローカー – ようはキューサーバ / メッセージサーバの事 ● ブローカーは以下の 2 つの要素を持つ – Queue ・・・メッセージがたまる所 – Exchange ・・・キューへの配送ルールを定義 ● メッセージ交換器 http://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol 18
  19. 19. AMQP とは?● Queue と Exchange を組み合わせる事で柔軟な メッセージ配送が可能になる。 ● Direct 配送 – Exchage & Queue が1:1で対応する ● Fanout 配送 – Exchage & Queue が1: N で対応する ● Topic 配送 – Exchage & Queue が1: N で対応する ● ただしメッセージが含むキーワードにマッチした Queue にのみ配送 http://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol 19
  20. 20. OpenStack のメッセージ処理● メッセージングの実体は openstac.common.rpc 以下に配置されている (Folsom ) ● 通称 RPC ● Exchange と Quene による各種配送処理を抽象化し た API で、 OpenStack の至るところで使われる重要な プログラム。 – 同一コンポーネント全てへメッセージを送る – 誰か1台が受け取れば良いメッセージを送付 – 特定の1台へメッセージを送付 http://openstack.jp/assets/files/20120323/howtoreadnovacodes/rpc.html 20
  21. 21. nova-* が利用する queue● 各 nova プロセスは起動時に AMQP ブローカーへ 接続し、 3 つのキューを作成し、このキューへのメッ セージを待ち受けする。 ● 例 ) QPID & nova-volume ( Essex ) – volume ● 誰か1台が受け取れ良いメッセージ – volume.<<FQDN>> ● 自分自身が指定されたメッセージ – volume_fanout_<<UUID>> ● ブロードキャストメッセージを受け取る 21
  22. 22. nova-* が利用する queue どれか一台 ● 例 ) QPID & nova-volume host1(FQDN1) msg volume host2(FQDN2) msg host3(FQDN3) key=volume.<<FQDN1>> 指定された一台msg nova volume.<<FQDN1>> host1(FQDN1) msg volume.<<FQDN2>> host2(FQDN2) 全台 volume_fanout_<<UUID1>> host1(FQDN1) msgmsg volume_fanout volume_fanout_<<UUID2>> host2(FQDN2) msg volume_fanout_<<UUID3>> host3(FQDN3) msg Exchange Queue Receiver 22
  23. 23. まとめ● OpenStack は分散環境の制御に AMQP を利用 ● シンプルにスケーラビリティ、アベイラビリティを実現 ● AMQP は Exchage/Queue から構成される ● メッセージングの仕組みを知っておくと、 OpenStack の 動作理解の助けになります – OpenStack に関係なく、ちょっとしたツールを作る際にも FIFO が保証され、様々な配送制御が可能な AMQP はとても 便利です。 ● Python, Ruby, Perl, C/C++, Common Lisp 等ほとんど言語から 利用可能です。 23

×