Submit Search
Upload
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
•
19 likes
•
13,654 views
matsu_chara
Follow
@matsu_chara 2016/5/31 Apache Kafka Meetup Japan #1 at Yahoo! JAPAN
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Recommended
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
Atsushi Kurumada
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
Sotaro Kimura
More Related Content
What's hot
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
What's hot
(20)
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
SpringBootTest入門
SpringBootTest入門
Redisの特徴と活用方法について
Redisの特徴と活用方法について
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
WebSocketのキホン
WebSocketのキホン
分散システムについて語らせてくれ
分散システムについて語らせてくれ
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Viewers also liked
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
Atsushi Kurumada
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
Sotaro Kimura
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
Yoshiyasu SAEKI
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
Treasure Data and AWS - Developers.io 2015
Treasure Data and AWS - Developers.io 2015
N Masahiro
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Yoshimura Soichiro
Kafkaによるリアルタイム処理
Kafkaによるリアルタイム処理
Naoki Yanai
Fluentd v0.12 master guide
Fluentd v0.12 master guide
N Masahiro
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
日本Javaユーザーグループ
Top 5 Deep Learning and AI Stories - October 6, 2017
Top 5 Deep Learning and AI Stories - October 6, 2017
NVIDIA
Viewers also liked
(10)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Treasure Data and AWS - Developers.io 2015
Treasure Data and AWS - Developers.io 2015
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Kafkaによるリアルタイム処理
Kafkaによるリアルタイム処理
Fluentd v0.12 master guide
Fluentd v0.12 master guide
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Top 5 Deep Learning and AI Stories - October 6, 2017
Top 5 Deep Learning and AI Stories - October 6, 2017
Similar to Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Sotaro Kimura
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Sotaro Kimura
Reactive Kafka with Akka Streams
Reactive Kafka with Akka Streams
scalaconfjp
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
Nozomi Kurihara
Akka meetup 2014_sep
Akka meetup 2014_sep
masahitojp
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
Aya Komuro
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
Kafka logをオブジェクトストレージに連携する方法まとめ
Kafka logをオブジェクトストレージに連携する方法まとめ
Keigo Suda
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Mackerelによる 簡単サーバー管理入門と発展形
Mackerelによる 簡単サーバー管理入門と発展形
Shinji Tanaka
chat bot framework for Java8
chat bot framework for Java8
masahitojp
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Junichi Noda
Kafka Streamsによるスケーラブルで非環境依存なストリーム/バッチ処理アーキテクチャ
Kafka Streamsによるスケーラブルで非環境依存なストリーム/バッチ処理アーキテクチャ
Kazuki Ogiwara
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
Kazuto Kusama
Apache Kafkaでの大量データ処理がKubernetesで簡単にできて嬉しかった話
Apache Kafkaでの大量データ処理がKubernetesで簡単にできて嬉しかった話
MicroAd, Inc.(Engineer)
とりあえず使えるSBT
とりあえず使えるSBT
Kiyotaka Kunihira
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
Apache EventMesh を使ってみた
Apache EventMesh を使ってみた
Yoshiyasu SAEKI
Similar to Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
(20)
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Reactive Kafka with Akka Streams
Reactive Kafka with Akka Streams
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
Akka meetup 2014_sep
Akka meetup 2014_sep
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
Kafka logをオブジェクトストレージに連携する方法まとめ
Kafka logをオブジェクトストレージに連携する方法まとめ
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Mackerelによる 簡単サーバー管理入門と発展形
Mackerelによる 簡単サーバー管理入門と発展形
chat bot framework for Java8
chat bot framework for Java8
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Kafka Streamsによるスケーラブルで非環境依存なストリーム/バッチ処理アーキテクチャ
Kafka Streamsによるスケーラブルで非環境依存なストリーム/バッチ処理アーキテクチャ
Jjug springセッション
Jjug springセッション
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
Apache Kafkaでの大量データ処理がKubernetesで簡単にできて嬉しかった話
Apache Kafkaでの大量データ処理がKubernetesで簡単にできて嬉しかった話
とりあえず使えるSBT
とりあえず使えるSBT
Scalaの現状と課題
Scalaの現状と課題
Apache EventMesh を使ってみた
Apache EventMesh を使ってみた
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
1.
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集 @matsu_chara 2016/5/31 Apache
Kafka Meetup Japan #1 at Yahoo! JAPAN
2.
今日のスライド http://www.slideshare.net/matsu_chara/kafka-part2
3.
part1のスライド http://xuwei-k.github.io/slides/kafka-matsuri/#1
4.
自己紹介 • @matsu_chara • Ponylang非公式エバンジェリスト活動 •
Scala新卒研修用テキスト
5.
話すこと • Kafkaを使ったイベントハブについて • イベントハブとしてのKafka •
現在のシステム構成 • Kafkaの設定 • Kafka運用時辛かった事例 • TopicとPartition数増大による性能劣化 • FullGC発生によるPublish失敗 • Raidコントローラエラー発生事件
6.
• 利用用途の違いでKafkaのチューニングは どう変わるのか • 運用・性能面で困ったことを共有 話すこと
7.
Kafkaを使ったEventHubについて
8.
よくあるKafkaの使われ方 • ユーザーアクティビティログ・メトリクスの集約 => availability重視 •
イベントハブ(受け取ったデータをロストしないこと が最重要) => durabilityを重視
9.
よくあるKafkaの使われ方 • ユーザーアクティビティログ・メトリクスの集約 => availability重視 •
イベントハブ(受け取ったデータをロストしないこと が最重要) => durabilityを重視
10.
イベントハブとしてのKafka • 社内システム連携・メッセージングのための基盤
11.
イベントハブとしてのKafka • 社内システム連携・メッセージングのための基盤 サービス ニコ動/ニコ生とか Publisher 別システム 別サービスなど Subscriber
12.
イベントハブとしてのKafka • Publisherが直接1:Nで配信するのは大変 • 様々な温かみが生まれた歴史… •
各種サービスから情報を集約したいチームが出てきた 時に対応するコスト • 性能を各サービスでスケールさせるコスト
13.
イベントハブとしてのKafka • 社内システム連携・メッセージングのための基盤 サービス ニコ動/ニコ生など Publisher 他サービス メール通知など Subscriber
14.
イベントハブとしてのKafka • Kafkaを中心にしてデータを集約 • Kafkaのスケーラビリティにより、色々なサービスが情報 をsubscribe可能になる •
publisherのシステム的な都合にsubscriberが影響さ れない(密結合を防ぐ)
15.
現在のシステム • Scala/Play/akka • 運用開始から半年ちょっと •
Kafka 0.9(クラスタは一つ。まだあまり大きくない)
16.
現在のシステム • HTTPでイベントを受け取りKafkaへpublish • KafkaからsubscribeしHTTP/AMQPで通知 HTTP AMQP HTTP
17.
Protocol Buffers on
Kafka • イベントのシリアライザは • 社内システム間連携の基盤として、メッセージの 互換性を保障・調整する役割も担いたい • 互換性維持のやりやすさを考慮して採用 • grpcも併せて社内のデータ交換形式の統一をし ていきたい
18.
Kafkaの設定 • データを失わないことを重視 • Netflixの事例と方向性が異なる 項目名
default値 Netflix 設定値 acks 1 1 all replication.factor - 2 3 min.insync.replica 1 ? 2
19.
Kafkaの設定 その他の設定はpart1で紹介。 もっとチューニングしたいけど機能追加の兼ね合いがあるので隙を見てやっ ていきたい もっと詳細な情報 http://xuwei-k.github.io/slides/ kafka-matsuri/#34 clouderaの資料 http://www.cloudera.com/ documentation/kafka/latest/topics/ kafka_ha.html
20.
Kafka運用辛かった事例
21.
TopicAndPartition増大による 性能劣化 • partitionが増えるとPublish完了までの時間が悪化 • replication
factorにも依存 • レプリケーションが主な原因のようなので num.replica.fetchers などをチューニングする
22.
TopicAndPartition増大による 性能劣化 topicをたくさん作り、1topicにのみ100万件publishしたときのqps • グラフはHDDで計測したもの。SSDでも傾向自体は変化なし。 0 2000
4000 6000 8000 0100002000030000400005000060000 TopicAndPartiton qps
23.
TopicAndPartition増大による 性能劣化 • 現在はイベント頻度が高すぎないものに関しては partition数を1にして対処(必要に応じて増やす) • partition数の目安は1brokerあたり (100
* broker台数 * replication factor) 程度? (記事参照) 詳細 http://www.confluent.io/blog/how-to- choose-the-number-of-topicspartitions- in-a-kafka-cluster/
24.
TopicAndPartition増大による 性能劣化 • Netflixも抑えているが、そちらは可用性に関するチューニング? • 故障時のオーバーヘッドを減らす 企業
目安 参考元 confluent 2000~4000 partitions/broker 10K~ partitions/cluster http://www.confluent.io/blog/ how-to-choose-the-number-of- topicspartitions-in-a-kafka- cluster/ Netflix 200 broker/cluster 以下 10K partition/custer 以下 http://techblog.netflix.com/ 2016/04/kafka-inside- keystone-pipeline.html
25.
FullGC発生によるPublish失敗 • 負荷試験中に発生。 • メッセージサイズによる。(Kafka的には1KB程度が最も 性能がでてGCにも優しいらしい) •
Javaパフォーマンスに書いてあるようなことをひたすら やっていく。 clouderaの資料 http://www.cloudera.com/documentation/kafka/latest/ topics/kafka_performance.html 実際にやったチューニング http://xuwei-k.github.io/slides/kafka-matsuri/ #61
26.
RAIDコントローラエラー発生事件 • 突然Kafkaへのpublishがタイムアウトし始める • ログを見るとRAIDコントローラが再起動していた •
RAIDコントローラ再起動後のbrokerは正常に動作 • 最近の出来事で調査・対策の方針がまだ立ってい ない
27.
RAIDコントローラエラー発生事件 Event
28.
RAIDコントローラエラー発生事件 RAIDコントローラに 異常発生
29.
RAIDコントローラエラー発生事件 想定 RAIDコントローラに 異常発生
30.
RAIDコントローラエラー発生事件 in-sync replicaから離脱 想定
31.
RAIDコントローラエラー発生事件 残った2台でack 想定
32.
RAIDコントローラエラー発生事件 in-sync replicaのまま 現実
33.
RAIDコントローラエラー発生事件 in-sync replicaのまま 現実 acks=allを待って タイムアウト
34.
RAIDコントローラエラー発生事件 現実 しばらく経った後 RAIDコントローラ 再起動
35.
RAIDコントローラエラー発生事件 現実 3台でack しばらく経った後 RAIDコントローラ 再起動
36.
RAIDコントローラエラー発生事件 • min.insync.replica=2なので1台落ちてもpublish できるという想定だった。 • しかし「brokerがackを返せない状態」で「クラスタ から離脱しなかった」ため、「acks=all」の設定により publishできなかったと思われる •
brokerはzookeeperのハートビートには応答するが、 ackは返せないという状態になりうる?
37.
RAIDコントローラエラー発生事件 • acks=2はkafka 0.9からは出来なくなっている •
RAIDを使わない方針も考えられる? • RAID以外のエラーでも同じような現象は起きうる のか? • 自動で離脱しないなら、brokerを停止させる外部 機構が必要?
38.
RAIDコントローラエラー発生事件 • Netflixのようにcold standbyなクラスタを用意 するのはどうなのか、調子の悪いbrokerを停止さ せるだけでは不十分? •
再現できていないので仮説ベースな部分あり • 意見募集
39.
まとめ • 事例紹介 • 用途の違いを意識したチューニングが必要になる •
Netflixのようなavailabilityを重視 • イベントバスとしてdurabilityを重視 • 運用トラブルが起きる前に、confluent/linkedin/clouderaなど の資料は一通り目を通しておくと後悔が少ない。 • 実際の運用時の環境を想定した負荷試験をしてみる
Download now