ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช

ืื ื• ื ืชืงืœื™ื ื‘ืงื‘ื™ืขื•ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ Apache Cassandra ื•ื‘ืฆื•ืจืš ืœื”ืคืขื™ืœ ืื•ืชื• ื‘ืชื•ืš ืชืฉืชื™ืช ืžื‘ื•ืกืกืช Kubernetes. ื‘ื—ื•ืžืจ ื–ื”, ื ืฉืชืฃ ืืช ื”ื—ื–ื•ืŸ ืฉืœื ื• ืœื’ื‘ื™ ื”ืฉืœื‘ื™ื ื”ื“ืจื•ืฉื™ื, ื”ืงืจื™ื˜ืจื™ื•ื ื™ื ื•ื”ืคืชืจื•ื ื•ืช ื”ืงื™ื™ืžื™ื (ื›ื•ืœืœ ืกืงื™ืจื” ืฉืœ ืžืคืขื™ืœื™ื) ืœื”ืขื‘ืจื” ืฉืœ Cassandra ืœ-K8s.

"ืžื™ ืฉื™ื›ื•ืœ ืœืฉืœื•ื˜ ื‘ืื™ืฉื” ื™ื›ื•ืœ ื’ื ืœืฉืœื•ื˜ ื‘ืžื“ื™ื ื”"

ืžื™ ื–ืืช ืงืกื ื“ืจื”? ื–ื•ื”ื™ ืžืขืจื›ืช ืื—ืกื•ืŸ ืžื‘ื•ื–ืจืช ื”ืžื™ื•ืขื“ืช ืœื ื”ืœ ื›ืžื•ื™ื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ื ืชื•ื ื™ื ืชื•ืš ื”ื‘ื˜ื—ืช ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ืœืœื ื ืงื•ื“ืช ื›ืฉืœ ืื—ืช. ื”ืคืจื•ื™ืงื˜ ื›ืžืขื˜ ื•ืœื ืฆืจื™ืš ื”ืงื“ืžื” ืืจื•ื›ื”, ืื– ืืชืŸ ืจืง ืืช ื”ืžืืคื™ื™ื ื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœ ืงืกื ื“ืจื” ืฉื™ื”ื™ื• ืจืœื•ื•ื ื˜ื™ื™ื ื‘ื”ืงืฉืจ ืฉืœ ืžืืžืจ ืกืคืฆื™ืคื™:

  • ืงืกื ื“ืจื” ื›ืชื•ื‘ื” ื‘ื’'ืื•ื•ื”.
  • ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ืฉืœ ืงืกื ื“ืจื” ื›ื•ืœืœืช ืžืกืคืจ ืจืžื•ืช:
    • Node - ืžื•ืคืข ืื—ื“ ืฉืœ Cassandra ืคืจื•ืก;
    • Rack ื”ื™ื ืงื‘ื•ืฆื” ืฉืœ ืžื•ืคืขื™ Cassandra, ื”ืžืื•ื—ื“ื™ื ืขืœ ื™ื“ื™ ืžืืคื™ื™ืŸ ื›ืœืฉื”ื•, โ€‹โ€‹ื”ืžืžื•ืงืžื™ื ื‘ืื•ืชื• ืžืจื›ื– ื ืชื•ื ื™ื;
    • Datacenter - ืื•ืกืฃ ืฉืœ ื›ืœ ื”ืงื‘ื•ืฆื•ืช ืฉืœ ืžื•ืคืขื™ Cassandra ื”ืžืžื•ืงืžื™ื ื‘ืžืจื›ื– ื ืชื•ื ื™ื ืื—ื“;
    • Cluster ื”ื•ื ืื•ืกืฃ ืฉืœ ื›ืœ ืžืจื›ื–ื™ ื”ื ืชื•ื ื™ื.
  • ืงืกื ื“ืจื” ืžืฉืชืžืฉืช ื‘ื›ืชื•ื‘ืช IP ื›ื“ื™ ืœื–ื”ื•ืช ืฆื•ืžืช.
  • ื›ื“ื™ ืœื”ืื™ืฅ ืืช ืคืขื•ืœื•ืช ื”ื›ืชื™ื‘ื” ื•ื”ืงืจื™ืื”, Cassandra ืžืื—ืกื ืช ื—ืœืง ืžื”ื ืชื•ื ื™ื ื‘-RAM.

ืขื›ืฉื™ื• - ืœืžืขื‘ืจ ื”ืคื•ื˜ื ืฆื™ืืœื™ ื‘ืคื•ืขืœ ืœืงื•ื‘ืจื ื˜ืก.

ืจืฉื™ืžืช ื‘ื“ื™ืงื” ืœื”ืขื‘ืจื”

ืื ื›ื‘ืจ ืžื“ื‘ืจื™ื ืขืœ ื”ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ- Kubernetes, ืื ื• ืžืงื•ื•ื™ื ืฉืขื ื”ืžืขื‘ืจ ื”ื™ื ืชื”ืคื•ืš ื ื•ื—ื” ื™ื•ืชืจ ืœื ื™ื”ื•ืœ. ืžื” ื™ื™ื“ืจืฉ ื‘ืฉื‘ื™ืœ ื–ื”, ืžื” ื™ืขื–ื•ืจ ื‘ื–ื”?

1. ืื—ืกื•ืŸ ื ืชื•ื ื™ื

ื›ืคื™ ืฉื›ื‘ืจ ื”ื•ื‘ื”ืจ, ืงืกื ื“ื” ืื•ื’ืจืช ื—ืœืง ืžื”ื ืชื•ื ื™ื ื‘-RAM - in ืžื–ื›ืจ. ืื‘ืœ ื™ืฉ ืขื•ื“ ื—ืœืง ืžื”ื ืชื•ื ื™ื ืฉื ืฉืžืจ ื‘ื“ื™ืกืง - ื‘ื˜ื•ืคืก SSTable. ืœื ืชื•ื ื™ื ืืœื• ืžืชื•ื•ืกืคืช ื™ืฉื•ืช ื™ื•ืžืŸ ื”ืชื—ื™ื™ื‘ื•ืช - ืจืฉื•ืžื•ืช ืฉืœ ื›ืœ ื”ืขืกืงืื•ืช, ืฉื ืฉืžืจื•ืช ื’ื ื‘ื“ื™ืกืง.

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ื›ืชื•ื‘ ื“ื™ืื’ืจืžืช ืขืกืงืื•ืช ื‘ืงืกื ื“ืจื”

ื‘-Kubernetes, ืื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘-PersistentVolume ืœืื—ืกื•ืŸ ื ืชื•ื ื™ื. ื”ื•ื“ื•ืช ืœืžื ื’ื ื•ื ื™ื ืžื•ื›ื—ื™ื, ื”ืขื‘ื•ื“ื” ืขื ื ืชื•ื ื™ื ื‘- Kubernetes ื”ื•ืคื›ืช ืงืœื” ื™ื•ืชืจ ืžื“ื™ ืฉื ื”.

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ืื ื• ื ืงืฆื” ื ืคื— ืžืชืžืฉืš ืžืฉืœื ื• ืœื›ืœ ืชืจืžื™ืœ ืงืกื ื“ืจื”

ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ ืฉืงืกื ื“ืจื” ืขืฆืžื” ืžืจืžื–ืช ืขืœ ืฉื›ืคื•ืœ ื ืชื•ื ื™ื, ื•ืžืฆื™ืขื” ืžื ื’ื ื•ื ื™ื ืžื•ื‘ื ื™ื ืœื›ืš. ืœื›ืŸ, ืื ืืชื” ื‘ื•ื ื” ืืฉื›ื•ืœ Cassandra ืžืžืกืคืจ ืจื‘ ืฉืœ ืฆืžืชื™ื, ืื– ืื™ืŸ ืฆื•ืจืš ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ื•ืช ืžื‘ื•ื–ืจื•ืช ื›ืžื• Ceph ืื• GlusterFS ืœืื—ืกื•ืŸ ื ืชื•ื ื™ื. ื‘ืžืงืจื” ื–ื”, ื–ื” ื™ื”ื™ื” ื”ื’ื™ื•ื ื™ ืœืื—ืกืŸ ื ืชื•ื ื™ื ื‘ื“ื™ืกืง ื”ืžืืจื— ื‘ืืžืฆืขื•ืช ื“ื™ืกืงื™ื ืงื‘ื•ืขื™ื ืžืงื•ืžื™ื™ื ืื• ื”ืจื›ื‘ื” hostPath.

ืฉืืœื” ื ื•ืกืคืช ื”ื™ื ืื ืืชื” ืจื•ืฆื” ืœื™ืฆื•ืจ ืกื‘ื™ื‘ื” ื ืคืจื“ืช ืœืžืคืชื—ื™ื ืขื‘ื•ืจ ื›ืœ ืขื ืฃ ืชื›ื•ื ื”. ื‘ืžืงืจื” ื–ื”, ื”ื’ื™ืฉื” ื”ื ื›ื•ื ื” ืชื”ื™ื” ืœื”ืขืœื•ืช ืฆื•ืžืช ืงืกื ื“ืจื” ืื—ื“ ื•ืœืื—ืกืŸ ืืช ื”ื ืชื•ื ื™ื ื‘ืื—ืกื•ืŸ ืžื‘ื•ื–ืจ, ื›ืœื•ืžืจ. ื”-Ceph ื•-GlusterFS ืฉื”ื•ื–ื›ืจื• ื™ื”ื™ื• ื”ืืคืฉืจื•ื™ื•ืช ืฉืœืš. ืื– ื”ืžืคืชื— ื™ื”ื™ื” ื‘ื˜ื•ื— ืฉื”ื•ื ืœื ื™ืื‘ื“ ื ืชื•ื ื™ ื‘ื“ื™ืงื” ื’ื ืื ืื—ื“ ืžืฆืžืชื™ ื”ืืฉื›ื•ืœื•ืช ืฉืœ Kuberntes ื™ืื‘ื“.

2. ื ื™ื˜ื•ืจ

ื”ื‘ื—ื™ืจื” ื”ื‘ืœืชื™ ืžืขื•ืจืขืจืช ื›ืžืขื˜ ืœื”ื˜ืžืขืช ื ื™ื˜ื•ืจ ื‘- Kubernetes ื”ื™ื Prometheus (ื“ื™ื‘ืจื ื• ืขืœ ื–ื” ื‘ืคื™ืจื•ื˜ ื‘ ื“ื•ื— ืงืฉื•ืจ). ืื™ืš ืงืกื ื“ืจื” ืžืกืชื“ืจืช ืขื ื™ืฆื•ืื ื™ื•ืช ืžื“ื“ื™ื ืขื‘ื•ืจ ืคืจื•ืžืชืื•ืก? ื•ืžื” ืขื•ื“ ื™ื•ืชืจ ื—ืฉื•ื‘, ืขื ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืชื•ืืžื™ื ืœื’ืจืคืื ื”?

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ื“ื•ื’ืžื” ืœื”ื•ืคืขืช ื’ืจืคื™ื ื‘ื’ืจืคืื ื” ืขื‘ื•ืจ ืงืกื ื“ืจื”

ื™ืฉ ืจืง ืฉื ื™ ื™ืฆื•ืื ื™ื: jmx_exporter ะธ cassandra_exporter.

ื‘ื—ืจื ื• ืืช ื”ืจืืฉื•ืŸ ืœืขืฆืžื ื• ื›ื™:

  1. JMX Exporter ื’ื“ืœ ื•ืžืชืคืชื—, ื‘ืขื•ื“ Cassandra Exporter ืœื ื”ืฆืœื™ื—ื” ืœืงื‘ืœ ืžืกืคื™ืง ืชืžื™ื›ื” ืงื”ื™ืœืชื™ืช. Cassandra Exporter ืขื“ื™ื™ืŸ ืœื ืชื•ืžืš ื‘ืจื•ื‘ ื”ื’ืจืกืื•ืช ืฉืœ Cassandra.
  2. ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืื•ืชื• ื›-javaagent ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื“ื’ืœ -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. ื™ืฉ ืื—ื“ ื‘ืฉื‘ื™ืœื• ืœื•ื— ืžื—ื•ื•ื ื™ื ืžืชืื™ื, ืฉืื™ื ื• ืชื•ืื ืขื Cassandra Exporter.

3. ื‘ื—ื™ืจืช ื”ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืฉืœ Kubernetes

ืœืคื™ ื”ืžื‘ื ื” ืฉืœืขื™ืœ ืฉืœ ืืฉื›ื•ืœ ืงืกื ื“ืจื”, ื‘ื•ืื• ื ื ืกื” ืœืชืจื’ื ืืช ื›ืœ ืžื” ืฉืžืชื•ืืจ ืฉื ืœืžื™ื ื•ื— Kubernetes:

  • Cassandra Node โ†’ Pod
  • Cassandra Rack โ†’ StatefulSet
  • Cassandra Datacenter โ†’ ื‘ืจื™ื›ื” ืž-StatefulSets
  • ืืฉื›ื•ืœ ืงืกื ื“ืจื” โ†’ ???

ืžืกืชื‘ืจ ืฉื—ืกืจื” ืื™ื–ื• ื™ืฉื•ืช ื ื•ืกืคืช ืฉืชื ื”ืœ ืืช ื›ืœ ืืฉื›ื•ืœ ืงืกื ื“ืจื” ื‘ื‘ืช ืื—ืช. ืื‘ืœ ืื ืžืฉื”ื• ืœื ืงื™ื™ื, ื ื•ื›ืœ ืœื™ืฆื•ืจ ืื•ืชื•! ืœ-Kubernetes ื™ืฉ ืžื ื’ื ื•ืŸ ืœื”ื’ื“ืจืช ืžืฉืื‘ื™ื ืžืฉืœื” ืœืžื˜ืจื” ื–ื• - ื”ื’ื“ืจื•ืช ืžืฉืื‘ื™ื ืžื•ืชืืžื•ืช ืื™ืฉื™ืช.

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ื”ืฆื”ืจืช ืžืฉืื‘ื™ื ื ื•ืกืคื™ื ืขื‘ื•ืจ ื™ื•ืžื ื™ื ื•ื”ืชืจืื•ืช

ืื‘ืœ ืžืฉืื‘ ืžื•ืชืื ืื™ืฉื™ืช ืขืฆืžื• ืœื ืื•ืžืจ ื›ืœื•ื: ืื—ืจื™ ื”ื›ืœ, ื–ื” ื“ื•ืจืฉ ื‘ืงืจ. ื™ื™ืชื›ืŸ ืฉืชืฆื˜ืจืš ืœื‘ืงืฉ ืขื–ืจื” ืžืคืขื™ืœ Kubernetes...

4. ื–ื™ื”ื•ื™ ืชืจืžื™ืœื™ื

ื‘ืคืกืงื” ืœืขื™ืœ, ื”ืกื›ืžื ื• ืฉืฆื•ืžืช ืงืกื ื“ืจื” ืื—ื“ ื™ืฉืชื•ื•ื” ืœืคื•ื“ ืื—ื“ ื‘-Kubernetes. ืื‘ืœ ื›ืชื•ื‘ื•ืช ื”-IP ืฉืœ ื”ืคื•ื“ื™ื ื™ื”ื™ื• ืฉื•ื ื•ืช ื‘ื›ืœ ืคืขื. ื•ื”ื–ื™ื”ื•ื™ ืฉืœ ืฆื•ืžืช ื‘ืงืกื ื“ืจื” ืžื‘ื•ืกืก ืขืœ ื›ืชื•ื‘ืช ื”-IP... ืžืกืชื‘ืจ ืฉืื—ืจื™ ื›ืœ ื”ืกืจื” ืฉืœ ืคื•ื“, ืืฉื›ื•ืœ ื”ืงืกื ื“ืจื” ื™ื•ืกื™ืฃ ืฆื•ืžืช ื—ื“ืฉ.

ื™ืฉ ื“ืจืš ืœืฆืืช, ื•ืœื ืจืง ืื—ืช:

  1. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืฉืžื•ืจ ืจืฉื•ืžื•ืช ืœืคื™ ืžื–ื”ื™ ืžืืจื— (UUIDs ื”ืžื–ื”ื™ื ื‘ืื•ืคืŸ ื™ื™ื—ื•ื“ื™ ืžื•ืคืขื™ื ืฉืœ Cassandra) ืื• ืœืคื™ ื›ืชื•ื‘ื•ืช IP ื•ืœืื—ืกืŸ ืืช ื”ื›ืœ ื‘ืžื‘ื ื™ื/ื˜ื‘ืœืื•ืช ืžืกื•ื™ืžื•ืช. ืœืฉื™ื˜ื” ืฉื ื™ ื—ืกืจื•ื ื•ืช ืขื™ืงืจื™ื™ื:
    • ื”ืกื™ื›ื•ืŸ ืœื”ืชืจื—ืฉื•ืช ืžืฆื‘ ื’ื–ืข ืื ืฉื ื™ ืฆืžืชื™ื ื ื•ืคืœื™ื ื‘ื‘ืช ืื—ืช. ืœืื—ืจ ื”ืขืœื™ื™ื”, ืฆืžืชื™ ืงืกื ื“ืจื” ื™ื‘ืงืฉื• ื‘ืžืงื‘ื™ืœ ื›ืชื•ื‘ืช IP ืžื”ื˜ื‘ืœื” ื•ื™ืชื—ืจื• ืขืœ ืื•ืชื• ืžืฉืื‘.
    • ืื ืฆื•ืžืช ืงืกื ื“ืจื” ืื™ื‘ื“ื” ืืช ื”ื ืชื•ื ื™ื ืฉืœื•, ืœื ื ื•ื›ืœ ืขื•ื“ ืœื–ื”ื•ืช ืื•ืชื•.
  2. ื”ืคืชืจื•ืŸ ื”ืฉื ื™ ื ืจืื” ื›ืžื• ืคืจื™ืฆื” ืงื˜ื ื”, ืื‘ืœ ื‘ื›ืœ ื–ืืช: ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื™ืฆื•ืจ ืฉื™ืจื•ืช ืขื ClusterIP ืขื‘ื•ืจ ื›ืœ ืฆื•ืžืช Cassandra. ื‘ืขื™ื•ืช ื‘ื™ื™ืฉื•ื ื–ื”:
    • ืื ื™ืฉ ื”ืจื‘ื” ืฆืžืชื™ื ื‘ืืฉื›ื•ืœ Cassandra, ื ืฆื˜ืจืš ืœื™ืฆื•ืจ ื”ืจื‘ื” ืฉื™ืจื•ืชื™ื.
    • ืชื›ื•ื ืช ClusterIP ืžื™ื•ืฉืžืช ื‘ืืžืฆืขื•ืช iptables. ื–ื” ื™ื›ื•ืœ ืœื”ืคื•ืš ืœื‘ืขื™ื” ืื ืœืืฉื›ื•ืœ ื”ืงืกื ื“ืจื” ื™ืฉ ื”ืจื‘ื” (1000... ืื• ืืคื™ืœื• 100?) ืฆืžืชื™ื. ืœืžืจื•ืช ืฉ ืื™ื–ื•ืŸ ืขืœ ื‘ืกื™ืก IPVS ื™ื›ื•ืœ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ื”ื–ื•.
  3. ื”ืคืชืจื•ืŸ ื”ืฉืœื™ืฉื™ ื”ื•ื ืœื”ืฉืชืžืฉ ื‘ืจืฉืช ืฉืœ ืฆืžืชื™ื ืขื‘ื•ืจ ืฆืžืชื™ ืงืกื ื“ืจื” ื‘ืžืงื•ื ื‘ืจืฉืช ื™ื™ืขื•ื“ื™ืช ืฉืœ ืคื•ื“ื™ื ืขืœ ื™ื“ื™ ื”ืคืขืœืช ื”ื”ื’ื“ืจื” hostNetwork: true. ืฉื™ื˜ื” ื–ื• ืžื˜ื™ืœื” ื”ื’ื‘ืœื•ืช ืžืกื•ื™ืžื•ืช:
    • ื›ื“ื™ ืœื”ื—ืœื™ืฃ ื™ื—ื™ื“ื•ืช. ื–ื” ื”ื›ืจื—ื™ ืฉืœืฆื•ืžืช ื”ื—ื“ืฉ ืชื”ื™ื” ืื•ืชื” ื›ืชื•ื‘ืช IP ื›ืžื• ื”ืงื•ื“ืžืช (ื‘ืขื ื ื™ื ื›ืžื• AWS, GCP ื–ื” ื›ืžืขื˜ ื‘ืœืชื™ ืืคืฉืจื™ ืœืขืฉื•ืช ื–ืืช);
    • ื‘ืืžืฆืขื•ืช ืจืฉืช ืฉืœ ืฆืžืชื™ ืืฉื›ื•ืœ, ืื ื• ืžืชื—ื™ืœื™ื ืœื”ืชื—ืจื•ืช ืขืœ ืžืฉืื‘ื™ ืจืฉืช. ืœื›ืŸ, ื”ืฆื‘ืช ื™ื•ืชืจ ืžืชืจืžื™ืœ ืื—ื“ ืขื Cassandra ืขืœ ืฆื•ืžืช ืืฉื›ื•ืœ ืื—ื“ ืชื”ื™ื” ื‘ืขื™ื™ืชื™ืช.

5. ื’ื™ื‘ื•ื™ื™ื

ืื ื—ื ื• ืจื•ืฆื™ื ืœืฉืžื•ืจ ื’ืจืกื” ืžืœืื” ืฉืœ ื ืชื•ื ื™ ืฆื•ืžืช ืงืกื ื“ืจื” ื‘ื•ื“ื“ืช ื‘ืœื•ื— ื–ืžื ื™ื. Kubernetes ืžืกืคืง ืชื›ื•ื ื” ื ื•ื—ื” ื‘ืืžืฆืขื•ืช CronJob, ืื‘ืœ ื›ืืŸ ืงืกื ื“ืจื” ืขืฆืžื” ืฉืžื” ื—ื™ืฉื•ืจ ื‘ื’ืœื’ืœื™ื ืฉืœื ื•.

ื”ืจืฉื• ืœื™ ืœื”ื–ื›ื™ืจ ืœื›ื ืฉืงืกื ื“ืจื” ืžืื—ืกื ืช ื—ืœืง ืžื”ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ. ื›ื“ื™ ืœื‘ืฆืข ื’ื™ื‘ื•ื™ ืžืœื, ืืชื” ืฆืจื™ืš ื ืชื•ื ื™ื ืžื”ื–ื™ื›ืจื•ืŸ (Memtables) ื”ืขื‘ืจ ืœื“ื™ืกืง (SSTables). ื‘ืฉืœื‘ ื–ื”, ืฆื•ืžืช ื”ืงืกื ื“ืจื” ืžืคืกื™ืง ืœืงื‘ืœ ื—ื™ื‘ื•ืจื™ื, ื•ื ื›ื‘ื” ืœื—ืœื•ื˜ื™ืŸ ืžื”ืืฉื›ื•ืœ.

ืœืื—ืจ ืžื›ืŸ, ื”ื’ื™ื‘ื•ื™ ืžื•ืกืจ (ืชืžื•ื ืช ืžืฆื‘) ื•ื”ืกื›ืžื” ื ืฉืžืจืช (ืžืจื•ื•ื— ื”ืžืงืฉื™ื). ื•ืื– ืžืกืชื‘ืจ ืฉืกืชื ื’ื™ื‘ื•ื™ ืœื ื ื•ืชืŸ ืœื ื• ื›ืœื•ื: ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืฉืžื•ืจ ืืช ืžื–ื”ื™ ื”ื ืชื•ื ื™ื ืฉืขืœื™ื”ื ื”ื™ื” ืื—ืจืื™ ืฆื•ืžืช ืงืกื ื“ืจื” - ืืœื” ืืกื™ืžื•ื ื™ื ืžื™ื•ื—ื“ื™ื.

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ื”ืคืฆืช ืืกื™ืžื•ื ื™ื ื›ื“ื™ ืœื–ื”ื•ืช ืœืื™ืœื• ื ืชื•ื ื™ื ืื—ืจืื™ื ืฆืžืชื™ ืงืกื ื“ืจื”

ืกืงืจื™ืคื˜ ื“ื•ื’ืžื” ืœืœืงื™ื—ืช ื’ื™ื‘ื•ื™ Cassandra ืžื’ื•ื’ืœ ื‘-Kubernetes ื ื™ืชืŸ ืœืžืฆื•ื ื‘ื›ืชื•ื‘ืช ืงื™ืฉื•ืจ ื–ื”. ื”ื ืงื•ื“ื” ื”ื™ื—ื™ื“ื” ืฉื”ืกืงืจื™ืคื˜ ืœื ืœื•ืงื— ื‘ื—ืฉื‘ื•ืŸ ื”ื™ื ืื™ืคื•ืก ื ืชื•ื ื™ื ืœืฆื•ืžืช ืœืคื ื™ ืฆื™ืœื•ื ืชืžื•ื ืช ื”ืžืฆื‘. ื›ืœื•ืžืจ, ื”ื’ื™ื‘ื•ื™ ืžืชื‘ืฆืข ืœื ืขื‘ื•ืจ ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™, ืืœื ืขื‘ื•ืจ ืžืฆื‘ ืงืฆืช ืงื•ื“ื. ืื‘ืœ ื–ื” ืขื•ื–ืจ ืœื ืœื”ื•ืฆื™ื ืืช ื”ืฆื•ืžืช ืžืคืขื•ืœื”, ืžื” ืฉื ืจืื” ื”ื’ื™ื•ื ื™ ืžืื•ื“.

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 script ืœืœืงื™ื—ืช ื’ื™ื‘ื•ื™ ืžืฆื•ืžืช Cassandra ืื—ื“

ืคืชืจื•ื ื•ืช ืžื•ื›ื ื™ื ืœืงืกื ื“ืจื” ื‘ืงื•ื‘ืจื ื˜ืก

ืžื” ืžืฉืžืฉ ื›ืจื’ืข ืœืคืจื™ืกืช Cassandra ื‘- Kubernetes ื•ืื™ื–ื” ืžื‘ื™ืŸ ืืœื” ืžืชืื™ื ื‘ื™ื•ืชืจ ืœื“ืจื™ืฉื•ืช ื”ื ืชื•ื ื•ืช?

1. ืคืชืจื•ื ื•ืช ื”ืžื‘ื•ืกืกื™ื ืขืœ ืชืจืฉื™ืžื™ StatefulSet ืื• Helm

ืฉื™ืžื•ืฉ ื‘ืคื•ื ืงืฆื™ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ืฉืœ StatefulSets ืœื”ืคืขืœืช ืืฉื›ื•ืœ Cassandra ื”ื™ื ืืคืฉืจื•ืช ื˜ื•ื‘ื”. ื‘ืืžืฆืขื•ืช ืชื‘ื ื™ื•ืช ื”-Helm ื•ืชื‘ื ื™ื•ืช Go, ืชื•ื›ืœ ืœืกืคืง ืœืžืฉืชืžืฉ ืžืžืฉืง ื’ืžื™ืฉ ืœืคืจื™ืกืช Cassandra.

ื–ื” ื‘ื“ืจืš ื›ืœืœ ืขื•ื‘ื“ ื‘ืกื“ืจ... ืขื“ ืฉืงื•ืจื” ืžืฉื”ื• ื‘ืœืชื™ ืฆืคื•ื™, ื›ื’ื•ืŸ ื›ืฉืœ ื‘ืฆื•ืžืช. ื”ื›ืœื™ื ื”ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœ Kubernetes ืคืฉื•ื˜ ืœื ื™ื›ื•ืœื™ื ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืืช ื›ืœ ื”ืชื›ื•ื ื•ืช ืฉืชื•ืืจื• ืœืขื™ืœ. ื‘ื ื•ืกืฃ, ื’ื™ืฉื” ื–ื• ืžื•ื’ื‘ืœืช ืžืื•ื“ ื‘ืžื™ื“ืช ื”ืจื—ื‘ื” ืฉืœื” ืœืฉื™ืžื•ืฉื™ื ืžื•ืจื›ื‘ื™ื ื™ื•ืชืจ: ื”ื—ืœืคืช ืฆื•ืžืช, ื’ื™ื‘ื•ื™, ืฉื—ื–ื•ืจ, ื ื™ื˜ื•ืจ ื•ื›ื•'.

ื ืฆื™ื’ื™ื:

ืฉื ื™ ื”ืชืจืฉื™ืžื™ื ื˜ื•ื‘ื™ื ื‘ืื•ืชื” ืžื™ื“ื”, ืืš ื›ืคื•ืคื™ื ืœื‘ืขื™ื•ืช ืฉืชื•ืืจื• ืœืขื™ืœ.

2. ืคืชืจื•ื ื•ืช ืžื‘ื•ืกืกื™ Kubernetes Operator

ืืคืฉืจื•ื™ื•ืช ื›ืืœื” ืžืขื ื™ื™ื ื•ืช ื™ื•ืชืจ ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ืžืกืคืงื•ืช ื”ื–ื“ืžื ื•ื™ื•ืช ืจื‘ื•ืช ืœื ื™ื”ื•ืœ ื”ืืฉื›ื•ืœ. ืœืขื™ืฆื•ื‘ ืื•ืคืจื˜ื•ืจ Cassandra, ื›ืžื• ื›ืœ ืžืกื“ ื ืชื•ื ื™ื ืื—ืจ, ื“ืคื•ืก ื˜ื•ื‘ ื ืจืื” ื›ืžื• Sidecar <-> Controller <-> CRD:

ื”ื’ื™ืจื” ืฉืœ ืงืกื ื“ืจื” ืœ-Kubernetes: ืชื›ื•ื ื•ืช ื•ืคืชืจื•ื ื•ืช
ืขืจื›ืช ื ื™ื”ื•ืœ ืฆืžืชื™ื ื‘ืžืคืขื™ืœ ืงืกื ื“ืจื” ืžืขื•ืฆื‘ ื”ื™ื˜ื‘

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืžืคืขื™ืœื™ื ืงื™ื™ืžื™ื.

1. ืžืคืขื™ืœ ืงืกื ื“ืจื” ืž-instaclustr

  • GitHub
  • ืžื•ื›ื ื•ืช: ืืœืคื
  • ืจื™ืฉื™ื•ืŸ: Apache 2.0
  • ืžื™ื•ืฉื ื‘: Java

ื–ื”ื• ืื›ืŸ ืคืจื•ื™ืงื˜ ืžืื•ื“ ืžื‘ื˜ื™ื— ื•ืžืชืคืชื— ื‘ืื•ืคืŸ ืคืขื™ืœ ืžื—ื‘ืจื” ื”ืžืฆื™ืขื” ืคืจื™ืกื•ืช ืžื ื•ื”ืœื•ืช ืฉืœ Cassandra. ื–ื”, ื›ืคื™ ืฉืชื•ืืจ ืœืขื™ืœ, ืžืฉืชืžืฉ ื‘ืžื™ื›ืœ ืฆื“ื“ื™ ื”ืžืงื‘ืœ ืคืงื•ื“ื•ืช ื‘ืืžืฆืขื•ืช HTTP. ื›ืชื•ื‘ ื‘-Java, ืœืคืขืžื™ื ืื™ืŸ ืœื• ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืžืชืงื“ืžืช ื™ื•ืชืจ ืฉืœ ืกืคืจื™ื™ืช ื”-client-go. ื›ืžื• ื›ืŸ, ื”ืžืคืขื™ืœ ืื™ื ื• ืชื•ืžืš ื‘-Racks ืฉื•ื ื™ื ืขื‘ื•ืจ Datacenter ืื—ื“.

ืื‘ืœ ืœืžืคืขื™ืœ ื™ืฉ ื™ืชืจื•ื ื•ืช ื›ืžื• ืชืžื™ื›ื” ื‘ื ื™ื˜ื•ืจ, ื ื™ื”ื•ืœ ืืฉื›ื•ืœื•ืช ื‘ืจืžื” ื’ื‘ื•ื”ื” ื‘ืืžืฆืขื•ืช CRD, ื•ืืคื™ืœื• ืชื™ืขื•ื“ ืœื‘ื™ืฆื•ืข ื’ื™ื‘ื•ื™ื™ื.

2. ื ื™ื•ื•ื˜ ืžื‘ื™ืช Jetstack

  • GitHub
  • ืžื•ื›ื ื•ืช: ืืœืคื
  • ืจื™ืฉื™ื•ืŸ: Apache 2.0
  • ืžื™ื•ืฉื ื‘: ื’ื•ืœื ื’

ื”ืฆื”ืจื” ืฉื ื•ืขื“ื” ืœืคืจื•ืก ืืช DB-as-a-Service. ื›ืจื’ืข ืชื•ืžืš ื‘ืฉื ื™ ืžืกื“ื™ ื ืชื•ื ื™ื: Elasticsearch ื•- Cassandra. ื™ืฉ ืœื• ืคืชืจื•ื ื•ืช ืžืขื ื™ื™ื ื™ื ื›ืžื• ื‘ืงืจืช ื’ื™ืฉื” ืœืžืกื“ ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช RBAC (ื‘ืฉื‘ื™ืœ ื–ื” ื™ืฉ ืœื• ืฉืจืช ื ื•ื•ื˜ ื ืคืจื“ ืžืฉืœื•). ืคืจื•ื™ืงื˜ ืžืขื ื™ื™ืŸ ืฉื›ื“ืื™ ืœื”ืกืชื›ืœ ืขืœื™ื• ื™ื•ืชืจ ืžืงืจื•ื‘, ืื‘ืœ ื”ื”ืชื—ื™ื™ื‘ื•ืช ื”ืื—ืจื•ื ื” ื‘ื•ืฆืขื” ืœืคื ื™ ืฉื ื” ื•ื—ืฆื™, ืžื” ืฉืžืคื—ื™ืช ื‘ื‘ื™ืจื•ืจ ืืช ื”ืคื•ื˜ื ืฆื™ืืœ ืฉืœื•.

3. ืงืกื ื“ืจื”-ืžืคืขื™ืœ ืžืืช vgkowski

  • GitHub
  • ืžื•ื›ื ื•ืช: ืืœืคื
  • ืจื™ืฉื™ื•ืŸ: Apache 2.0
  • ืžื™ื•ืฉื ื‘: ื’ื•ืœื ื’

ื”ื ืœื ืฉืงืœื• ืืช ื–ื” "ื‘ืจืฆื™ื ื•ืช", ืžื›ื™ื•ื•ืŸ ืฉื”ื”ืชื—ื™ื™ื‘ื•ืช ื”ืื—ืจื•ื ื” ืœืžืื’ืจ ื”ื™ื™ืชื” ืœืคื ื™ ื™ื•ืชืจ ืžืฉื ื”. ืคื™ืชื•ื— ื”ืžืคืขื™ืœ ื ื–ื ื—: ื”ื’ืจืกื” ื”ืื—ืจื•ื ื” ืฉืœ Kubernetes ืฉื“ื•ื•ื—ื” ื›ื ืชืžื›ืช ื”ื™ื 1.9.

4. ืงืกื ื“ืจื”-ืžืคืขื™ืœ ืฉืœ ืจื•ืง

  • GitHub
  • ืžื•ื›ื ื•ืช: ืืœืคื
  • ืจื™ืฉื™ื•ืŸ: Apache 2.0
  • ืžื™ื•ืฉื ื‘: ื’ื•ืœื ื’

ืžืคืขื™ืœ ืฉื”ืคื™ืชื•ื— ืฉืœื• ืœื ืžืชืงื“ื ืžื”ืจ ื›ืžื• ืฉื”ื™ื™ื ื• ืจื•ืฆื™ื. ื™ืฉ ืœื• ืžื‘ื ื” CRD ืžื—ื•ืฉื‘ ื”ื™ื˜ื‘ ืœื ื™ื”ื•ืœ ืืฉื›ื•ืœื•ืช, ืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ืฉืœ ื–ื™ื”ื•ื™ ืฆืžืชื™ื ื‘ืืžืฆืขื•ืช Service ืขื ClusterIP (ืื•ืชื• "ื”ืืง")... ืื‘ืœ ื–ื” ื”ื›ืœ ืœืขืช ืขืชื”. ื›ืจื’ืข ืื™ืŸ ื ื™ื˜ื•ืจ ืื• ื’ื™ื‘ื•ื™ื™ื ืžื—ื•ืฅ ืœืงื•ืคืกื” (ืื’ื‘, ืื ื—ื ื• ืœื ื™ื˜ื•ืจ ืœืงื—ื• ืืช ื–ื” ื‘ืขืฆืžื ื•). ื ืงื•ื“ื” ืžืขื ื™ื™ื ืช ื”ื™ื ืฉืืชื” ื™ื›ื•ืœ ื’ื ืœืคืจื•ืก ืืช ScyllaDB ื‘ืืžืฆืขื•ืช ืื•ืคืจื˜ื•ืจ ื–ื”.

ื”ืขืจื”: ื”ืฉืชืžืฉื ื• ื‘ืžืคืขื™ืœ ื–ื” ืขื ืฉื™ื ื•ื™ื™ื ืงืœื™ื ื‘ืื—ื“ ืžื”ืคืจื•ื™ืงื˜ื™ื ืฉืœื ื•. ืœื ื”ื‘ื—ื™ื ื• ื‘ื‘ืขื™ื•ืช ื‘ืขื‘ื•ื“ืช ื”ืžืคืขื™ืœ ื‘ืžื”ืœืš ื›ืœ ืชืงื•ืคืช ื”ืคืขื™ืœื•ืช (~4 ื—ื•ื“ืฉื™ ื”ืคืขืœื”).

5. CassKop ืžื‘ื™ืช Orange

  • GitHub
  • ืžื•ื›ื ื•ืช: ืืœืคื
  • ืจื™ืฉื™ื•ืŸ: Apache 2.0
  • ืžื™ื•ืฉื ื‘: ื’ื•ืœื ื’

ื”ืžืคืขื™ืœ ื”ืฆืขื™ืจ ื‘ื™ื•ืชืจ ื‘ืจืฉื™ืžื”: ื”ื”ืชื—ื™ื™ื‘ื•ืช ื”ืจืืฉื•ื ื” ื‘ื•ืฆืขื” ื‘-23 ื‘ืžืื™ 2019. ื›ื‘ืจ ืขื›ืฉื™ื• ื™ืฉ ืœื• ื‘ืืจืกื ืœ ืฉืœื• ืžืกืคืจ ืจื‘ ืฉืœ ืชื›ื•ื ื•ืช ืžื”ืจืฉื™ืžื” ืฉืœื ื•, ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœื™ื”ืŸ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืžืื’ืจ ื”ืคืจื•ื™ืงื˜ื™ื. ื”ืžืคืขื™ืœ ื‘ื ื•ื™ ืขืœ ื‘ืกื™ืก ื”ืžืคืขื™ืœ-sdk ื”ืคื•ืคื•ืœืจื™. ืชื•ืžืš ื‘ื ื™ื˜ื•ืจ ืžื—ื•ืฅ ืœืงื•ืคืกื”. ื”ื”ื‘ื“ืœ ื”ืขื™ืงืจื™ ืžืžืคืขื™ืœื™ื ืื—ืจื™ื ื”ื•ื ื”ืฉื™ืžื•ืฉ ืชื•ืกืฃ CassKop, ืžื™ื•ืฉื ื‘-Python ื•ืžืฉืžืฉ ืœืชืงืฉื•ืจืช ื‘ื™ืŸ ืฆืžืชื™ ืงืกื ื“ืจื”.

ืžืžืฆืื™ื

ืžืกืคืจ ื”ื’ื™ืฉื•ืช ื•ื”ืืคืฉืจื•ื™ื•ืช ื”ืืคืฉืจื™ื•ืช ืœื”ืขื‘ืจืช ืงืกื ื“ืจื” ืœืงื•ื‘ืจื ื˜ืก ืžื“ื‘ืจ ื‘ืขื“ ืขืฆืžื•: ื”ื ื•ืฉื ืžื‘ื•ืงืฉ.

ื‘ืฉืœื‘ ื–ื”, ืืชื” ื™ื›ื•ืœ ืœื ืกื•ืช ื›ืœ ืื—ื“ ืžื”ื“ื‘ืจื™ื ืœืขื™ืœ ืขืœ ืกื›ื ืชืš ื•ื‘ืกื™ื›ื•ืŸ ืฉืœืš: ืืฃ ืื—ื“ ืžื”ืžืคืชื—ื™ื ืœื ืžื‘ื˜ื™ื— 100% ืคืขื•ืœื” ืฉืœ ื”ืคืชืจื•ืŸ ืฉืœื• ื‘ืกื‘ื™ื‘ืช ื™ื™ืฆื•ืจ. ืื‘ืœ ื›ื‘ืจ ืขื›ืฉื™ื• ืžื•ืฆืจื™ื ืจื‘ื™ื ื ืจืื™ื ืžื‘ื˜ื™ื—ื™ื ืœื ืกื•ืช ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืกืคืกืœื™ ืคื™ืชื•ื—.

ืื ื™ ื—ื•ืฉื‘ ืฉื‘ืขืชื™ื“ ื”ืื™ืฉื” ื”ื–ื• ืขืœ ื”ืกืคื™ื ื” ืชื”ื™ื” ืฉื™ืžื•ืฉื™ืช!

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”