Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache Kafka on Kubernetes 基礎編 ワークショップ QA 2021...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
suzukiry
November 30, 2021
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apache Kafka on Kubernetes 基礎編 ワークショップ QA 2021-11-24 / Apache Kafka Workshop QA 2021-11-24
suzukiry
November 30, 2021
More Decks by suzukiry
See All by suzukiry
OpenShiftの内部レジストリって何?/What's OpenShift Image Registry
suzukiry
1
1.9k
Strimzi Kafka Operator を試す Part 3 / Try Strimzi Part3
suzukiry
0
640
Apache Kafka on Kubernetes 基礎編 ワークショップ QA 2022-01-12 / Apache Kafka Workshop QA 2022-01-12
suzukiry
0
120
GitOps と Apache Kafka Part 1 / GitOps and Apache Kafka Part 1
suzukiry
0
330
Strimzi Kafka Operator を試す Part 2 / Try Strimzi Part2
suzukiry
0
390
Apache KafkaとKubernetes / Kafka and K8s
suzukiry
1
1.6k
Other Decks in Technology
See All in Technology
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
470
CIで使うClaude
iwatatomoya
0
290
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
0
220
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
4
1.5k
Kaggleで成長するために意識したこと
prgckwb
2
420
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
4k
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
230
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
150
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
290
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Technical Leadership for Architectural Decision Making
baasie
3
440
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
HDC tutorial
michielstock
2
750
Building Applications with DynamoDB
mza
96
7.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
The Curious Case for Waylosing
cassininazir
1
430
The agentic SEO stack - context over prompts
schlessera
0
850
Transcript
Apache Kafka on Kubernetes基礎編 ワークショップ QA 2021.11.24 分
Strimzi • Apache KafkaのクラスタをKubernetes上で管理するOperator ◦ オープンソースプロジェクト( Apache License 2.0) ◦
Cloud Native Computing Foundation (CNCF) • Strimzi で提供するもの: ◦ Apache Kafka, Connect, Zookeeper, MirrorMaker2 の コンテナイメージ ◦ Apache Kafka clusters, topics and users を管理するKubernetes Operators
QA
Note: 冪等性はありますか? • Kafkaと外部サービス(DBなど)とが接続する場合、冪等性を完全に保つことはでき ません。 ◦ メッセージの重複が発生する可能性があります *。 • Kafka
StreamsにはExactly Once Semantics (EOS)があります。 ◦ KIP-129: Streams Exactly-Once Semantics • よって、メッセージの重複検知の仕組みが必要。 ◦ ◦ EIPのIdempotent Consumerパターン ◦ Outboxパターン** Q. *O’Reilly, Designing Event-DriveSystems:Chapter 12: Transactions, but Not as We Know Them - What Can’t Transactions Do? **マイクロサービスとメッセージングのなぜ [疑問編]:https://rheb.hatenablog.com/entry/microservices_messaging_2
Kafkaにおける冪等性の関連設定 • Kafka Producer ◦ Kafka内のイベントの重複、順序性 *を保証する設定の追加 ▪ “enable.idempotence=true” ◦
Producerのゾンビプロセス対策として、ユニークなトランザクション IDを利用 ▪ “transactional.id” (default null) • Kafka Consumer ◦ Commitされたレコードのみを poll ▪ “isolation.level=read_commited” (default read_uncommited) • Kafka Streams ◦ Kafka Streams内のConsumer/Producerにトランザクション処理を行う設定の追加 ▪ “processing.guarantee=exactly_once” (default at_least_once) * Consumerの障害時には順序性は保証されなくなるので注意。
Note: Partition 0 Partition 1 Partition 2 Partition 3 Topic
T1 Consumer1 Consumer Group Consumer2 Consumer3 Consumer4 Partition 0 Partition 1 Partition 2 Partition 3 Topic T1 Consumer1 Consumer Group Consumer2 Consumer3 Consumer4 リバランシング 図 Consumer 追加変更・障害時のリバランシング • Consumer グループ内のConsumerの設定変更や障害があった場合、該当パー ティションをその他のConsumerが引き継ぎます。 • ConsumerリーダーとGroupCoordinatorの連携によって各Consumerへのパー ティション割り当てを行います。 リバランシングとは? Q.
リバランシングConsumer グループ • Consumer リーダー ◦ Consumer Groupに最初に参加したConsumerはリーダー。 ◦ Consumer
リーダーは、Group Coordinator(後述)と連携し、各Consumerに パーティションのサブセットを割り当てます。 ◦ 割り当て方には、パーティション割り当てポリシー(PartitionAssignor)が使われ ます。 ▪ Defaultポリシーには、RangeとRoundRobinとStickyAssignorがある。 ▪ 独自の割り当て戦略を実装することも可能。
リバランシングConsumer グループ • GroupCoordinator ◦ 各Consumerグループに対して、Kafka Brokerに一つ存在。 ◦ GroupCoordinatorは、各Consumerとハートビートを行い、死活監視を行う。 ◦
Consumerの離脱を検知した時、GroupCoordinatorは生きているConsumerの みのリストをConsumerリーダーに受け渡す。その後、Consumerリーダーを任せ れたConsumerが、グループ内のConsumerのアサインメントを決める(次の図)
新しいコンシューマが参加または離脱すると、パーティションを 再割り当てするリバランシングが行われている(Eager Rebalancing) リバランシング • 動作の流れ 参考:Consumer Group Internals: Rebalancing,
Rebalancing.... Coordinatorから リーダーを任されている 各Consumerへの アサインメントの決定 メンバーのハートビートが切れるとリバ ランスのステートへ
Note: Eager Rebalancing = Stop-the-world Rebalancing • Stop-the-world Rebalancing ◦
リバランシングが起きるとパーティションをリリースしないといけない(すべてのグループメンバーを 停止) ◦ 運用や障害時にこのリバランシングではコストが大きい ◦ 例: ▪ スケールアップ・ダウン ▪ Kubernetes プロセスダウン ▪ ローリングアップグレード/アップデート Note: • Incremental Cooperative Rebalancing ◦ 稼働しているプロセスやタスクはそのままに、リバ ランシングを行う。 ◦ まだデフォルト設定になっていないようなので、利 用時の設定方法は要確認。 KIP Applied to Released in KIP-429 Kafka Consumer 2.4.0 KIP-415 Kafka Connect 2.3.0 KIP-441 Kafka Stream 2.6.0 そこで Incremental Cooperative Rebalancing Note:
その他
AMQ Streams • Apache Kafka のエンタープライズ向けディストリビューション ◦ 2018年から Kafka をサポート、Kubernetes
上でも提供 ◦ Red Hat AMQ Streams としてローンチ • 提供形態 ◦ Red Hat Enterprise Linux ◦ Red Hat OpenShift Container Platform Apache Kafka on Kubernetes 基礎編 ワークショップ: https://redhat-open.connpass.com/ Strimzi/AMQ Streamsをハンズオンをしてみたい
Thank you