Galera Cluster adalah salah satu solusi ketersediaan tinggi yang paling populer untuk MySQL. Ini adalah cluster yang hampir sinkron, yang membantu menjaga agar replikasi tetap terkendali. Berkat kontrol aliran, kluster Galera dapat mencekik dirinya sendiri dan memungkinkan lebih banyak node yang dimuat untuk mengejar ketinggalan dengan kluster lainnya. Rilis terbaru dari Galera 4 membawa fitur dan peningkatan baru. Kami membahasnya dalam postingan blog yang membahas tentang MariaDB 10.4 Galera Cluster dan postingan blog yang membahas fitur Galera 4. yang sudah ada dan yang akan datang.
Bagaimana tarif Galera 4 saat digunakan di Amazon EC2? Seperti yang mungkin Anda ketahui, Amazon menawarkan Layanan Basis Data Relasional, yang dirancang untuk memberi pengguna cara mudah untuk menerapkan basis data MySQL yang sangat tersedia. Rekan saya, Ashraf Sharif, membandingkan waktu failover untuk RDS MySQL dan RDS Aurora dalam posting blognya. Waktu failover untuk Aurora terlihat sangat bagus tetapi ada tapi-tapian. Pertama-tama, Anda dipaksa untuk menggunakan RDS. Anda tidak dapat menerapkan Aurora pada instans yang Anda kelola. Jika fitur dan opsi yang ada di Aurora tidak cukup untuk Anda, Anda tidak memiliki opsi lain selain menerapkan sesuatu sendiri. Di sini memasuki Galera. Galera, tidak seperti Aurora, bukanlah kotak hitam berpemilik. Sebaliknya, ini adalah perangkat lunak open source, yang dapat digunakan secara bebas di semua lingkungan yang didukung. Anda dapat menginstal Galera Cluster di AWS Elastic Computing Cloud (EC2) dan, melalui itu, membangun lingkungan yang sangat tersedia di mana failover hampir instan:segera setelah Anda dapat mendeteksi kegagalan node, Anda dapat terhubung kembali ke node Galera lainnya. Bagaimana cara menyebarkan Galera 4 di EC2? Dalam posting blog ini kita akan melihatnya dan kami akan memberi Anda panduan langkah demi langkah yang menunjukkan cara paling sederhana untuk mencapainya.
Menerapkan Cluster Galera 4 di EC2
Langkah pertama adalah membuat lingkungan yang akan kita gunakan untuk cluster Galera kita. Kami akan menggunakan mesin virtual Ubuntu 18.04 LTS.
Kami akan menggunakan ukuran instance t2.medium untuk tujuan blog ini pos. Anda harus menskalakan instance Anda berdasarkan beban yang diharapkan.
Kami akan menerapkan tiga node di cluster. Mengapa tiga? Kami memiliki blog yang menjelaskan cara Galera mempertahankan ketersediaan tinggi.
Kami akan mengonfigurasi penyimpanan untuk instance tersebut.
Kami juga akan memilih grup keamanan yang tepat untuk node. Sekali lagi, dalam kasus kami, grup keamanan cukup terbuka. Anda harus memastikan akses dibatasi sebanyak mungkin - hanya node yang harus mengakses database yang boleh terhubung ke node tersebut.
Akhirnya, kami memilih par kunci yang ada atau membuat yang baru. Setelah langkah ini, tiga mesin virtual kami akan diluncurkan.
Setelah mereka aktif, kita dapat menghubungkannya melalui SSH dan mulai mengonfigurasi basis data.
Kami memutuskan untuk menggunakan konvensi penamaan 'node1, node2, node3' oleh karena itu kami harus mengedit /etc/hosts pada semua node dan mencantumkannya di samping IP lokal masing-masing. Kami juga membuat perubahan di /etc/hostname untuk menggunakan nama baru untuk node. Setelah ini selesai, kita dapat mulai menyiapkan cluster Galera kita. Pada saat penulisan, satu-satunya vendor yang menyediakan versi GA dari Galera 4 adalah MariaDB dengan 10.4 oleh karena itu kami akan menggunakan MariaDB 10.4 untuk cluster kami. Kami akan melanjutkan penginstalan menggunakan saran dan panduan dari situs web MariaDB.
Menerapkan Klaster Galera MariaDB 10.4
Kita akan mulai dengan menyiapkan repositori:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Kami mengunduh skrip yang dimaksudkan untuk menyiapkan repositori dan kami menjalankannya untuk memastikan semuanya telah diatur dengan benar. Repositori yang dikonfigurasi ini untuk menggunakan versi MariaDB terbaru, yang pada saat penulisan ini adalah 10.4.
[email protected]:~# apt update
Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease
Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease
Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease
Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release
Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Seperti yang Anda lihat, repositori untuk MariaDB 10.4 dan MaxScale 2.4 telah dikonfigurasi. Sekarang kita dapat melanjutkan dan menginstal MariaDB. Kami akan melakukannya langkah demi langkah, simpul demi simpul. MariaDB memberikan panduan tentang bagaimana Anda harus menginstal dan mengonfigurasi cluster.
Kita perlu menginstal paket:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Perintah ini menginstal semua paket yang diperlukan untuk menjalankan MariaDB 10.4 Galera. MariaDB membuat satu set file konfigurasi. Kami akan menambahkan yang baru, yang akan berisi semua pengaturan yang diperlukan. Secara default akan disertakan di akhir file konfigurasi sehingga semua pengaturan sebelumnya untuk variabel yang kita atur akan ditimpa. Idealnya, setelah itu, Anda akan mengedit file konfigurasi yang ada untuk menghapus pengaturan yang kami masukkan ke galera.cnf untuk menghindari kebingungan di mana pengaturan yang diberikan dikonfigurasi.
[email protected]:~# cat /etc/mysql/conf.d/galera.cnf
[mysqld]
bind-address=10.0.0.103
default_storage_engine=InnoDB
binlog_format=row
innodb_autoinc_lock_mode=2
# Galera cluster configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"
wsrep_cluster_name="Galera4 cluster"
wsrep_sst_method=mariabackup
wsrep_sst_auth='sstuser:pa55'
# Cluster node configuration
wsrep_node_address="10.0.0.103"
wsrep_node_name="node1"
Jika konfigurasi sudah siap, kita bisa mulai.
[email protected]:~# galera_new_cluster
Ini harus mem-bootstrap cluster baru pada node pertama. Selanjutnya kita harus melanjutkan dengan langkah serupa pada node yang tersisa:instal paket yang diperlukan dan konfigurasikan dengan mengingat bahwa IP lokal berubah sehingga kita harus mengubah file galera.cnf.
Ketika file konfigurasi sudah siap, kita harus membuat pengguna yang akan digunakan untuk Snapshot State Transfer (SST):
MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';
Query OK, 0 rows affected (0.022 sec)
MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.022 sec)
Kita harus melakukannya pada node pertama. Node yang tersisa akan bergabung dengan cluster dan mereka akan menerima snapshot status lengkap sehingga pengguna akan ditransfer ke node tersebut. Sekarang satu-satunya hal yang harus kita lakukan adalah memulai node yang tersisa:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
dan verifikasi bahwa cluster memang telah terbentuk:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Semuanya baik-baik saja, klusternya sudah aktif dan terdiri dari tiga simpul Galera. Kami berhasil menerapkan MariaDB 10.4 Galera Cluster di Amazon EC2.