GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengatur Cluster MariaDB Galera dengan HAproxy di CentOS 7

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.


Cent OS
  1. Cara Mengatur Cluster MariaDB Galera di Ubuntu 20.04

  2. Cara Setup Pure-FTPD dengan MySQL di CentOS &RedHat

  3. Bagaimana cara mengganti MySQL dengan MariaDB di CentOS 6

  1. Cara Setup Server FTP dengan VSFTPD di CentOS 7

  2. Cara Setup Server FTP dengan VSFTPD di CentOS 8

  3. Cara Menginstal MariaDB Galera Cluster di Ubuntu 16.04

  1. Cara Setup Riak KV NoSQL Database Cluster di CentOS 7

  2. Cara Menginstal ownCloud 9.1 dengan Nginx dan MariaDB di CentOS 7

  3. Cara mengatur HAProxy sebagai Load Balancer untuk MariaDB di CentOS 7