Cara menjalankan Cassandra dan Kubernetes bersama

Kontena menjadi semakin popular bagi pembangun yang ingin menggunakan aplikasi di awan. Untuk menguruskan aplikasi baru ini, Kubernetes telah menjadi standard de facto untuk orkestrasi kontena. Kubernetes membolehkan pemaju membina aplikasi diedarkan yang secara automatik skala secara elastik, bergantung pada permintaan.

Kubernetes dikembangkan untuk menyebarkan, skala, dan mengurus beban kerja aplikasi tanpa status dalam pengeluaran dengan mudah. Mengenai data asli, awan asli, ada kebutuhan untuk kemudahan penyebaran dan skala yang sama.

Dalam pangkalan data yang diedarkan, Cassandra menarik bagi pembangun yang tahu bahawa mereka harus memperkecil data mereka - ia menyediakan pendekatan pangkalan data dan pengurusan data yang toleran sepenuhnya yang dapat berjalan dengan cara yang sama di beberapa lokasi dan perkhidmatan awan. Oleh kerana semua node di Cassandra sama, dan setiap node mampu menangani permintaan membaca dan menulis, tidak ada satu pun titik kegagalan dalam model Cassandra. Data ditiru secara automatik antara zon kegagalan untuk mengelakkan kehilangan satu kejadian yang mempengaruhi aplikasi.

Menghubungkan Cassandra ke Kubernetes

Langkah seterusnya yang logik adalah menggunakan Cassandra dan Kubernetes bersama-sama. Bagaimanapun, mendapatkan pangkalan data yang diedarkan untuk dijalankan bersama dengan persekitaran aplikasi yang diedarkan menjadikan operasi data dan aplikasi lebih dekat antara satu sama lain. Ini bukan sahaja mengelakkan kependaman, ia juga dapat meningkatkan prestasi pada skala.

Akan tetapi, untuk mencapai ini, bermaksud memahami sistem mana yang bertanggungjawab. Cassandra sudah memiliki jenis toleransi kesalahan dan penempatan nod yang dapat diberikan oleh Kubernetes, jadi penting untuk mengetahui sistem mana yang bertanggung jawab untuk membuat keputusan. Ini dicapai dengan menggunakan pengendali Kubernetes.

Pengendali mengautomasikan proses penggunaan dan pengurusan aplikasi yang lebih kompleks yang memerlukan maklumat khusus domain dan perlu berinteraksi dengan sistem luaran. Sehingga pengendali dikembangkan, komponen aplikasi bernegara seperti contoh pangkalan data menyebabkan tanggungjawab tambahan untuk pasukan devops, kerana mereka harus melakukan kerja manual untuk menyiapkan instance mereka dan berjalan dengan cara yang bernas.

Terdapat banyak pengendali untuk Cassandra yang telah dikembangkan oleh komuniti Cassandra. Untuk contoh ini, kami akan menggunakan operator kas, yang disatukan dan sumber terbuka oleh DataStax. Ia menyokong Kubernetes sumber terbuka, Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), dan Pivotal Container Service (PKS), jadi anda boleh menggunakan perkhidmatan Kubernetes yang paling sesuai dengan persekitaran anda.

Memasang pengendali kas pada kluster Kubernetes anda sendiri adalah proses mudah jika anda mempunyai pengetahuan asas menjalankan kluster Kubernetes. Setelah kluster Kubernetes anda disahkan, menggunakan kubectl, alat baris perintah kluster Kubernetes, dan contoh awan Kubernetes anda (sama ada Kubernetes sumber terbuka, GKE, EKS, atau PKS) disambungkan ke mesin tempatan anda, anda boleh mula menggunakan cass- konfigurasi pengendali fail YAML ke kluster anda.

Menyiapkan definisi pengendali kas anda

Tahap seterusnya adalah menerapkan definisi untuk manifes pengendali kas, kelas penyimpanan, dan pusat data ke kluster Kubernetes.

Catatan ringkas mengenai definisi pusat data. Ini berdasarkan definisi yang digunakan di Cassandra daripada merujuk kepada pusat data fizikal.

Hirarki untuk ini adalah seperti berikut:

  • Node merujuk kepada sistem komputer yang menjalankan contoh Cassandra. Node boleh menjadi hos fizikal, contoh mesin di awan, atau bahkan wadah Docker.
  • Rak merujuk kepada sekumpulan nod Cassandra yang berdekatan antara satu sama lain. Rak boleh menjadi rak fizikal yang mengandungi nod yang disambungkan ke suis rangkaian biasa. Namun, dalam penyebaran awan, rak sering merujuk kepada koleksi contoh mesin yang berjalan di zon ketersediaan yang sama.
  • Pusat data merujuk kepada koleksi rak logik, yang umumnya berada di bangunan yang sama dan dihubungkan oleh rangkaian yang boleh dipercayai. Dalam penyebaran awan, pusat data umumnya memetakan ke kawasan awan.
  • Kluster merujuk kepada kumpulan pusat data yang menyokong aplikasi yang sama. Kluster Cassandra dapat berjalan di lingkungan awan tunggal atau pusat data fizikal, atau diedarkan di beberapa lokasi untuk ketahanan yang lebih besar dan penurunan latensi

Sekarang kami telah mengesahkan konvensyen penamaan kami, sudah tiba masanya untuk menetapkan definisi. Contoh kami menggunakan GKE, tetapi prosesnya serupa dengan mesin Kubernetes yang lain. Terdapat tiga langkah. 

Langkah 1

Pertama, kita perlu menjalankan perintah kubectl yang merujuk fail konfigurasi YAML. Ini menggunakan definisi manifes pengendali kas pada kluster Kubernetes yang bersambung. Manifest adalah deskripsi objek API, yang menggambarkan keadaan objek yang diinginkan, dalam hal ini, operator Cassandra anda. Untuk set lengkap manifes khusus versi, lihat halaman GitHub ini.

Berikut adalah contoh arahan kubectl untuk awan GKE yang menjalankan Kubernetes 1.16:

kubectl create -f //raw.githubusercontent.com/datastax/cass-operator/v1.3.0/docs/user/cass-operator-manifests-v1.16.yaml

Langkah 2

Perintah kubectl seterusnya menerapkan konfigurasi YAML yang menentukan tetapan penyimpanan yang akan digunakan untuk nod Cassandra dalam kluster. Kubernetes menggunakan sumber StorageClass sebagai lapisan abstraksi antara pod yang memerlukan penyimpanan berterusan dan sumber simpanan fizikal yang dapat disediakan oleh kumpulan Kubernetes tertentu. Contohnya menggunakan SSD sebagai jenis storan. Untuk lebih banyak pilihan, lihat halaman GitHub ini. Inilah pautan langsung ke YAML yang digunakan dalam konfigurasi storan, di bawah:

apiVersion: storage.k8s.io/v1

jenis: StorageClass

metadata:

  nama: penyimpanan pelayan

penyedia: kubernetes.io/gce-pd

parameter:

  taip: pd-ssd

  jenis replikasi: tidak ada

volumeBindingMode: WaitForFirstConsumer

reclaimPolicy: Padam

Langkah 3

Akhirnya, menggunakan kubectl sekali lagi, kami menggunakan YAML yang menentukan Pusat Data Cassandra kami.

# Saiz untuk berfungsi pada nod pekerja 3 k8s dengan 1 teras / 4 GB RAM

# Lihat jiran contoh-cassdc-full.yaml untuk dokumen untuk setiap parameter

apiVersion: cassandra.datastax.com/v1beta1

jenis: CassandraDatacenter

metadata:

  nama: dc1

spesifikasi:

  klusterNama: kluster1

  pelayanJenis: cassandra

  pelayanVersi: "3.11.6"

  pengurusanApiAuth:

    tidak selamat: {}

  saiz: 3

  penyimpananConfig:

    cassandraDataVolumeClaimSpec:

      storageClassName: penyimpanan pelayan

      aksesMode:

        - BacaWriteOnce

      sumber:

        permintaan:

          simpanan: 5Gi

  konfigurasi:   

    cassandra-yaml:

      pengesah: org.apache.cassandra.auth.PasswordAuthenticator

      pengarang: org.apache.cassandra.auth.CassandraAuthorizer

      role_manager: org.apache.cassandra.auth.CassandraRoleManager

    pilihan jvm:

      initial_heap_size: "800 juta"

      max_heap_size: "800M"

Contoh ini YAML adalah untuk gambar sumber terbuka Apache Cassandra 3.11.6, dengan tiga nod pada satu rak, di kluster Kubernetes. Inilah pautan langsung. Terdapat satu set lengkap konfigurasi pusat data khusus pangkalan data di halaman GitHub ini.

Pada ketika ini, anda akan dapat melihat sumber yang telah anda buat. Ini akan kelihatan di konsol awan anda. Di Google Cloud Console, misalnya, anda boleh mengklik pada tab Kluster untuk melihat apa yang sedang berjalan dan melihat beban kerja. Ini adalah unit pengkomputeran yang dapat digunakan dan dapat dibuat dan dikendalikan dalam kluster Kubernetes.

Untuk menyambung ke pangkalan data Cassandra yang digunakan sendiri, anda boleh menggunakan cqlsh, shell baris perintah, dan membuat pertanyaan Cassandra menggunakan CQL dari dalam kluster Kubernetes anda. Setelah disahkan, anda akan dapat menyerahkan perintah DDL untuk membuat atau mengubah jadual, dll., Dan memanipulasi data dengan arahan DML, seperti memasukkan dan mengemas kini dalam CQL.

Apa yang seterusnya untuk Cassandra dan Kubernetes?

Walaupun terdapat beberapa pengendali yang tersedia untuk Apache Cassandra, ada keperluan untuk operator biasa. Syarikat yang terlibat dalam komuniti Cassandra, seperti Sky, Orange, DataStax, dan Instaclustr berkolaborasi untuk menubuhkan operator bersama untuk Apache Cassandra di Kubernetes. Usaha kolaborasi ini berjalan bersama dengan operator sumber terbuka yang ada, dan tujuannya adalah untuk menyediakan perusahaan dan pengguna dengan timbunan skala yang konsisten untuk pengiraan dan data.

Seiring berjalannya waktu, perpindahan ke aplikasi asli awan juga harus didukung dengan data asli awan. Ini akan bergantung pada lebih banyak automasi, didorong oleh alat seperti Kubernetes. Dengan menggunakan Kubernetes dan Cassandra bersama-sama, anda dapat membuat pendekatan anda terhadap data yang asli.

Untuk mengetahui lebih lanjut mengenai Cassandra dan Kubernetes, sila lawati //www.datastax.com/dev/kubernetes. Untuk maklumat lebih lanjut mengenai menjalankan Cassandra di awan, lihat DataStax Astra. 

Patrick McFadin adalah VP hubungan pemaju di DataStax, di mana dia memimpin pasukan yang dikhaskan untuk menjadikan pengguna Apache Cassandra berjaya. Dia juga pernah bekerja sebagai ketua penginjil untuk Apache Cassandra dan perunding untuk DataStax, di mana dia membantu membangun beberapa penyebaran terbesar dan menarik dalam pengeluaran. Sebelum ke DataStax, dia adalah ketua arkitek di Hobsons dan pengembang Oracle DBA / selama lebih dari 15 tahun.

-

Forum Teknologi Baru menyediakan tempat untuk meneroka dan membincangkan teknologi perusahaan yang baru muncul dalam kedalaman dan luas yang belum pernah terjadi sebelumnya. Pemilihannya bersifat subjektif, berdasarkan pilihan teknologi yang kami percayai penting dan menarik minat pembaca. tidak menerima jaminan pemasaran untuk penerbitan dan berhak untuk mengedit semua kandungan yang disumbangkan. Hantarkan semua pertanyaan ke [email protected]