GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Ketersediaan Tinggi MariaDB dengan Detak Jantung dan DRBD di Ubuntu 16.04 LTS

Detak jantung dan DRBD keduanya digunakan untuk solusi cluster untuk aplikasi apa pun yang menggunakan dua server. Kedua server bekerja dalam mode aktif dan pasif, satu server akan bekerja pada saat yang sama dan server lain sebagai server cadangan. DRBD (Distributed Replicated Block Device) adalah layanan tingkat kernel yang menyinkronkan data antara dua server secara real-time. Heartbeat adalah program sumber terbuka yang memungkinkan server Linux utama dan cadangan untuk menentukan apakah yang lain "hidup" dan jika yang utama tidak, sumber daya failover ke cadangan. Ini juga akan mengelola ketersediaan tinggi IP dan layanan lain di server Anda.

Dalam tutorial ini, kita akan belajar bagaimana mencapai ketersediaan tinggi MariaDB menggunakan Heartbeat dan DRBD di server Ubuntu 16.04.

Persyaratan

  • Dua node dengan server Ubuntu 16.04 terinstal.
  • Dua kartu jaringan terpasang di setiap node.
  • Hard drive tambahan yang tidak dipartisi dipasang di setiap node.
  • Pengguna non-root dengan pengaturan hak sudo di setiap node.

Memulai

Sebelum memulai, Anda perlu mengatur alamat IP pada setiap node. Gunakan alamat IP berikut pada setiap node:

Node1 :

172.16.0.1 di eth0 dan 192.168.0.101 di eth1

Node2 :

172.16.0.2 di eth0 dan 192.168.0.102 di eth1

IP 192.168.0.103 akan menjadi IP ketersediaan tinggi.

Selanjutnya, Anda juga perlu mengatur nama host dan resolusi nama host pada setiap node. Sehingga setiap node dapat saling berkomunikasi. Pada Node pertama, buka file /etc/hosts dan /etc/hostname file:

sudo nano /etc/hosts

Tambahkan baris berikut di akhir file:

172.16.0.1  Node1
172.16.0.2  Node2
sudo nano /etc/hostname

Ubah file seperti gambar di bawah ini:

Node1

Simpan dan tutup file setelah Anda selesai.

Pada node kedua, buka file /etc/hosts dan file /etc/hostname:

sudo nano /etc/hosts

Tambahkan baris berikut di akhir file:

172.16.0.1  Node1
172.16.0.2  Node2
sudo nano /etc/hostname

Ubah file seperti gambar di bawah ini:

Node2

Simpan dan tutup file setelah Anda selesai.

Selanjutnya, perbarui setiap node dengan versi terbaru dengan perintah berikut:

sudo apt-get update -y
sudo apt-get upgrade -y

Setelah sistem Anda diperbarui, mulai ulang sistem untuk menerapkan perubahan ini.

Instal DRBD dan Detak Jantung

Selanjutnya, Anda perlu menginstal DRBD dan Heartbeat di kedua node. Secara default, keduanya tersedia di repositori default Ubuntu 16.04. Anda dapat menginstalnya hanya dengan menjalankan perintah berikut di kedua Node:

sudo apt-get install drbd8-utils heartbeat -y

Selanjutnya, mulai layanan DRBD dan Heartbeat dan aktifkan untuk memulai saat boot:

sudo systemctl start drbd
sudo systemctl start heartbeat
systemctl enable drbd
systemctl enable heartbeat

Konfigurasikan DRBD dan Detak Jantung

Selanjutnya, Anda perlu mengatur perangkat DRBD di setiap Node.js. Buat satu partisi pada drive kedua yang tidak dipartisi /dev/sdb pada setiap Node.

Anda dapat melakukan ini hanya dengan menjalankan perintah berikut pada setiap Node:

sudo echo -e 'n\np\n1\n\n\nw' | fdisk /dev/sdb

Selanjutnya, Anda perlu mengonfigurasi DRBD di kedua node. Anda dapat melakukannya dengan membuat file /etc/drbd.d/r0.res di setiap Node.

sudo nano /etc/drbd.d/r0.res

Tambahkan baris berikut:

global {
usage-count no;
}
resource r0 {
protocol C;
startup {
degr-wfc-timeout 60;
}
disk {
}
syncer {
rate 100M;
}
net {
cram-hmac-alg sha1;
shared-secret "aBcDeF";
}
on Node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.0.1:7789;
meta-disk internal;
}
on Node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.0.2:7789;
meta-disk internal;
}
}

Simpan dan tutup file setelah selesai, lalu buka file konfigurasi lain di setiap Node:

sudo nano /etc/ha.d/ha.cf

Tambahkan baris berikut:

# Check Interval
keepalive 1
# Time before server declared dead
deadtime 10
# Secondary wait delay at boot
initdead 60
# Auto-failback
auto_failback off
# Heartbeat Interface
bcast eth1
# Nodes to monitor
node Node1
node Node2

Simpan dan tutup file.

Selanjutnya, buka file resource /etc/ha.d/haresources di setiap Node:

sudo nano /etc/ha.d/haresources

Tambahkan baris berikut:

Node1 192.168.0.103/24 drbddisk::r0 Filesystem::/dev/drbd0::/var/lib/mysql::ext4::noatime

Di sini, Node1 adalah nama host dari node aktif utama Anda, 192.168.0.103 adalah alamat IP floating point, /var/lib/mysql adalah titik mount dan /dev/drbd0 adalah perangkat DRBD.

Selanjutnya, Anda perlu mendefinisikan dan menyimpan kunci otorisasi yang identik di kedua node. Anda dapat melakukannya dengan file /etc/ha.d/authkeys di setiap Node:

sudo nano /etc/ha.d/authkeys

Tambahkan baris berikut:

auth1
1 sha1 your-secure-password

Di sini, kata sandi aman Anda adalah kata sandi aman Anda. Gunakan kata sandi yang sama di kedua node.

Selanjutnya, buat dan mulai DRBD dengan menjalankan perintah berikut di Node1:

sudo drbdadm create-md r0
sudo systemctl restart drbd
sudo drbdadm outdate r0
sudo drbdadm -- --overwrite-data-of-peer primary all
sudo drbdadm primary r0
sudo mkfs.ext4 /dev/drbd0
sudo chmod 600 /etc/ha.d/authkeys
sudo mkdir /var/lib/mysql

Setelah disk DRBD dibuat di Node1, buat disk DRBD di Node2 dengan perintah berikut:

sudo drbdadm create-md r0
sudo systemctl restart drbd
sudo chmod 600 /etc/ha.d/authkeys
sudo mkdir /var/lib/mysql

Sekarang, Anda dapat memverifikasi bahwa disk DRBD terhubung dan disinkronkan dengan benar dengan menjalankan perintah berikut:

sudo cat /proc/drbd

Jika semuanya baik-baik saja, Anda akan melihat output berikut:

version: 8.4.5 (api:1/proto:86-101)
srcversion: F446E16BFEBS8B115AJB14H
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:210413 nr:0 dw:126413 dr:815311 al:35 bm:0 lo:0 pe:11 ua:0 ap:0 ep:1 wo:f oos:16233752
[>....................] sync'ed: 3.3% (14752/14350)M
finish: 0:12:23 speed: 12,156 (16,932) K/sec

Selanjutnya, mulai detak jantung di kedua Node untuk mengaktifkan bagian failover dari penyiapan Anda.

sudo systemctl start heartbeat

Selanjutnya, verifikasi partisi DRBD yang terpasang dengan perintah berikut pada Node1:

sudo mount | grep drbd

Anda akan melihat output berikut:

/dev/drbd0 on /var/lib/mysql type ext4 (rw,noatime,data=ordered)

Selanjutnya, verifikasi bahwa floating IP hanya terikat ke Node1 dengan perintah berikut:

sudo ip addr show | grep 192.168.0.103

Anda akan melihat output berikut:

inet 192.168.0.103/24 brd 192.168.0.255 scope global secondary eth1:0

Instal dan Konfigurasi MariaDB

Setelah semuanya dikonfigurasi dengan benar di kedua Node, saatnya untuk menginstal server MariaDB di kedua Node.

Jalankan perintah berikut di kedua Node untuk menginstal server MariaDB:

sudo apt-get install mariadb-server -y

Selanjutnya, Anda perlu menonaktifkan layanan MariaDB di kedua Node:

sudo systemctl disable mysql

Di sini, kita akan menggunakan Node1 sebagai primer dan database pada Node2 harus dibuat dan diisi melalui sinkronisasi dengan Node1. Jadi, Anda harus menghentikan layanan MariaDB dan menghapus konten di dalam /var/lib/mysql di Node2. Anda dapat melakukannya dengan perintah berikut:

sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql/*

Selanjutnya, Anda perlu menyalin file konfigurasi Pemeliharaan MySQL dari Node1 ke Node2. Anda dapat melakukannya dengan menjalankan perintah berikut:

sudo scp /etc/mysql/debian.cnf [email protected]:/etc/mysql/debian.cnf

Selanjutnya, Anda perlu membuat pengguna root untuk manajemen jarak jauh dan akses ke database pada instance MySQL yang sangat tersedia.

Anda dapat melakukannya dengan menjalankan perintah berikut di Node1:

mysql -u root -p

Masukkan kata sandi root Anda, lalu buat pengguna root dengan perintah berikut:

MariaDB [(none)]> CREATE USER 'root'@'192.168.0.%' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0..%' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Selanjutnya, Atur alamat bind untuk MySQL di kedua Node dengan perintah berikut:

sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mariadb.conf.d/*.cnf

Memulai Detak Jantung untuk Layanan MariaDB

Selanjutnya, Anda perlu menambahkan layanan MariaDB dalam instans detak jantung Anda di kedua Node. Anda dapat melakukannya dengan mengedit file /etc/ha.d/haresources:

sudo nano /etc/ha.d/haresources

Ubah baris berikut:

Node1 192.168.0.103/24 drbddisk::r0 Filesystem::/dev/drbd0::/var/lib/mysql::ext4::noatime mysql

Simpan dan tutup file, setelah Anda selesai.

Setelah detak jantung dikonfigurasi, Anda harus memulai ulang di kedua Node.

Pertama, restart heartbea di Node1:

sudo systemctl restart heartbeat

Selanjutnya, tunggu selama 50 detik, lalu restart layanan detak jantung di Node2:

sudo systemctl restart heartbeat

Uji Detak Jantung dan DRBD

Sekarang, semuanya telah dikonfigurasi dengan benar, saatnya untuk melakukan serangkaian tes untuk memverifikasi bahwa detak jantung benar-benar akan memicu transfer dari server aktif ke server pasif ketika server aktif gagal dalam beberapa cara.

Pertama, verifikasi bahwa Node1 adalah node drbd utama dengan perintah berikut di Node1:

sudo cat /proc/drbd

Anda akan melihat output berikut:

version: 8.4.5 (api:1/proto:86-101)
srcversion: F446E16BFEBS8B115AJB14H
O cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:22764644 nr:256 dw:529232 dr:22248299 al:111 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Selanjutnya, kami akan memverifikasi bahwa disk DRBD sudah terpasang dengan perintah berikut:

sudo mount | grep drbd
/dev/drbd0 on /var/lib/mysql type ext4 (rw,noatime,data=ordered)

Selanjutnya, verifikasi layanan MariaDB dengan perintah berikut:

sudo systemctl status mysql

Selanjutnya, akses server MariaDB dari mesin jarak jauh menggunakan IP mengambang dan buat database pengujian:

mysql -h 192.168.0.103 -u root -p
MariaDB [(none)]> create database test;
MariaDB [(none)]> quit

Selanjutnya, restart detak jantung di Node1:

sudo systemctl restart heartbeat

Sekarang, detak jantung akan menafsirkan restart ini sebagai kegagalan MariaDB pada Node1 dan akan memicu failover untuk menjadikan Node2 sebagai server utama.

Anda dapat memeriksa apakah DRBD sekarang memperlakukan Node1 sebagai server sekunder dengan perintah berikut di Node1:

sudo cat /proc/drbd

Anda akan melihat output berikut:

version: 8.4.5 (api:1/proto:86-101)
srcversion: F446E16BFEBS8B115AJB14H
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:22764856 nr:388 dw:529576 dr:22248303 al:112 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Sekarang, verifikasi bahwa Node2 adalah node drbd utama dengan menjalankan perintah berikut di Node2:

sudo cat /proc/drbd

Anda akan melihat output berikut:

version: 8.4.5 (api:1/proto:86-101)
srcversion: F446E16BFEBS8B115AJB14H
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:412 nr:20880892 dw:20881304 dr:11463 al:7 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Selanjutnya, Periksa untuk memastikan bahwa MariaDB berjalan di Node2:

sudo systemctl status mysql

Sekarang, sambungkan ke server MariaDB menggunakan IP mengambang di Node2 dari pengguna jarak jauh.

mysql -h 192.168.0.103 -u root -p

Selanjutnya, lihat database pengujian yang kita buat sebelumnya saat Node1 adalah server utama.

MariaDB [(none)]> show databases;

Anda akan melihat output berikut:

 +--------------------+
| Database |
+--------------------+
| test |
| information_schema |
| lost+found |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.04 sec)

Ubuntu
  1. Cara Menginstal MariaDB di Ubuntu 20.04 LTS

  2. Cara Mengatur Server dan Klien Kerberos di Ubuntu 18.04 LTS

  3. Cara Menginstal Seafile dengan Nginx di Ubuntu 20.04 LTS

  1. Cara Mengatur Ketersediaan Tinggi Nginx dengan Pacemaker, Corosync, dan Crmsh di Ubuntu 16.04

  2. Cara menginstal Wordpress dengan Nginx, MariaDB dan HHVM di Ubuntu 16.04 LTS

  3. Cara Mengatur Jenkins Master dan Slave di Ubuntu 18.04 LTS

  1. Cara Mengatur Magento 2 Dengan Varnish dan Apache di Ubuntu 16.04

  2. Cara Menginstal dan Mengkonfigurasi OrangeScrum di Ubuntu 18.04 LTS

  3. Cara Menginstal Lighttpd dengan PHP-FPM 7 dan MySQL 5.7 di Ubuntu 18.04 LTS