MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Menggunakan Replikasi Cluster Galera MySQL untuk Membuat Cluster Geo-Distributed:Bagian Kedua

Di blog sebelumnya dalam seri ini, kami membahas pro dan kontra menggunakan Galera Cluster untuk membuat cluster yang didistribusikan secara geografis. Dalam postingan ini, kami akan merancang cluster terdistribusi geografis berbasis Galera dan kami akan menunjukkan bagaimana Anda dapat menerapkan semua bagian yang diperlukan menggunakan ClusterControl.

Merancang Cluster Galera Terdistribusi-Geo

Kita akan mulai dengan menjelaskan lingkungan yang ingin kita bangun. Kami akan menggunakan tiga pusat data jarak jauh, yang terhubung melalui Wide Area Network (WAN). Setiap pusat data akan menerima penulisan dari server aplikasi lokal. Bacaan juga hanya bersifat lokal. Ini dimaksudkan untuk menghindari lalu lintas yang tidak perlu melintasi WAN.

Untuk penyiapan ini, konektivitas sudah terpasang dan diamankan, tetapi kami tidak akan menjelaskan dengan tepat bagaimana hal ini dapat dicapai. Ada banyak metode untuk mengamankan konektivitas mulai dari solusi perangkat keras dan perangkat lunak berpemilik melalui OpenVPN dan berakhir di terowongan SSH.

Kami akan menggunakan ProxySQL sebagai penyeimbang beban. ProxySQL akan digunakan secara lokal di setiap pusat data. Ini juga akan mengarahkan lalu lintas hanya ke node lokal. Node jarak jauh selalu dapat ditambahkan secara manual dan kami akan menjelaskan kasus di mana ini mungkin merupakan solusi yang baik. Aplikasi dapat dikonfigurasi untuk terhubung ke salah satu node ProxySQL lokal menggunakan algoritma round-robin. Kita juga dapat menggunakan Keepalive dan IP Virtual untuk mengarahkan lalu lintas ke node ProxySQL tunggal, selama satu node ProxySQL dapat menangani semua lalu lintas.

Solusi lain yang mungkin adalah menempatkan ProxySQL dengan node aplikasi dan mengonfigurasi aplikasi untuk terhubung ke proxy di localhost. Pendekatan ini bekerja cukup baik dengan asumsi bahwa kecil kemungkinan ProxySQL tidak akan tersedia namun aplikasi akan bekerja dengan baik pada node yang sama. Biasanya yang kita lihat adalah kegagalan node atau kegagalan jaringan, yang akan memengaruhi ProxySQL dan aplikasi secara bersamaan.

Diagram di atas menunjukkan versi lingkungan, tempat ProxySQL ditempatkan node yang sama dengan aplikasi. ProxySQL dikonfigurasi untuk mendistribusikan beban kerja di semua node Galera di pusat data lokal. Salah satu node tersebut akan dipilih sebagai node untuk mengirim penulisan sementara SELECT akan didistribusikan ke semua node. Memiliki satu node penulis khusus di pusat data membantu mengurangi jumlah kemungkinan konflik sertifikasi, yang biasanya menghasilkan kinerja yang lebih baik. Untuk mengurangi ini lebih jauh kita harus mulai mengirimkan lalu lintas melalui koneksi WAN, yang tidak ideal karena pemanfaatan bandwidth akan meningkat secara signifikan. Saat ini, dengan segmen yang ada, hanya dua salinan set tulis yang dikirim melintasi pusat data - satu per DC.

Perhatian utama dengan penerapan geo-distributed Galera Cluster adalah latensi. Ini adalah sesuatu yang selalu harus Anda uji sebelum meluncurkan lingkungan. Apakah saya baik-baik saja dengan waktu komit? Pada setiap commit, sertifikasi harus terjadi sehingga writeset harus dikirim dan disertifikasi pada semua node dalam cluster, termasuk yang jarak jauh. Mungkin latensi tinggi akan menganggap penyiapan tidak sesuai untuk aplikasi Anda. Dalam hal ini Anda mungkin menemukan beberapa kluster Galera yang terhubung melalui replikasi asinkron lebih cocok. Ini akan menjadi topik untuk posting blog lain.

Men-deploy Cluster Galera Terdistribusi-Geo Menggunakan ClusterControl

Untuk memperjelas, kami akan menunjukkan di sini bagaimana penerapannya. Kami tidak akan menggunakan pengaturan multi-DC yang sebenarnya, semuanya akan digunakan di lab lokal. Kami berasumsi bahwa latensi dapat diterima dan seluruh penyiapan dapat dijalankan. Apa yang hebat tentang ClusterControl adalah bahwa itu adalah infrastruktur-agnostik. Tidak peduli apakah node berdekatan satu sama lain, terletak di pusat data yang sama atau jika node didistribusikan di beberapa penyedia cloud. Selama ada konektivitas SSH dari instance ClusterControl ke semua node, proses penerapan terlihat persis sama. Itulah mengapa kami dapat menunjukkannya kepada Anda langkah demi langkah hanya dengan menggunakan lab lokal.

Menginstal ClusterControl

Pertama, Anda harus menginstal ClusterControl. Anda dapat mengunduhnya secara gratis. Setelah mendaftar, Anda harus mengakses halaman dengan panduan untuk mengunduh dan menginstal ClusterControl. Ini sesederhana menjalankan skrip shell. Setelah Anda menginstal ClusterControl, Anda akan disajikan dengan formulir untuk membuat pengguna administratif:

Setelah Anda mengisinya, Anda akan disajikan layar Selamat Datang dan akses ke wizard penerapan:

Kita akan menggunakan penerapan. Ini akan membuka wizard penerapan:

Kami akan memilih MySQL Galera. Kami harus melewati detail konektivitas SSH - baik pengguna root atau pengguna sudo didukung. Pada langkah selanjutnya kita mendefinisikan server di cluster.

Kami akan menerapkan tiga node di salah satu pusat data. Kemudian kami akan dapat memperluas cluster, mengonfigurasi node baru di segmen yang berbeda. Untuk saat ini yang harus kita lakukan adalah mengklik “Deploy” dan melihat ClusterControl menerapkan cluster Galera.

Tiga node pertama kita sudah aktif dan berjalan, sekarang kita dapat melanjutkan untuk menambahkan node tambahan di pusat data lain.

Anda dapat melakukannya dari menu tindakan, seperti yang ditunjukkan pada tangkapan layar di atas .

Di sini kita dapat menambahkan node tambahan, satu per satu. Yang penting, Anda harus mengubah segmen Galera menjadi bukan nol (0 digunakan untuk tiga node awal).

Setelah beberapa saat, kami mendapatkan sembilan node, yang didistribusikan ke tiga segmen.

Sekarang, kita harus menerapkan lapisan proxy. Kami akan menggunakan ProxySQL untuk itu. Anda dapat menerapkannya di ClusterControl melalui Manage -> Load Balancer:

Ini membuka bidang penerapan:

Pertama, kita harus memutuskan di mana akan menerapkan ProxySQL. Kami akan menggunakan node Galera yang ada tetapi Anda dapat mengetik apa saja di bidang sehingga sangat mungkin untuk menyebarkan ProxySQL di atas node aplikasi. Selain itu, Anda harus memberikan kredensial akses untuk pengguna administratif dan pemantauan.

Kemudian kita harus memilih salah satu pengguna yang ada di MySQL atau membuatnya sekarang. Kami juga ingin memastikan bahwa ProxySQL dikonfigurasi untuk menggunakan node Galera yang hanya terletak di pusat data yang sama.

Bila Anda memiliki satu ProxySQL yang siap di pusat data, Anda dapat menggunakannya sebagai sumber konfigurasi:

Ini harus diulang untuk setiap server aplikasi yang Anda miliki di semua pusat data . Kemudian aplikasi harus dikonfigurasi untuk terhubung ke instance ProxySQL lokal, idealnya melalui soket Unix. Ini hadir dengan performa terbaik dan latensi terendah.

Setelah ProxySQL terakhir diterapkan, lingkungan kita siap. Node aplikasi terhubung ke ProxySQL lokal. Setiap ProxySQL dikonfigurasi untuk bekerja dengan node Galera di pusat data yang sama:

Kesimpulan

Kami berharap seri dua bagian ini membantu Anda memahami kekuatan dan kelemahan Cluster Galera yang didistribusikan secara geografis dan bagaimana ClusterControl membuatnya sangat mudah untuk menerapkan dan mengelola cluster tersebut.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghentikan atau Memperlambat Operasi SST pada Cluster Galera

  2. Bagaimana TIDAK RLIKE Bekerja di MariaDB

  3. Bagaimana SECOND() Bekerja di MariaDB

  4. Bagaimana ROUND() Bekerja di MariaDB

  5. MariaDB JSON_TABLE() Dijelaskan