Pada artikel hari ini kita akan menginstal MariaDB Galera cluster dengan HAproxy untuk load balance MariaDB dan wordpress. Galera adalah teknologi clustering aktif-aktif, artinya dapat mendukung penulisan di semua node yang kemudian direplikasi di seluruh cluster. Ada juga pengelompokan aktif-pasif, di mana hanya node yang dapat ditulis. Kami juga akan menginstal HAproxy untuk load balancing di cluster kami. Instalasi akan dilakukan pada 5 server CentOS 7, tiga untuk MariaDB 10.1 Galera, satu untuk Haproxy dan satu untuk wordpress. HAproxy bekerja sedemikian rupa sehingga merutekan permintaan ke setiap node dalam mode round robin, sambil menampilkan dirinya sebagai ujung depan. Di sini kami menggunakan cara pengelompokan tradisional dengan menempatkan server basis data di jaringan pribadi dan hanya server web yang menghadap ke alamat ip publik.

Menyiapkan kluster Galera
Di semua server kita perlu menginstal mysql. Pertama kita akan menambahkan repositori
echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo
Kemudian kita install mariadb, rsync dan xinetd
sudo yum install mariadb-server rsync xinetd
Kita perlu mengedit /etc/hosts, editor apa pun akan melakukannya tetapi saya akan menggunakan nano
nano /etc/hosts
Di luar sana ip dan nama host Anda, misalnya
192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
Pastikan Anda menggunakan ip pribadi dari host Anda, jika Anda menggunakan yang publik, Anda perlu mengenkripsi lalu lintas di antara mereka untuk mengamankan cluster Anda.
Setelah menginstal MariaDB, edit
nano /etc/my.cnf.d/server.cnf
Di semua server, Anda perlu menemukan bagian [galera] dalam file dan membuatnya terlihat seperti ini, simpan untuk alamat ip yang dicetak tebal dan harus diubah
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.
bind-address=0.0.0.0
# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"
wsrep_sst_method=rsync
Menatap Gugus Galera
Setelah ini dikonfigurasi, Anda perlu memulai cluster
Pertama pada simpul mariadb01 yang merupakan master dengan perintah ini
galera_new_cluster
Kemudian pada dua node lainnya dengan perintah systemctl normal:
systemctl start mariadb
Selanjutnya kita dapat memverifikasi bahwa cluster sedang berjalan:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Hal berikutnya adalah menjalankan skrip mysql_secure_installation
mysql_secure_installation
Menyiapkan firewalld
Sekarang ketika ketiga node terhubung, kita dapat memunculkan firewalld dan mengkonfigurasinya.
systemctl start firewalld
Buka klien mariadb dan port replikasi galera:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp
Buka port rsync yang kita gunakan untuk replikasi
firewall-cmd --permanent --add-port=873/tcp
Port penting lainnya
firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp
Terakhir muat ulang firewall
firewall-cmd --reload
Menggunakan xinetd dan clustercheck
Clustercheck adalah skrip yang berguna untuk memantau cluster. Mari kita instal dengan mengikuti perintah
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/
Selanjutnya kita perlu menambahkan mysqlchk ke daftar layanan. Untuk itu kita edit file services:
nano /etc/services
Karena filenya panjang, di nano ketik Ctrl-W dan cari 9200. Semua layanan yang menggunakan port itu perlu dikomentari, dan layanan baru perlu ditambahkan, sehingga bagian itu perlu terlihat seperti ini:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
Ketika ini disimpan dan selesai, kita dapat memulai xinetd
systemctl start xinetd
Semua ini perlu dilakukan pada semua node, dan sekarang hanya pada master kita perlu menambahkan pengguna untuk clustercheck.
mysql -u root -p
GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
Selanjutnya kita bisa mencoba script clustercheck
clustercheck

Menyiapkan HAproxy
Masuk ke server haproxy yang Anda tentukan. Kami sekarang memasang penyeimbang beban
Edit file /etc/hosts Anda menjadi seperti ini (tentu saja dengan ips Anda)
192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01
Selanjutnya kita bisa menginstal haproxy
yum install haproxy
Selanjutnya kita perlu mengedit rsyslog.conf
nano /etc/rsyslog.conf
Batalkan komentar pada dua baris itu
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
Simpan dan keluar
echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf
memungkinkan cadangan konfigurasi haproxy default
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Selanjutnya kita buat file baru dengan nano
nano /etc/haproxy/haproxy.cfg
Gunakan pastebin ini sebagai konfigurasi, tetapi ubah alamat ip.
Saatnya mengatur firewall pada node haproxy
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
Kemudian muat ulang firewall
firewall-cmd --reload
Mengatur akses MariaDB dari HAproxy
Pada tipe cluster mariadb:
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";
Kemudian kita pergi ke server haproxy01 dan mencoba mengakses database.
Anda harus menginstal klien MariaDB, jadi mari kita lakukan itu:
echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo
Itu untuk menambahkan repositori, perintah ini menginstalnya
yum install MariaDB-client
Dan kemudian mari kita uji apakah
mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

Pastikan Anda memasukkan verystrongpassword sebagai kata sandi dan bukan kata sandi root biasa.
Menginstal Wordpress
Terakhir kita akan mengatur wordpress untuk digunakan di cluster kita. Ada pekerjaan yang harus diselesaikan pada simpul mariadb01, pada simpul haproxy01 dan pada simpul wp01.
Di mariadb01
mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';
Pada simpul wp01 diatur di /etc/hosts/
192.168.220.17 wp01
192.168.210.252 haproxy01
Juga di haproxy01 tambahkan
192.168.220.17 wp01
Selanjutnya kita perlu menginstal paket yang diperlukan pada node wp01
yum install httpd php php-gd php-mysqlnd rsync
Dari sini kita perlu menggunakan akun non-root dengan hak sudo. Saya tidak punya, jadi saya akan membuatnya:
useradd miki
usermod miki -aG wheel
passwd miki
Kemudian masuk sebagai pengguna saya
su miki
Ubah dir ke rumah
cd
Dan kemudian unduh wordpress versi terbaru dan buka paketnya
wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
Kami akan menggunakan rsync untuk menyalin wordpress ke dir apache
sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads
Kami juga perlu mengubah kepemilikan menjadi pengguna Apache
sudo chown -R apache:apache /var/www/html/*
Mengonfigurasi wordpress
WordPress dikonfigurasi dalam file wp-config.php, di sana kita perlu mengatur parameter seperti alamat host server database, kredensial login, nama database. Mari kita backup file konfigurasi:
cd /var/www/html
cp wp-config-sample.php wp-config.php
Dan kemudian kami melakukan pengeditan:
nano wp-config.php
Hanya ubah baris tersebut
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');
Terakhir, kita restart server web Apache:
sudo systemctl restart httpd
Selesaikan instalasi WordPress dari browser
Kita bisa pergi ke alamat publik node wordpress seperti di bawah ini untuk melanjutkan proses install word-press

Sekarang kita sudah menyiapkan cluster dengan menjalankan wordpress

Kesimpulan
Di sini kami telah menyiapkan wordpress di atas klaster Galera yang diseimbangkan oleh HAproxy. Ini adalah solusi tangguh untuk situs dengan beban tinggi dan meskipun penyiapannya memerlukan beberapa saat, ini memberi situs Anda hampir sepenuhnya asuransi dari waktu henti. Semua lalu lintas antar node dilakukan oleh alamat ip pribadi, dan hanya satu alamat publik untuk ujung depan Worpress yang digunakan untuk mengakses situs. Ini saja untuk artikel ini, terima kasih telah membaca dan semoga hari Anda menyenangkan.