実運用して分かったRabbit MQの良いところ・気をつけること #jjug

Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
祖父江 翔
実運用して分かったRabbitMQの
良いところ・気をつけること
2017年9月27日
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
自己紹介
祖父江 翔(そぶえ しょう)
マーケティングソリューションズカンパニー開発本部
新卒入社7年目
配属されてからずっと広告関連の開発
入稿→アカウント→開発基盤
2
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
本日の内容
• Rabbit MQとは
• 広告システム内でのRabbit MQ
• 導入前の課題
• 動機
• 良いところ
• 気をつけること
• 構成
• プロビジョニング
• 保守・運用
• まとめ
3
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
RabbitMQとは
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
RabbitMQ
RabbitMQ is the most widely deployed open source message broker.
With more than 35,000 production deployments of RabbitMQ world-wide at small
startups and large enterprises, RabbitMQ is the most popular open source message
broker.
RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It
supports multiple messaging protocols. RabbitMQ can be deployed in distributed
and federated configurations to meet high-scale, high-availability requirements.
5
RabbitMQ - Messaging that just works, https://www.rabbitmq.com/
トップページより引用
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
要はRabbitMQとは
• オープンソースのメッセージブローカー
• 軽量でデプロイをオンプレミスでも
クラウドでも利用可能
• 複数のメッセージプロトコル対応
• スタンドアローンでもクラスタでも構築可能
6
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
多言語サポート
• 公式で用意されているのは
Erlang, Java, C#のみ
• Ruby, Python, PHPなど提供
7
Clients & Developer Tools, https://www.rabbitmq.com/devtools.html
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
PluginやAPI
• Pluginが豊富
• 基本機能以外の付け足しが可能
• プロトコルや認証機能の追加が可能
• 管理画面の導入で運用負荷の軽減も可能
• APIが用意されている
• リソースやトラフィックの監視が可能
8
Plugins, https://www.rabbitmq.com/plugins.html
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Management Plugin
9
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
広告システム内での
Rabbit MQ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
広告システム
11
FE
BEサーバ群
広告配信システム
広告主が出稿
配信面
非同期化部分
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
RabbitMQ導入前の課題
• ブローカーのないキュー管理の仕組みを利用
• 接続の管理が面倒
• 接続設定の修正が職人芸(気軽にできない)
• ProducerとConsumerを気軽に追加できない
12
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
導入前(設定つらい…)
13
BE APIサーバ 配信システム連携バッチ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
キュー管理の仕組みに求めたこと
• PHPとJavaで同時に運用できること
• 耐障害性があること
• ConsumerやProducerを容易に追加できること
• スループットが高いこと
• 広告入稿のリクエストに耐えられること
• 処理単位でルーティングができること
14
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
RabbitMQを採用
• AMQPで動作する
• クライアントライブラリがある
• JavaでもPHPでも動作するため、並行期間を設けられる
• クラスタを容易に構築できる
• ブローカーのスケールアウトができる
• ProducerとConsumerが容易に追加できる
• トピックとキーでルーティングが可能
15
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
広告システム
16
FE
BEサーバ群
広告配信システム
広告主が出稿
配信面
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
BEサーバ群の構成
17
BE APIサーバ RabbitMQクラスタ
(3台構成)
配信システム連携バッチ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
良いところ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
言語が混在しても問題なく動作
• JavaからPHPへメッセージの受け渡し
• 並行運用しても問題なく動作
19
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
耐障害性、クライアント設定
• クラスタのノードが1台ダウンしても
サービス継続
• クライアントはRabbitMQクラスタを
接続先にすればいい
20
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
高いスループット
• VM3台で1クラスタの構成
• vCPU: 8
• Mem: 16G
• Disc: 120G
• 1000万msg/dayをConsumerが処理
21
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
気をつけること
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
構成
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
LBを使った構成の罠
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
複数ノード構成なのでLBを配備してみた
• HTTPサーバみたいに
LB経由でバランシングする構成に
25
BE APIサーバ RabbitMQクラスタ
LB
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
メッセージが見つからない
• システム内で整合性が取れない
• ただ、何が消えたのかわからない
• リカバリ頑張る、運用でカバー
26
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
LBを入れてリッチな構成にしたことが仇
• LBがセッション維持しない設定(変更不可)
• LBがセッションを定期的に破棄していることが発覚
• JavaのRabbitMQクライアントで
LBを使わなくてもクラスタを考慮した接続や
障害時の接続のリカバリが実装されていた
27
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
LBいらない
• ノードを全部列挙する
28
BE APIサーバ RabbitMQクラスタ
Host1,Host2,Host3
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
プロビジョニング
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
クラスタ止まった
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
クラスタが応答しなくなった
大量のメッセージがあると応答しない
PublishもConsumeもできない状態
処理が遅延してシステムが止まるような事態に…
31
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
原因その1: ディスクI/O
メモリ上で扱わず
すべてディスクに書き込む設定 (デフォルト)
設定変更してメモリで扱うように
32
信頼性よりパフォーマンスを重視した設定
※マスタ1台のみディスク、スレーブ2台をメモリ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ただし、通常はディスク推奨
→通常はディスクのみ、メモリは特殊ケース
33
Clustering Guide: https://www.rabbitmq.com/clustering.html
A node can be a disk node or a RAM node. (Note: disk and disc are used
interchangeably).
In most cases you want all your nodes to be disk nodes; RAM nodes are a
special case that can be used to improve the performance clusters with
high queue, exchange, or binding churn.
When in doubt, use disk nodes only.
Clustering Guideより引用
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
原因その2:トラッフィク統計の設定
• Message ratesの設定(rates_mode)
• 管理プラグインを入れるとデフォルトBasicモード
• メッセージの転送レートを表示するための設定
• メッセージの流量を観測するには有用な設定
34
Management Plugin: https://www.rabbitmq.com/management.html
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Message ratesの設定あり
35
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Message ratesの設定なし
36
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
高スループット環境では無効にするべき
• このオプションを無効にした途端に
スループットが向上
• メトリック監視とパフォーマンスはトレードオフ
• 公式でも
37
Alternatively, the message rates can be disabled altogether.
This can help get the best possible performance out of a CPU-bound server.
Management Plugin: https://www.rabbitmq.com/management.html
Management Pluginより引用
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
保守・運用
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
無停止で
バージョンアップする
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
サービス停止するわけにいかない
• 24時間絶え間なく広告入稿のリクエスト
• ミドルウェアのバージョンアップで
サービス停止できない
40
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
切り替え Step1
41
広告配信システム
FE
Consumer
旧RabbitMQクラスタ
BE
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
切り替え Step2
42
広告配信システム
FE
Consumer
旧RabbitMQクラスタ
BE
新RabbitMQクラスタ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
切り替え Step3
43
広告配信システム
FE
Consumer
旧RabbitMQクラスタ
BE
新RabbitMQクラスタ
メッセージを
捌き切る
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
切り替え Step4
44
広告配信システム
FE
旧RabbitMQクラスタ
BE
新RabbitMQクラスタ
Consumer
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ネットワーク
パーティション
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ネットワーク障害!
• ある日、ネットワーク障害発生
• 管理画面開くと…
46
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
再起動するしかない
47
• 公式のドキュメントによると…
Clustering and Network Partitions: https://www.rabbitmq.com/partitions.html
It may be simpler to stop the whole cluster and start it again; if
so make sure that the first node you start is from the trusted
partition.
Clustering and Network Partitionsより引用
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
まとめ
Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
まとめ
• 良いところ
• 高スループット
• 耐障害性があり、クライアント設定はシンプル
• 多言語対応していて、混在でも並行運用可
• 気をつけること
• 特に高スループットが要求される場合は
プロビジョニングに注意
• 公式ドキュメントは読み込むべし
49
1 of 49

Recommended

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) by
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
11.8K views63 slides
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー by
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
37K views53 slides
Dockerからcontainerdへの移行 by
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
7.5K views36 slides
ストリーム処理を支えるキューイングシステムの選び方 by
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
40.2K views42 slides
Serverless時代のJavaについて by
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについてAmazon Web Services Japan
12.9K views90 slides
本当は恐ろしい分散システムの話 by
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
686K views70 slides

More Related Content

What's hot

Javaのログ出力: 道具と考え方 by
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
74.3K views67 slides
分散システムについて語らせてくれ by
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
119.4K views45 slides
エンジニアの個人ブランディングと技術組織 by
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
23.3K views40 slides
Dockerからcontainerdへの移行 by
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
16.6K views36 slides
Redisの特徴と活用方法について by
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
101.5K views65 slides
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52 by
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
11.3K views90 slides

What's hot(20)

Javaのログ出力: 道具と考え方 by Taku Miyakawa
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa74.3K views
分散システムについて語らせてくれ by Kumazaki Hiroki
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki119.4K views
エンジニアの個人ブランディングと技術組織 by Takafumi ONAKA
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA23.3K views
Dockerからcontainerdへの移行 by Kohei Tokunaga
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga16.6K views
Redisの特徴と活用方法について by Yuji Otani
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani101.5K views
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52 by Yahoo!デベロッパーネットワーク
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善 by Ito Takayuki
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki528 views
世界一わかりやすいClean Architecture by Atsushi Nakamura
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura47.1K views
BuildKitの概要と最近の機能 by Kohei Tokunaga
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga4.6K views
Dockerfile を書くためのベストプラクティス解説編 by Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu84.4K views
例外設計における大罪 by Takuto Wada
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada68.5K views
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス by Amazon Web Services Japan
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Linux女子部 systemd徹底入門 by Etsuji Nakai
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai137.9K views
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな by Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤 by Amazon Web Services Japan
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
DockerとKubernetesをかけめぐる by Kohei Tokunaga
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kohei Tokunaga3.6K views
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理 by NTT DATA Technology & Innovation
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
AWSのログ管理ベストプラクティス by Akihiro Kuwano
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano77.2K views

Viewers also liked

RabbitMQ by
RabbitMQRabbitMQ
RabbitMQMasahito Ikuta
7.4K views144 slides
MQTTとAMQPと.NET by
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
39.8K views41 slides
Jenkins 2.0 Pipeline & Blue Ocean by
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanAkihiko Horiuchi
11.5K views22 slides
メッセージキュー「Pulsar」の紹介 @OSC_20171007 by
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007Nozomi Kurihara
1.1K views63 slides
Ansibleで始めるインフラ構築自動化 by
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
56.1K views63 slides
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜 by
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jumpei Miyata
7.4K views92 slides

Viewers also liked(6)

MQTTとAMQPと.NET by terurou
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou39.8K views
Jenkins 2.0 Pipeline & Blue Ocean by Akihiko Horiuchi
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Akihiko Horiuchi11.5K views
メッセージキュー「Pulsar」の紹介 @OSC_20171007 by Nozomi Kurihara
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
Nozomi Kurihara1.1K views
Ansibleで始めるインフラ構築自動化 by dcubeio
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio56.1K views
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜 by Jumpei Miyata
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jumpei Miyata7.4K views

Similar to 実運用して分かったRabbit MQの良いところ・気をつけること #jjug

僕とヤフーと時々Teradata #prestodb by
僕とヤフーと時々Teradata #prestodb僕とヤフーと時々Teradata #prestodb
僕とヤフーと時々Teradata #prestodbYahoo!デベロッパーネットワーク
2.3K views47 slides
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2 by
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Yahoo!デベロッパーネットワーク
8.4K views64 slides
Hive on Tezのベストプラクティス by
Hive on TezのベストプラクティスHive on Tezのベストプラクティス
Hive on TezのベストプラクティスYahoo!デベロッパーネットワーク
3.5K views40 slides
LLVM overview 20110122 by
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122nothingcosmos
2.8K views32 slides
組み込み入門 by
組み込み入門組み込み入門
組み込み入門Yuki Suga
1.4K views84 slides
組み込み入門 by
組み込み入門組み込み入門
組み込み入門Yuki Suga
7.4K views84 slides

Similar to 実運用して分かったRabbit MQの良いところ・気をつけること #jjug(20)

LLVM overview 20110122 by nothingcosmos
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122
nothingcosmos2.8K views
組み込み入門 by Yuki Suga
組み込み入門組み込み入門
組み込み入門
Yuki Suga1.4K views
組み込み入門 by Yuki Suga
組み込み入門組み込み入門
組み込み入門
Yuki Suga7.4K views
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築 by CROOZ, inc.
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.50.1K views
HeapStats: Introduction and Technical Preview by Yuji Kubota
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota2.7K views
System Center Operations Managerによる仮想環境の高度な管理 by junichi anno
System Center Operations Managerによる仮想環境の高度な管理System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理
junichi anno1.6K views
Gitと出会って人生変わった テックヒルズ2013-03-22 by Shota Umeda
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda5.6K views
エンジニアという職業について by Hisatoshi Kikumoto
エンジニアという職業についてエンジニアという職業について
エンジニアという職業について
Hisatoshi Kikumoto2.5K views
Lagopus Project (Open Source Conference) by Tomoya Hibi
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
Tomoya Hibi217 views
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性 by Taiji Tsuchiya
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
Taiji Tsuchiya3.2K views
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介 by Tamakoshi Hironori
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
Tamakoshi Hironori829 views
全部入り!WGPで高速JavaScript+HML5体験 by AdvancedTechNight
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight1.8K views
泥臭い運用から、プログラマブルインフラ構築(に行きたい) by Akihiro Kuwano
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano4K views
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介 by Kodai Terashima
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
Kodai Terashima4.7K views
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策 by Juniper Networks (日本)
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策

More from Yahoo!デベロッパーネットワーク

ゼロから始める転移学習 by
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習Yahoo!デベロッパーネットワーク
13.1K views132 slides
継続的なモデルモニタリングを実現するKubernetes Operator by
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes OperatorYahoo!デベロッパーネットワーク
4.9K views35 slides
ヤフーでは開発迅速性と品質のバランスをどう取ってるか by
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
1.2K views24 slides
オンプレML基盤on Kubernetes パネルディスカッション by
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションYahoo!デベロッパーネットワーク
2K views18 slides
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜 by
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜Yahoo!デベロッパーネットワーク
1.7K views35 slides

More from Yahoo!デベロッパーネットワーク(20)

Recently uploaded

JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
Web3 Career_クレデン資料 .pdf by
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdfnanamatsuo
14 views9 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
175 views15 slides
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化Knowledge & Experience
8 views34 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
13 views38 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
73 views42 slides

Recently uploaded(11)

Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda175 views
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之91 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka71 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4172 views
01Booster Studio ご紹介資料 by ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172300 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.41 views

実運用して分かったRabbit MQの良いところ・気をつけること #jjug

  • 1. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 祖父江 翔 実運用して分かったRabbitMQの 良いところ・気をつけること 2017年9月27日
  • 2. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 自己紹介 祖父江 翔(そぶえ しょう) マーケティングソリューションズカンパニー開発本部 新卒入社7年目 配属されてからずっと広告関連の開発 入稿→アカウント→開発基盤 2
  • 3. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 本日の内容 • Rabbit MQとは • 広告システム内でのRabbit MQ • 導入前の課題 • 動機 • 良いところ • 気をつけること • 構成 • プロビジョニング • 保守・運用 • まとめ 3
  • 4. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . RabbitMQとは
  • 5. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . RabbitMQ RabbitMQ is the most widely deployed open source message broker. With more than 35,000 production deployments of RabbitMQ world-wide at small startups and large enterprises, RabbitMQ is the most popular open source message broker. RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements. 5 RabbitMQ - Messaging that just works, https://www.rabbitmq.com/ トップページより引用
  • 6. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 要はRabbitMQとは • オープンソースのメッセージブローカー • 軽量でデプロイをオンプレミスでも クラウドでも利用可能 • 複数のメッセージプロトコル対応 • スタンドアローンでもクラスタでも構築可能 6
  • 7. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 多言語サポート • 公式で用意されているのは Erlang, Java, C#のみ • Ruby, Python, PHPなど提供 7 Clients & Developer Tools, https://www.rabbitmq.com/devtools.html
  • 8. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . PluginやAPI • Pluginが豊富 • 基本機能以外の付け足しが可能 • プロトコルや認証機能の追加が可能 • 管理画面の導入で運用負荷の軽減も可能 • APIが用意されている • リソースやトラフィックの監視が可能 8 Plugins, https://www.rabbitmq.com/plugins.html
  • 9. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . Management Plugin 9
  • 10. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 広告システム内での Rabbit MQ
  • 11. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 広告システム 11 FE BEサーバ群 広告配信システム 広告主が出稿 配信面 非同期化部分
  • 12. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . RabbitMQ導入前の課題 • ブローカーのないキュー管理の仕組みを利用 • 接続の管理が面倒 • 接続設定の修正が職人芸(気軽にできない) • ProducerとConsumerを気軽に追加できない 12
  • 13. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 導入前(設定つらい…) 13 BE APIサーバ 配信システム連携バッチ
  • 14. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . キュー管理の仕組みに求めたこと • PHPとJavaで同時に運用できること • 耐障害性があること • ConsumerやProducerを容易に追加できること • スループットが高いこと • 広告入稿のリクエストに耐えられること • 処理単位でルーティングができること 14
  • 15. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . RabbitMQを採用 • AMQPで動作する • クライアントライブラリがある • JavaでもPHPでも動作するため、並行期間を設けられる • クラスタを容易に構築できる • ブローカーのスケールアウトができる • ProducerとConsumerが容易に追加できる • トピックとキーでルーティングが可能 15
  • 16. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 広告システム 16 FE BEサーバ群 広告配信システム 広告主が出稿 配信面
  • 17. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . BEサーバ群の構成 17 BE APIサーバ RabbitMQクラスタ (3台構成) 配信システム連携バッチ
  • 18. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 良いところ
  • 19. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 言語が混在しても問題なく動作 • JavaからPHPへメッセージの受け渡し • 並行運用しても問題なく動作 19
  • 20. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 耐障害性、クライアント設定 • クラスタのノードが1台ダウンしても サービス継続 • クライアントはRabbitMQクラスタを 接続先にすればいい 20
  • 21. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 高いスループット • VM3台で1クラスタの構成 • vCPU: 8 • Mem: 16G • Disc: 120G • 1000万msg/dayをConsumerが処理 21
  • 22. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 気をつけること
  • 23. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 構成
  • 24. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . LBを使った構成の罠
  • 25. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 複数ノード構成なのでLBを配備してみた • HTTPサーバみたいに LB経由でバランシングする構成に 25 BE APIサーバ RabbitMQクラスタ LB
  • 26. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . メッセージが見つからない • システム内で整合性が取れない • ただ、何が消えたのかわからない • リカバリ頑張る、運用でカバー 26
  • 27. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . LBを入れてリッチな構成にしたことが仇 • LBがセッション維持しない設定(変更不可) • LBがセッションを定期的に破棄していることが発覚 • JavaのRabbitMQクライアントで LBを使わなくてもクラスタを考慮した接続や 障害時の接続のリカバリが実装されていた 27
  • 28. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . LBいらない • ノードを全部列挙する 28 BE APIサーバ RabbitMQクラスタ Host1,Host2,Host3
  • 29. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . プロビジョニング
  • 30. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . クラスタ止まった
  • 31. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . クラスタが応答しなくなった 大量のメッセージがあると応答しない PublishもConsumeもできない状態 処理が遅延してシステムが止まるような事態に… 31
  • 32. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 原因その1: ディスクI/O メモリ上で扱わず すべてディスクに書き込む設定 (デフォルト) 設定変更してメモリで扱うように 32 信頼性よりパフォーマンスを重視した設定 ※マスタ1台のみディスク、スレーブ2台をメモリ
  • 33. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . ただし、通常はディスク推奨 →通常はディスクのみ、メモリは特殊ケース 33 Clustering Guide: https://www.rabbitmq.com/clustering.html A node can be a disk node or a RAM node. (Note: disk and disc are used interchangeably). In most cases you want all your nodes to be disk nodes; RAM nodes are a special case that can be used to improve the performance clusters with high queue, exchange, or binding churn. When in doubt, use disk nodes only. Clustering Guideより引用
  • 34. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 原因その2:トラッフィク統計の設定 • Message ratesの設定(rates_mode) • 管理プラグインを入れるとデフォルトBasicモード • メッセージの転送レートを表示するための設定 • メッセージの流量を観測するには有用な設定 34 Management Plugin: https://www.rabbitmq.com/management.html
  • 35. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . Message ratesの設定あり 35
  • 36. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . Message ratesの設定なし 36
  • 37. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 高スループット環境では無効にするべき • このオプションを無効にした途端に スループットが向上 • メトリック監視とパフォーマンスはトレードオフ • 公式でも 37 Alternatively, the message rates can be disabled altogether. This can help get the best possible performance out of a CPU-bound server. Management Plugin: https://www.rabbitmq.com/management.html Management Pluginより引用
  • 38. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 保守・運用
  • 39. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 無停止で バージョンアップする
  • 40. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . サービス停止するわけにいかない • 24時間絶え間なく広告入稿のリクエスト • ミドルウェアのバージョンアップで サービス停止できない 40
  • 41. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 切り替え Step1 41 広告配信システム FE Consumer 旧RabbitMQクラスタ BE
  • 42. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 切り替え Step2 42 広告配信システム FE Consumer 旧RabbitMQクラスタ BE 新RabbitMQクラスタ
  • 43. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 切り替え Step3 43 広告配信システム FE Consumer 旧RabbitMQクラスタ BE 新RabbitMQクラスタ メッセージを 捌き切る
  • 44. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 切り替え Step4 44 広告配信システム FE 旧RabbitMQクラスタ BE 新RabbitMQクラスタ Consumer
  • 45. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . ネットワーク パーティション
  • 46. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . ネットワーク障害! • ある日、ネットワーク障害発生 • 管理画面開くと… 46
  • 47. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 再起動するしかない 47 • 公式のドキュメントによると… Clustering and Network Partitions: https://www.rabbitmq.com/partitions.html It may be simpler to stop the whole cluster and start it again; if so make sure that the first node you start is from the trusted partition. Clustering and Network Partitionsより引用
  • 48. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . まとめ
  • 49. Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . まとめ • 良いところ • 高スループット • 耐障害性があり、クライアント設定はシンプル • 多言語対応していて、混在でも並行運用可 • 気をつけること • 特に高スループットが要求される場合は プロビジョニングに注意 • 公式ドキュメントは読み込むべし 49