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
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
AICoEでAIネイティブ組織への進化
yukiogawa
0
200
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
290
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
570
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
130
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
1
720
Kaggleで成長するために意識したこと
prgckwb
2
420
AIが当たり前の組織で エンジニアはどう育つか
nishihira
0
110
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
430
kaonavi Tech Night#1
kaonavi
0
110
Type-safe IaC for Dart
coborinai
0
160
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
440
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
430
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Building Adaptive Systems
keathley
44
3.1k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
First, design no harm
axbom
PRO
2
1.2k
Navigating Team Friction
lara
192
16k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
The Spectacular Lies of Maps
axbom
PRO
1
860
Deep Space Network (abreviated)
tonyrice
0
230
BBQ
matthewcrist
89
10k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
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