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.