ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π‘ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Apache Cassandra ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π΅Ρ‘ эксплуатации Π² Ρ€Π°ΠΌΠΊΠ°Ρ… инфраструктуры Π½Π° Π±Π°Π·Π΅ Kubernetes ΠΌΡ‹ сталкиваСмся рСгулярно. Π’ этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ подСлимся своим Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… шагов, ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Π·ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²) для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Cassandra Π² K8s.

Β«ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΆΠ΅Π½Ρ‰ΠΈΠ½ΠΎΠΉ, справится ΠΈ с государством»

ΠšΡ‚ΠΎ ΠΆΠ΅ такая Cassandra? Π­Ρ‚ΠΎ распрСдСлСнная систСма хранСния, прСдназначСнная для управлСния большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ этом ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ вряд Π»ΠΈ нуТдаСтся Π² Π΄Π»ΠΈΠ½Π½ΠΎΠΌ прСдставлСнии, поэтому ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ лишь основныС особСнности Cassandra, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

  • Cassandra написана Π½Π° Java.
  • Вопология Cassandra Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ:
    • Node β€” ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ экзСмпляр Cassandra;
    • Rack β€” Π³Ρ€ΡƒΠΏΠΏΠ° экзСмпляров Cassandra, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ, находящаяся Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅;
    • Datacenter β€” ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСх Π³Ρ€ΡƒΠΏΠΏ экзСмпляров Cassandra, находящихся Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅;
    • Cluster β€” ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСх Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ².
  • Для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠ·Π»Π° Cassandra ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IP-адрСс.
  • Для быстроты ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ чтСния Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Cassandra Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ β€” ΠΊ собствСнно ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Ρƒ Π² Kubernetes.

Check-list для пСрСноса

Говоря ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Cassandra Π² Kubernetes, ΠΌΡ‹ надССмся, Ρ‡Ρ‚ΠΎ с ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΅ΠΉ станСт ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅. Π§Ρ‚ΠΎ для этого потрСбуСтся, Ρ‡Ρ‚ΠΎ Π² этом ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚?

1. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для Π΄Π°Π½Π½Ρ‹Ρ…

Как ΡƒΠΆΠ΅ ΡƒΡ‚ΠΎΡ‡Π½ΡΠ»ΠΎΡΡŒ, Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Cassanda Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти β€” Π² Memtable. Но Π΅ΡΡ‚ΡŒ ΠΈ другая Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, которая сохраняСтся Π½Π° диск, β€” Π² Π²ΠΈΠ΄Π΅ SSTable. К этим Π΄Π°Π½Π½Ρ‹ΠΌ добавляСтся ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Commit Log β€” записи ΠΎΠ±ΠΎ всСх транзакциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° диск.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
Π‘Ρ…Π΅ΠΌΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ записи Π² Cassandra

Π’ Kubernetes ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… PersistentVolume. Благодаря ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Kubernetes с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π³ΠΎΠ΄ΠΎΠΌ становится всё ΠΏΡ€ΠΎΡ‰Π΅.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ pod’у с Cassandra ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ свой PersistentVolume

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Cassandra сама ΠΏΠΎ сСбС ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, прСдлагая для этого встроСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ собираСтС кластСр Cassandra ΠΈΠ· большого числа ΡƒΠ·Π»ΠΎΠ², Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… распрСдСлСнныС систСмы Π²Ρ€ΠΎΠ΄Π΅ Ceph ΠΈΠ»ΠΈ GlusterFS. Π’ этом случаС Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° дискС ΡƒΠ·Π»Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… пСрсистСнтных дисков ΠΈΠ»ΠΈ монтирования hostPath.

Π”Ρ€ΡƒΠ³ΠΎΠΉ вопрос, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ feature-Π²Π΅Ρ‚ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ этом случаС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» Cassandra, Π° Π΄Π°Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² распрСдСлСнном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚.Π΅. упомянутыС Ceph ΠΈ GlusterFS станут вашСй ΠΎΠΏΡ†ΠΈΠ΅ΠΉ. Π’ΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π½Π΅ потСряСт тСстовыС Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² Kuberntes-кластСра.

2. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π±Π΅Π·Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² Kubernetes являСтся Prometheus (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΡ‹ ΠΎΠ± этом рассказывали Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅). Как Π΄Π΅Π»Π° Ρƒ Cassandra с экспортСрами ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ для Prometheus? И, Ρ‡Ρ‚ΠΎ Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π³Π»Π°Π²Π½Π΅Π΅, с подходящими ΠΊ Π½ΠΈΠΌ dashboard’ами для Grafana?

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ внСшнСго Π²ΠΈΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Grafana для Cassandra

ЭкспортСров всСго Π΄Π²Π°: jmx_exporter ΠΈ cassandra_exporter.

ΠœΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ для сСбя ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. JMX Exporter растСт ΠΈ развиваСтся, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Cassandra Exporter Π½Π΅ смог ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сообщСства. Cassandra Exporter Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ вСрсий Cassandra.
  2. МоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ javaagent ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ добавлСния Ρ„Π»Π°Π³Π° -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. Для Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΉ dashboad, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСсовмСстим с Cassandra Exporter.

3. Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Kubernetes

Богласно Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ структурС кластСра Cassandra, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ пСрСвСсти всё, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ описано, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Kubernetes:

  • Cassandra Node β†’ Pod
  • Cassandra Rack β†’ StatefulSet
  • Cassandra Datacenter β†’ ΠΏΡƒΠ» ΠΈΠ· StatefulSets
  • Cassandra Cluster β†’ ???

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сущности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ всСм кластСром Cassandra сразу. Но Ссли Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅Ρ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ! Π’ Kubernetes для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния собствСнных рСсурсов β€” Custom Resource Definitions.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
ОбъявлСниС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов для Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ

Но сам ΠΏΠΎ сСбС Custom Resource Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚: вСдь для Π½Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Kubernetes-опСратора…

4. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ pod’ов

ΠŸΡƒΠ½ΠΊΡ‚ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ согласились, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» Cassandra Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΌΡƒ pod’у Π² Kubernetes. Но IP-адрСса Ρƒ pod’ов ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. А идСнтификация ΡƒΠ·Π»Π° Π² Cassandra происходит ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° основС IP-адрСса… ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ удалСния pod’а кластСр Cassandra Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² сСбя Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ·Π΅Π».

Π’Ρ‹Ρ…ΠΎΠ΄ Π΅ΡΡ‚ΡŒ, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½:

  1. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вСсти ΡƒΡ‡Π΅Ρ‚ ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ хостов (UUID’ам, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ экзСмпляры Cassandra) ΠΈΠ»ΠΈ ΠΏΠΎ IP-адрСсам ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ это всё Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ структурах/Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Π£ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π²Π° основных нСдостатка:
    • Риск возникновСния условия Π³ΠΎΠ½ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ сразу Π΄Π²ΡƒΡ… ΡƒΠ·Π»ΠΎΠ². ПослС поднятия ΡƒΠ·Π»Ρ‹ Cassandra ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΉΠ΄ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ для сСбя IP-адрСс ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ рСсурс.
    • Если ΡƒΠ·Π΅Π» Cassandra потСрял свои Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΡ‹ большС Π½Π΅ смоТСм Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
  2. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ каТСтся нСбольшим Ρ…Π°ΠΊΠΎΠΌ, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Service с ClusterIP для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Cassandra. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:
    • Если Π² кластСрС Cassandra ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π»ΠΎΠ², Π½Π°ΠΌ придСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Service’ов.
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ClusterIP Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· iptables. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ссли Π² кластСрС Cassandra ΠΌΠ½ΠΎΠ³ΠΎ (1000… ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 100?) ΡƒΠ·Π»ΠΎΠ². Π₯отя балансировка Π½Π° Π±Π°Π·Π΅ IPVS способна Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.
  3. Π’Ρ€Π΅Ρ‚ΡŒΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΡƒΠ·Π»ΠΎΠ² Cassandra ΡΠ΅Ρ‚ΡŒ ΡƒΠ·Π»ΠΎΠ² вмСсто Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ сСти pod’ов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ настройки hostNetwork: true. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ограничСния:
    • На Π·Π°ΠΌΠ΅Π½Ρƒ ΡƒΠ·Π»ΠΎΠ². НуТно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π» Ρ‚ΠΎΡ‚ ΠΆΠ΅ IP-адрСс, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ (Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ… Π²Ρ€ΠΎΠ΄Π΅ AWS, GCP это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ);
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ΅Ρ‚ΡŒ ΡƒΠ·Π»ΠΎΠ² кластСра, ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° сСтСвыС рСсурсы. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» кластСра Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ pod’а с Cassandra Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ.

5. Бэкапы

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Cassandra ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ. Kubernetes прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с использованиСм CronJob, Π½ΠΎ Ρ‚ΡƒΡ‚ ΠΏΠ°Π»ΠΊΠΈ Π² колСса Π½Π°ΠΌ вставляСт сама Cassandra.

Напомню, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Cassandra Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² памяти. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ бэкап, Π½ΡƒΠΆΠ½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· памяти (Memtables) пСрСнСсти Π½Π° диск (SSTables). Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΠ·Π΅Π» Cassandra пСрСстаСт ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ соСдинСния, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‚Ρ‹ кластСра.

ПослС этого снимаСтся бэкап (snapshot) ΠΈ сохраняСтся схСма (keyspace). И Ρ‚ΡƒΡ‚ выясняСтся, Ρ‡Ρ‚ΠΎ просто бэкап Π½Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π°Π΅Ρ‚: Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π» ΡƒΠ·Π΅Π» Cassandra, β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
РаспрСдСлСниС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π·Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ ΡƒΠ·Π»Ρ‹ Cassandra

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта для снятия бэкапа Cassandra ΠΎΡ‚ Google Π² Kubernetes ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ этой ссылкС. ЕдинствСнный ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скрипт Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚, β€” это сброс Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΠ·Π΅Π» ΠΏΠ΅Ρ€Π΅Π΄ снятиСм snapshot’а. Π’ΠΎ Π΅ΡΡ‚ΡŒ бэкап выполняСтся Π½Π΅ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния, Π° состояния Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π½Π΅Π΅. Но это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΠ·Π΅Π» ΠΈΠ· Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ видится ΠΎΡ‡Π΅Π½ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ.

set -eu

if [[ -z "$1" ]]; then
  info "Please provide a keyspace"
  exit 1
fi

KEYSPACE="$1"

result=$(nodetool snapshot "${KEYSPACE}")

if [[ $? -ne 0 ]]; then
  echo "Error while making snapshot"
  exit 1
fi

timestamp=$(echo "$result" | awk '/Snapshot directory: / { print $3 }')

mkdir -p /tmp/backup

for path in $(find "/var/lib/cassandra/data/${KEYSPACE}" -name $timestamp); do
  table=$(echo "${path}" | awk -F "[/-]" '{print $7}')
  mkdir /tmp/backup/$table
  mv $path /tmp/backup/$table
done


tar -zcf /tmp/backup.tar.gz -C /tmp/backup .

nodetool clearsnapshot "${KEYSPACE}"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ bash-скрипта для снятия бэкапа с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Cassandra

Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Cassandra Π² Kubernetes

Π§Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для разворачивания Cassandra Π² Kubernetes ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠ· этого большС всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ трСбования?

1. РСшСния Π½Π° Π±Π°Π·Π΅ StatefulSet ΠΈΠ»ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚ΠΎΠ²

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ StatefulSets для запуска кластСра Cassandra β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚Π° ΠΈ шаблонов Go ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π³ΠΈΠ±ΠΊΠΈΠΉ интСрфСйс для разворачивания Cassandra.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎβ€¦ ΠΏΠΎΠΊΠ° Π½Π΅ случится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Ρ…ΠΎΠ΄ ΡƒΠ·Π»Π° ΠΈΠ· строя. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ срСдства Kubernetes просто Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ всС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ особСнности. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² Ρ‚ΠΎΠΌ, насколько ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ для Π±ΠΎΠ»Π΅Π΅ слоТного использования: Π·Π°ΠΌΠ΅Π½Ρ‹ ΡƒΠ·Π»ΠΎΠ², Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования, восстановлСния, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ Ρ‚.Π΄.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ:

Оба Ρ‡Π°Ρ€Ρ‚Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ описанным Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ.

2. РСшСния на базС Kubernetes Operator

Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ интСрСсны, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ кластСром. Для проСктирования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Cassandra, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ выглядит ΠΊΠ°ΠΊ Sidecar <-> Controller <-> CRD:

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Cassandra Π² Kubernetes: особСнности ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
Π‘Ρ…Π΅ΠΌΠ° управлСния ΡƒΠ·Π»Π°ΠΌΠΈ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ спроСктированном ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Cassandra

Рассмотрим ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

1. Cassandra-operator ΠΎΡ‚ instaclustr

  • GitHub
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ: Alpha
  • ЛицСнзия: Apache 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°: Java

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, которая ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ управляСмыС развСртывания Cassandra. Он, ΠΊΠ°ΠΊ ΠΈ описано Π²Ρ‹ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ sidecar-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‡Π΅Ρ€Π΅Π· HTTP. Написан Π½Π° Java, поэтому ΠΈΠ½ΠΎΠ³Π΄Π° Π΅ΠΌΡƒ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ client-go. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Racks для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Datacenter.

Π—Π°Ρ‚ΠΎ Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ»ΡŽΡΡ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, высокоуровнСвого управлСния кластСром ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CRD ΠΈ Π΄Π°ΠΆΠ΅ докумСнтация ΠΏΠΎ ΡΠ½ΡΡ‚ΠΈΡŽ бэкапов.

2. Navigator ΠΎΡ‚ Jetstack

  • GitHub
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ: Alpha
  • ЛицСнзия: Apache 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°: Golang

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для развСртывания DB-as-a-Service. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: Elasticsearch ΠΈ Cassandra. Π˜ΠΌΠ΅Π΅Ρ‚ Π² сСбС Ρ‚Π°ΠΊΠΈΠ΅ интСрСсныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· RBAC (для этого поднимаСтся свой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ navigator-apiserver). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ стоило Π±Ρ‹ ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» сдСлан ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, Ρ‡Ρ‚ΠΎ явно сниТаСт Π΅Π³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π».

3. Cassandra-operator ΠΎΡ‚ vgkowski

  • GitHub
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ: Alpha
  • ЛицСнзия: Apache 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°: Golang

Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Β«Π²ΡΠ΅Ρ€ΡŒΡ‘Π·Β» Π½Π΅ стали, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±Ρ‹Π» большС Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π°: послСдняя вСрсия Kubernetes, заявлСнная ΠΊΠ°ΠΊ поддСрТиваСмая, β€” это 1.9.

4. Cassandra-operator ΠΎΡ‚ Rook

  • GitHub
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ: Alpha
  • ЛицСнзия: Apache 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°: Golang

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ быстро, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹. Π˜ΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΡƒΡŽ структуру CRD для управлСния кластСром, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΡƒΠ·Π»ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Service с ClusterIP (Ρ‚ΠΎΡ‚ самый Β«Ρ…Π°ΠΊΒ»)… Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ это всё. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ бэкапов ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ сСйчас Π½Π΅Ρ‚ (кстати, Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΌΡ‹ взялись сами). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ScyllaDB.

NB: Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с нСбольшими Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ ΠΌΡ‹ использовали Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π° всС врСмя эксплуатации (~4 мСсяца Ρ€Π°Π±ΠΎΡ‚Ρ‹) Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ.

5. CassKop ΠΎΡ‚ Orange

  • GitHub
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ: Alpha
  • ЛицСнзия: Apache 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°: Golang

Π‘Π°ΠΌΡ‹ΠΉ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² спискС: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» сдСлан 23 мая 2019 Π³ΠΎΠ΄Π°. Π£ΠΆΠ΅ сСйчас ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм арсСналС большоС количСство Ρ„ΠΈΡ‡ ΠΈΠ· нашСго списка, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ построСн Π½Π° Π±Π°Π·Π΅ популярного operator-sdk. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ». Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² являСтся использованиС ΠΏΠ»Π°Π³ΠΈΠ½Π° CassKop, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ Cassandra.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² пСрСноса Cassandra Π² Kubernetes Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ само Π·Π° сСбя: Ρ‚Π΅ΠΌΠ° вострСбована.

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° свой страх ΠΈ риск: Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ 100%-ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ своСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² production-срСдС. Но ΡƒΠΆΠ΅ сСйчас ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ выглядят ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² стСндах для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π”ΡƒΠΌΠ°ΡŽ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ эта ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π° Π½Π° ΠΊΠΎΡ€Π°Π±Π»Π΅ придСтся ΠΊ мСсту!

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com