Dengan ketersediaan tinggi menjadi yang terpenting dalam realitas bisnis saat ini, salah satu skenario paling umum yang harus dihadapi pengguna adalah bagaimana memastikan bahwa database akan selalu tersedia untuk aplikasi.
Setiap penyedia layanan memiliki risiko gangguan layanan yang diturunkan, oleh karena itu salah satu langkah yang dapat diambil adalah mengandalkan beberapa penyedia untuk mengurangi risiko dan redundansi tambahan.
Penyedia layanan cloud tidak berbeda - mereka dapat gagal dan Anda harus merencanakannya terlebih dahulu. Opsi apa saja yang tersedia untuk MariaDB Cluster? Mari kita lihat di postingan blog ini.
Pengelompokan Database MariaDB di Lingkungan Multi-Cloud
Jika SLA yang diusulkan oleh satu penyedia layanan cloud tidak cukup, selalu ada opsi untuk membuat situs pemulihan bencana di luar penyedia tersebut. Berkat ini, setiap kali salah satu penyedia cloud mengalami penurunan layanan, Anda selalu dapat beralih ke penyedia lain dan menjaga agar database Anda tetap tersedia.
Salah satu masalah yang khas untuk pengaturan multi-cloud adalah latensi jaringan yang tidak dapat dihindari jika kita berbicara tentang jarak yang lebih jauh atau, secara umum, beberapa lokasi yang terpisah secara geografis. Kecepatan cahaya cukup tinggi tetapi terbatas, setiap hop, setiap router juga menambahkan beberapa latensi ke dalam infrastruktur jaringan.
Cluster MariaDB berfungsi dengan baik di jaringan dengan latensi rendah. Ini adalah cluster berbasis kuorum di mana komunikasi yang cepat antara semua node diperlukan untuk menjaga operasi tetap lancar. Peningkatan latensi jaringan akan berdampak pada operasi cluster, terutama kinerja penulisan. Ada beberapa cara untuk mengatasi masalah ini.
Pertama, kami memiliki opsi untuk menggunakan kluster terpisah yang terhubung menggunakan tautan replikasi asinkron. Ini memungkinkan kita untuk hampir melupakan latensi karena replikasi asinkron secara signifikan lebih cocok untuk bekerja di lingkungan latensi tinggi.
Opsi lainnya adalah, dengan jaringan latensi rendah antar pusat data, Anda mungkin masih bisa menjalankan Cluster MariaDB yang mencakup beberapa pusat data. Lagi pula, banyak pusat data tidak selalu berarti jarak yang jauh secara geografis - Anda juga dapat menggunakan beberapa penyedia yang terletak di area metropolitan yang sama, terhubung dengan jaringan yang cepat dan berlatensi rendah. Kemudian kita akan berbicara tentang peningkatan latensi hingga puluhan milidetik paling banyak, jelas bukan ratusan. Itu semua tergantung pada aplikasi tetapi peningkatan seperti itu mungkin dapat diterima.
Replikasi Asinkron Antara Cluster MariaDB
Mari kita lihat sekilas pendekatan asinkron. Idenya sederhana - dua cluster terhubung satu sama lain menggunakan replikasi asinkron.
Ini hadir dengan beberapa batasan. Sebagai permulaan, Anda harus memutuskan apakah Anda ingin menggunakan multi-master atau akankah Anda mengirim semua lalu lintas ke satu pusat data saja. Kami akan merekomendasikan untuk tidak menulis ke kedua pusat data dan menggunakan replikasi master - master. Ini dapat menyebabkan masalah serius jika Anda tidak berhati-hati.
Jika Anda memutuskan untuk menggunakan penyiapan aktif - pasif, Anda mungkin ingin menerapkan semacam perutean berbasis DNS untuk penulisan, untuk memastikan bahwa server aplikasi Anda akan selalu terhubung ke sekumpulan proxy yang terletak di pusat data aktif. Ini dapat dicapai dengan entri DNS secara harfiah yang akan diubah ketika failover diperlukan atau dapat dilakukan melalui semacam solusi penemuan layanan seperti Konsul atau dll.
Kelemahan utama dari lingkungan yang dibangun menggunakan replikasi asinkron adalah kurangnya kemampuan untuk menangani pemisahan jaringan antara pusat data. Ini diwarisi dari replikasi - tidak peduli apa yang ingin Anda tautkan dengan replikasi (single node, MariaDB Clusters), tidak ada cara untuk menghindari fakta bahwa replikasi tidak sadar kuorum. Tidak ada mekanisme untuk melacak keadaan node dan memahami gambaran tingkat tinggi dari keseluruhan topologi. Akibatnya, setiap kali tautan antara dua pusat data terputus, Anda berakhir dengan dua klaster MariaDB terpisah yang tidak terhubung dan keduanya siap menerima lalu lintas. Terserah pengguna untuk menentukan apa yang harus dilakukan dalam kasus seperti itu. Dimungkinkan untuk menerapkan alat tambahan yang akan memantau keadaan basis data dari luar (yaitu dari pusat data ketiga) dan kemudian mengambil tindakan (atau tidak mengambil tindakan) berdasarkan informasi tersebut. Hal ini juga memungkinkan untuk menempatkan alat yang akan berbagi infrastruktur dengan database tetapi akan cluster-aware dan dapat melacak keadaan konektivitas pusat data dan digunakan sebagai sumber kebenaran untuk skrip yang akan mengelola lingkungan. Misalnya, ClusterControl dapat digunakan dalam cluster tiga node, node per pusat data, yang menggunakan protokol RAFT untuk memastikan kuorum. Jika sebuah node kehilangan konektivitas dengan cluster lainnya, dapat diasumsikan bahwa pusat data telah mengalami partisi jaringan.
Cluster MariaDB Multi-DC
Alternatif dari replikasi asinkron dapat berupa solusi Cluster semua-MariaDB yang mencakup beberapa pusat data.
Seperti yang disebutkan di awal blog ini, MariaDB Cluster, sama seperti setiap Cluster berbasis Galera, akan terpengaruh oleh latensi tinggi. Karena itu, sangat dapat diterima untuk menjalankannya di lingkungan latensi "tidak terlalu tinggi" dan mengharapkannya berperilaku baik, memberikan kinerja yang dapat diterima. Itu semua tergantung pada throughput dan desain jaringan, jarak antara pusat data dan persyaratan aplikasi. Pendekatan seperti itu akan bekerja dengan baik terutama jika kita menggunakan segmen untuk membedakan pusat data yang terpisah. Hal ini memungkinkan MariaDB Cluster untuk mengoptimalkan konektivitas intra cluster dan mengurangi lalu lintas lintas DC seminimal mungkin.
Keuntungan utama penyiapan ini adalah bergantung pada MariaDB Cluster untuk menangani kegagalan. Jika Anda menggunakan tiga pusat data, Anda cukup terlindungi dari situasi otak terbelah - selama ada mayoritas, itu akan terus beroperasi. Tidak perlu memiliki node yang lengkap di pusat data ketiga - Anda juga dapat menggunakan Galera Arbitrator, daemon yang bertindak sebagai bagian dari cluster tetapi tidak harus menangani operasi database apa pun. Ini terhubung ke node, mengambil bagian dalam perhitungan kuorum dan dapat digunakan untuk menyampaikan lalu lintas jika koneksi langsung antara dua pusat data tidak berfungsi.
Dalam hal ini seluruh proses failover dapat digambarkan sebagai:tentukan semua node di penyeimbang beban (semua jika pusat data berdekatan satu sama lain, dalam kasus lain Anda mungkin ingin menambahkan beberapa prioritas untuk node terletak lebih dekat ke load balancer) dan hanya itu. Node Cluster MariaDB yang merupakan mayoritas akan dapat dijangkau melalui proxy apa pun.
Men-deploy Cluster MariaDB Multi-Cloud Menggunakan ClusterControl
Mari kita lihat dua opsi yang dapat Anda gunakan untuk menerapkan Cluster MariaDB multi-cloud menggunakan ClusterControl. Harap diingat bahwa ClusterControl memerlukan konektivitas SSH ke semua node yang akan dikelolanya sehingga terserah Anda untuk memastikan konektivitas jaringan di beberapa pusat data atau penyedia cloud. Selama konektivitas ada, kita dapat melanjutkan dengan dua metode.
Men-deploy Cluster MariaDB Menggunakan Replikasi Asinkron
ClusterControl dapat membantu Anda menerapkan dua cluster yang terhubung menggunakan replikasi asinkron. Saat Anda memiliki satu Cluster MariaDB yang diterapkan, Anda ingin memastikan bahwa salah satu node memiliki log biner yang diaktifkan. Ini akan memungkinkan Anda untuk menggunakan node tersebut sebagai master untuk cluster kedua yang akan segera kita buat.
Setelah log biner diaktifkan, kita dapat menggunakan pekerjaan Create Slave Cluster untuk memulai wizard penerapan.
Kami dapat mengalirkan data langsung dari master atau Anda dapat menggunakannya dari cadangan untuk menyediakan data.
Kemudian Anda disajikan dengan wizard penyebaran cluster standar yang harus Anda lewati Detail konektivitas SSH.
Anda akan diminta untuk memilih vendor dan versi database juga seperti yang diminta kata sandi untuk pengguna root.
Terakhir, Anda diminta untuk menentukan node yang ingin Anda tambahkan ke cluster dan Anda sudah siap.
Saat digunakan, Anda akan melihatnya di daftar cluster di UI ClusterControl.
Menerapkan Cluster MariaDB Multi-Cloud
Seperti yang kami sebutkan sebelumnya, opsi lain untuk menerapkan MariaDB Cluster adalah menggunakan segmen terpisah saat menambahkan node ke cluster. Di UI ClusterControl Anda akan menemukan opsi untuk “Tambah Node”:
Saat Anda menggunakannya, Anda akan disajikan layar berikut:
Segmen default adalah 0 sehingga Anda ingin mengubahnya ke nilai yang berbeda .
Setelah node ditambahkan, Anda dapat memeriksa di segmen mana mereka berada dengan melihat tab Ikhtisar:
Kesimpulan
Kami berharap blog singkat ini memberi Anda pemahaman yang lebih baik tentang opsi yang Anda miliki untuk penerapan Kluster MariaDB multi-cloud dan bagaimana opsi tersebut dapat digunakan untuk memastikan ketersediaan tinggi infrastruktur database Anda.