ααααΆααα½α, Habr!
αα
ααααα½αααΎαααΆα’αααααααΌααααααααΆααααααΆααααα
ααΆααααΈααααΆααα»αααααΈ
ααα ααααΈααααΆα
Kubernetes ααααΌαααΆααα ααΆα‘αΎαααΎααααΈαααααααααααααα»αααΆαααΆααααααααΆαααααα ααΆααααααΆ ααααα»αααΆαααΆαααααααααααΌαααΆααααα αΆααααα»αααααααααααααΆααααααααααΈααααΌααααΆαααα ααΆααΆαααααααααααΆα ααααΎααΆαααααααΆααααααααΆαααα’ α’αα»ααααααΆααααααΆααααααααααα·ααΈ 12-factor αα·αα’αΆα ααααΎααΆαααΆαα½αα§ααααααααααααααααΈ αα·αααααΆααΉαααα
αααααΆααα·αααα Kafka ααΎααα½ααΆααΌαααααΆααα·ααααααα ααα αΆαα ααΌα αααααα αααααααΎααΆαα’αααααααΌααααααααΆαααΆαα½αααααα αΎαααΆααΆααααααααααααααΆαααααΆααΈααααΌα Kubernetes ααΆααααααΆααααα»ααααα ααα»ααααααΌα ααα Kelsey Hightower α ααα’α»ααααα αΆααα αααα»αααααΈαααΈα αα½ααααα½αααααααΌαααΆααααααααΆαααααααα»αααααααααα
ααα»ααααα½αα ααα½αααΆαα’αΆααααααααΆ ααααα·αααΎα’ααααααα Kubernetes αα αααα»αααααα»αααΆαααΆααααααΆααααααααααα ααΆααΉαααααΆαααΆααΌαααααΆααα·αααααααααααααααααααααΆααααααααααααααααααΉα RDS α αααβααΊβαα»αα αααα ααααΆ ααααα·αααΎα’αααααααΉαααααααααααααααΆαα αααααααααΆαααΆαα»αααααα αα·αααΆααααΆααααα»ααα·ααααα SRE α’αααααΉαα’αΆα αααααΎα RDS αα ααΎ Kubernetes ααΆαα
αααα»ααααααααααΆαααΆα’ααααααααααααΆα’αα»ααααααΆααααα»αααααααααααααΆαααα αααααααΎαααΆαααααα»αααΆαααΆααα ααΎ Kubernetes α ααα»αααααΆαα αααΎαααααα½αααΆ "ααΎαααα»αα’αΆα ααααΎαααΆαααααα»αααΆαααΆααα ααΎ Kubernetes ααΆααα" αα·αααΆααααα·ααααααααααααααΆααααΆαα½α Kubernetes α αΎαααΆααΏααααΆαα½αααΉαααααα»αααΆαααΆαααααα½ααααααα»ααα½αα
ααΌα αααα ααΎα’ααααα½αααααΎαααΆα Kafka αα ααΎ Kubernetes αα? αααα½ααααααΆααα ααΎ Kafka ααΉαααααΎαααΆααααααΎαααΆαααΎααααΆα Kubernetes αα? αααα αΎαααΆααΌαα ααα»ααααααα»αα ααααΌααααααΆαααα αααα»αα’ααααααααα’αααΈααααααα Kafka αα·α Kubernetes αααααααααΆαα αα·ααα αα α αΎαααΎααΆαααααΆαα’αααΈααααα’αΆα ααααΆαα½αααΆααααα αΌαααααΆαααΆααα½αααα
αααααααΆααααΆααααα αα
α αΌααα·ααΆαα’αααΈααΏαααΆααΌαααααΆα - ααα·ααΆααΆααααααααΎαααΆαααααααα½αα―αα
ααααΎαααΆα
αααα½ααααααΆα Kafka ααΊααΆααααα½αααααΎ CPU α TLS α’αΆα ααααΆαα’αααΈααΆαα αααΆαααΎααα½αα ααα½αα αααααΆαααΆαααΆααααα α’αα·αα·αα Kafka αααα ααααΆαααΈααΈααΌα αααΎα ααααα·αααΎαα½αααααααΎααΆαα’αα·αααααΈα ααα»ααααααΆαα·ααααααΆααααααααα½ααααααΆαααα
α’αααα αα αΆα
αααα½ααααααΆα Kafka αααΈααΆαα αα αΆαα ααα ααααα»α JVM ααΆααααααΆααααΌαααΆααααααααααΉα 4-5 GB ααα»ααααα’αααααααΉαααααΌαααΆαα’αααα αα αΆαααααααααα αααΎαααααα α αΆααααΆααααΈ Kafka ααααΎααααΆαααααααΆααααααααααΆαααααΆααα αα αααα»α Kubernetes αααααααααΆααα»αααΊααα αα·αααααααααααααΎααααααΆαα
ααααΆαααααα»ααα·αααααα
ααΆααααα»ααα·αααααααα
αααα»ααα»αααΊαααααΊααΆαααΆαα
ααααΌαα
ααααα - αα·ααααααααααΌαααΆαααΆααααααα
αααα
αΆααααααΎαα‘αΎααα·αα αααααΆαααα·αααααα Kafka α’αααα’αΆα
ααααΎααααα·αααα‘αα emptyDir
α αΎαα₯αααα·ααααΉαααααααααααΆα αα·αααααααααα½ααααααΆαααααα’αααααΉαααΆααααααααααΆααααΈαααα
ααα ααΆαααααα’ααααα
ααα’αΆα
ααααΌαααΆααααααΆαα»ααα
ααΎαααα½ααααααΆαααααααααααΆααΆαα
ααααα ααΌα
αααααααααΆααααΈααΆαα
αΆααααααΎαα‘αΎααα·α αααα½ααααααΆαααααααΆαααααααΌαααα
αααααα·ααααααααΆααα’ααααΆαα»ααα·α α αΎαααααΎαααΆααααα’αΆα
α
αααΆααααα
αααΎαα
αααααΆααΌαα ααα»αααα’ααααα½αααααααΎααΆααααα»ααα·αααααααααααααααα α’αα»ααααΆαα±ααααΆααΆααΆααααα»ααααααααααααααα·ααααααΆααΌαααααΆαααΆαα½αααααααααα―αααΆα XFS α¬α
αααΆααααΆαααααα
ααα ext4 α αα»αααααΎ NFS α αααα»αβαααααΆαβα’αααα αααα NFS v3 α¬ v4 ααΉααα·αααααΎαααΆαααα ααα»ααα αααα½ααααααΆα Kafka ααΉαααΆααααααα·αααΎααΆαα·αα’αΆα
αα»ααααα·ααααααααΆααα αααααΆααααα αΆ "ααααΌααααααααααα" αα
αααα»α NFS α ααααα·αααΎαααα»ααα·αααΆααααΆααααα
α»ααααα
αΌαα’ααααα
α‘αΎααα ααΌααααα»ααααααααααααα»αα
αααααΆα
ααΌα αα ααΉαααααααααα ααα αΆαααΆαα αααΎαααα ααΆαα’αα»αααααααα Kafka ααΊααΉαααα’αααααΆαααααΆαααα ααΎααΆααααααΆααΆαααΊααααααααΆααα α’αααααααΆ αα·αααααα·ααααααΌααααα’αα·ααααΆα αα»αααααΆααΆαααααΎααΆααα αΆαααααααααα½ααααααΆαααΆααα’αααα ααΎααααΆααααΌα ααααΆαααααααΆααΉαααΆαααααααααΆαα’αΆα ααααΆαα ααααα·αααΎααααΆαα Kubernetes αααΆααα α ααααα Kafka ααΆααααΌαααΉααααΆαααα ααΌα ααααΆαααααααα αα»ααααααα ααααα Kafka αα ααΌααΆααααααααααααα·ααααααααΆααααΌαα ααΌα ααααΆαααα ααααα ααααα Kubernetes α ααΆααααααααααα½αααααα’αααα»αααααΈαααααΊααααΎαααΎαααααααααα’αΆα ααααΆααα»ααααααΆα
ααΆααααααβαα ααΆαααααααα
ααΆααααα αΆαααΆαααααΆαα
ααα ααααα Kubernetes ααΆα
- ααααααα ααααΊααΆα―αααΆαααα’αΆα ααΆαααααααΆαααΆαααΌα αααα»ααα αααα»α Kubernetes α ααααΆααααα»αααααα»αααΆαααΆαααααα’ααα α αΎαααααααΆααααααΌαααΉαααααΎαααΆααα αααα»αα αααααααααα’αααα ααααΆααα»ααα½α α¬α αααΎαα αααΆαααΈααα ZooKeeper ααΈαα½αααα αααα»ααααα»α α αΎααααα½ααααααΆαααΈαα½αααα αααα»αα ααααα Kafka ααΉαααααΎαααΆααα αααα»αααααΆα ααααα‘αααα½αα
- αααα»αβααααα StatefulSet ααΊααΆααααα» Kubernetes ααααααααααααααααα»αααΆαααΆααααααΆαααααα αααΎα α αΎαααααα»αααΆαααΆαααααααααΆαααΆαααΆααααααααααα½αα StatefulSets αααααααΆαααΆααΆααΆααααααΉαααΆααααααΆαα·ααα αα·αααΆααααααααααααΆα
- ααααΆααααααααΆαααααΆαα ααααΆααααα’αα»ααααΆαα±ααα’ααααα pods α ααααΈα’αα·αα·αααααααααΎαααααα‘αΌααΈααα Kubernetes αααα»αααααΈαααααα½ααα»αααααΌαα αααααα»αααααΆαααααα»αα αααααΆαααΆαααΆααααα αα αααααααΎαααΆαααααα»αααΆαααΆααααααΆααααΆαααΌα ααΆ ZooKeeper αα·α Kafka α’αα·αα·ααααααΌαααΆααααααΆαα½αα§ααΆα αααααΆααααΆαααα½αα αααααΊααΆαααααααααααααΆααααΆαααααΆαααααΆααααα½αα αααα»αααααΈαααα’αα·αα·ααααΉααα ααααΆααααααα‘αΌααΈαα ααα»ααααα’αααααΉααα·αα αΆαααΆα αααΆαααααααααααααΆααααα
- ααα·ααΆααααα»ααααααααααα ααα·ααΆαααΆαααααααΊα αΆαααΆα αααΎααααΈααααααα ααΆααααααααααΆααααα»αααΆααααΆαααααα»αααααα·ααααααΆααΌαααααΆααααααΆααααααΆααααΆαααΎα
αα
ααΎ
ααΆααΆααα½ααα»ααααα·ααΆα
Helm ααΊααΆαααααα·ααΈααααααααααααα
αααααααΆαα Kubernetes αααα’αΆα
αααααααααα
ααΉααααααα·ααΈααααααααααααα
αα OS ααΌα
ααΆ yum, apt, Homebrew α¬ Chocolatey α ααΆααααΎα±ααααΆαααΆαααΆααααα½ααααα»αααΆαααα‘αΎααααα
αααααααα·ααΈαααααΆααααααααΆαα»ααααααΆααα·αααααΆαα
αααα»αααΆααΆα Helm α ααααΌαααΆα Helm αααααΆαααααΎαααΎααααΆαααα’ααααΎα±αααα·α
αα
ααΆαααααααΆαααααααααααααααΆαααΆααααααααΆααα’ααα±ααααΆαααααΉαααααΌαααΎααααΈααααΎ Kafka αα
ααΎ Kubernetes ααΆααααα½αα ααΆαααααΆααααΆα Kafka ααΆα
αααΎαα ααααααααααΌαααΆαααΆαααΈααΆαααα
ααααα·ααααα·αα
αααααΆααα Helm ααΆαα ααα»α ααααααΆααα½αα ααα½α α§ααααααα½ααααααααααααα»αααα½αααΆααααααΆαααα·αααΆααααΆαααααΆααα ααααα·ααααα·αα Kubernetes α ααααα·ααααα·αααα·αααααΉααααααα ααααα αααααααα·ααΈαααααΆαα Kubernetes ααα»ααααααα ααα»αααααααααΆααα’αα»ααααΆαα±ααα’αααααααΎααααΆαααααααα·ααΈαααααα αα·ααααααααααααΆααΆααααααα
αα
αααα»ααααααΈ
ααα·αααΆα
ααΆααΆαααΆααααααΆααααΆαααααα»αααΆαααΆαααααααααΎαααΆααααααααΎααΆαααααααααα§ααΆα ααα Kafka ααααα’αααα ααΆαααααΎαααααααααααααΉααα½αα’αααααααΎαααΆααααααααααΆαα»αααα»ααααααΆααααα αΆααΎαα‘αΎαα ααΆααααΆαααα’ Kafka αααααα§αααααααΆαααααααααΎαααΆαααΈααα½α
α αΎαα kafka-producer-perf-test.sh
ΠΈ kafka-consumer-perf-test.sh
. ααααΎαα½αααΆαααΆααααααα αααααΆααααΆα―αααΆαααα α’αααα’αΆα
ααααα
ααΎαααααααααααΆααα·αααααΆαα
αααα»α
ααααα·ααααα·ααΆα
ααΆααααα½ααα·αα·ααα
αααααΆααΆααα αααα»αααααααααααΊααΆαααΆααααααΆααααααΆααααΆαα - ααΎαα·αααΌα ααααααα’αααααΉααα·ααααααΈα’αααΈααααααα»αααΎαα‘αΎααα αααα»αααΆααα ααααβααααβαααβααΆαβαααα ααβα§αααααβααΉαβαα½αβαααβαααααβααΆαβαααα½αβαα·αα·αααβααα’ααβααΆαβααααααβαααα»αβαα ααΆαααααβααΎαβααβαααα α§αααααααααα·ααααΈααααααΆααααααααααααααΊ Prometheus αα·α Grafana α Prometheus α’αΆα αααααΌαααααααααΈααααΎαααΆα Java ααΆααα’αα (Kafka, Zookeeper, Kafka Connect) αααααααΎα§αααααααΆαα αα JMX - ααΆααα·ααΈααΆαααααααα»αα ααααα·αααΎα’ααααααααααααααα cAdvisor α’αααα’αΆα αααααΆααααα αααΆααα’αααΈαααααααααααΆαααααΌαααΆαααααΎααααΆαααα αααα»α Kubernetes α
Strimzi ααΆαα§ααΆα αααααααΆααααα½αααααααΆααααααααααα Grafana αααααΆαα Kafka α ααΆβααΎαβααΎαβααααααβααααΆααα α§ααΆα αααβα’αααΈβαααααβαααβαα·αβααΆαβα αααα α¬βαααααβαααβααααΆαβα’ααΈαααΊαα·αα α’αααΈααααααααΆαααΊα αααΆααααΆαααα ααΈαααα ααααααααΆαααααααααΌαααΆαααααααααααααααααΆαααααΎααααΆααααααΆα αα·αααααααΆαα’αααΈααΆαα’αα»αααα ααααΌα ααΆααΌα ααΆαααααααααΆαα ααΌα ααααβα’αααβααα½αβααΆαβααΆαβαααα½ααα·αα·αααβα ααααα Kafka ααΌαααααΆαβαααβααααΆαβα’αααΈβααα!
ααααα:
ααΆααΆααΆαααα’αααα»αααΆααααααααααααααΆααα’αααααααΆαα½αααΉαααΆααααα½ααα·αα·αααα’αα·αα·αα (αααααααα
ααΎα’αααααααΎααααΆαα αα·αα’αααααα·α) ααααΌα
ααΆααΆααααα½ααα·αα·αααααΆαααΊααααΆα (αααααΆααααΆααΆα
ααΆαααΆααααΎ
ααΆααααααααΆααΊααΆαα·α
αα
ααΆαααααΆαααα½ααααα ααααΌαααααΆααααΆαα»αααΆααα’αααα
αααα»αααΆαααα‘αΎα Kafka ααααα’αααααααΌαααΆαα
αΌα stdout
ΠΈ stderr
α αΎαααααΌαααααΆααααΆ α
ααααα Kubernetes ααααα’ααααααααΌααααα»ααααααα ααα»ααΆααα’αααα
αααα»αα αααααΆαα
ααΆααααααααααααΆααααααααΆαααααΆα α§.
ααΆααααα½ααα·αα·ααααα»αααΆα
Kubernetes ααααΎααΆααααΎαα’αααααααΆαααααααΎα αα·αααΆαααααααααα½αααΎααααΈαα·αα·αααααΎαααΆααΎααααααα’ααααααα»αααααΎαααΆαααααααΆα ααααα·αααΎααΆααααα½ααα·αα·αααααΆαααααααΎααααΆααα Kubernetes ααΉααααααααα»αααΊαααααα α αΎααααααΆααααα αΆααααααΎαααΆα‘αΎααα·ααααααααααααααααα· ααααα·αααΎαααααΆαααα αΆααααααΎαα‘αΎααα·αααααΌαααΆααααααααααααΆααααα ααααα·αααΎααΆααααα½ααα·αα·αααααΆαααααααααα½ααααΆααα Kubernetes ααα pod α ααααΈααααΎααααΆααααα ααΌα αααα αααα»αααααΈαααααα ααΆαα’αααααΆαααααααααααΊαααααααΌαααΆααααα αΎα αααααΆααΆαααΌααααα½αα
αααα»αα ααααααΆααα αα α»ααααααααΆα
StatefulSets ααΆααααααΆαααααΎαα αα α»ααααααααΆααααααααααααααααα·α ααααα·αααΎα’αααααααΎαααΎααα»αααααΆααααα RollingUpdate ααΈαα½αααα ααααα Kafka ααΉαααααΌαααΆαα’αΆαααααααΆαααα ααΆααα·ααΈααα αααααααΆααα αΆαα’αΆα ααααΌαααΆαααΆαααααααααααααΉαααΌαααα
ααΆαααααΎααΆαααααααΆα
ααΆαααααΎααΆαααααααΆαα ααααα Kafka αα·ααααααΆαα·α αα ααΆαααΆααααα½ααααααα αααααΆαααΆαααΆααααα Kubernetes ααααΎα±ααααΆααΆαααΆαααΆααααα½ααααα»αααΆαααααΎααΆαααααααΆα pods αα ααΉαα ααα½αααΆααααΆααααααΆαα αααα αααααΆααααααΆα’αααα’αΆα ααααααααΆαα αααΆααααΌααααα½ααααααΆα Kafka ααΆα αααΎαααΆααααα’αααα αΌαα α·αααα α’αααΈααααα·ααΆααααα»ααααα»αααααΈαααααΊααΆαα αΆααααΆαααααααα‘αΎααα·ααααααΆααααΈααααΎααΆαααααααΆαα‘αΎαααΎ α¬αα»ααααααααΎααΆαααααααΆαα α»ααααααα ααΆααααΈααααααα Kubernetes ααΉααα½αα’ααααααα»ααα·α αα ααΆααααα
ααααααΆα
αα·α αα ααΆααααααΆααααααΉαααΆααααααααααα ααααα Kafka ααααα’ααα ααΌα ααΆααΆααααααΎααααααΆααα αα·αααΆαα αΆααααΆαααααααα‘αΎααα·α α’αΆα ααααΌαααΆαα’αα»αααααααααααΎααααααΈαααααααααΆαααααΆαααααααΎαα ααα»α αααααΆαααααααΆααααΆααααααααΆαα αααα»αααααααααα’αααα αααααΆαααΆαααΆααααααααααααααΆααααααΊαα·ααααααααα’αΆαααααΆααααΆααα Strimzi ααΆααααααΆαααααααααααααααΆααααααααααΎααααα·ααααα·αααααααα ααΆααααααααααααααααΆαααααααα’αα ααΈαααα
Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΈΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
α₯α‘αΌααααααΆαα’αΆα
ααααΆααα Kafka ααα’αΆαααααααΎααΆαα’αΆα
ααααΆααα Kubernetes αααααα ααααα·αααΎα
ααααα Kubernetes ααααα’ααααααΆααα ααααα
αααα»αααααΆααΈαααΌααα’αΆααααααααα»α α
ααααα Kafka ααααα’αααααααΉααααΆααααααα ααααα
ααΆαα
αααΆαααααα Murphy ααααα·αααΆααΉαααΎαα‘αΎα α αΎαα’αααααΉαααΆααααααα·ααααααα ααΎααααΈααΆαααααααα αΆαα·αααααααααααα ααΆααααα·αααααα»ααα»αααααα’α α’αααα’αΆα
ααααΎ MirrorMaker αααααΎααα½ααααααΊααααΎ S3 αααααΆααααΏαααα ααΌα
αααααΆααα·αααααΆαα
αααα»ααααα
ααα ααααΈααααα·ααααΆα
αα
αααααααΎααΆαααΆαα½αα
ααααα Kafka ααααΆαααΌα
αα
ααααα ααΆαα·αααΆααΆαααααααααα»αααΆαααααΎ Kubernetes αααααααΆαααααααΌαααΆααααααααααααα αα·αααααα½ααααα·αααααααααα·ααααα·ααα ααααα·αααΎα’αααααΆα latency αα·αααααΎαααΆα αα·α/α¬ αααααΌαααΆααααααΌαααααααααααΆαα αααααΆαααα ααααΆααα’ααΆααααα»αααΆααα·α
αΆαααΆααΈαααααΎαααααΆαααΆαααααααΆαααααααααα
ααααα: www.habr.com