Dalam tutorial ini, saya akan memandu Anda melalui instalasi cluster MariaDB Galera di CentOS 7 yang memiliki load balancer HAProxy di depan. Total setup terdiri dari 4 server. Saya akan menggunakan 3 server CentOS 7 untuk node database, 2 node akan aktif dan 1 bertindak sebagai node cadangan. Server keempat akan digunakan untuk penyeimbang beban HAProxy. Untuk algoritme keseimbangan, kami menggunakan leastconn (tetapi Anda dapat menggunakan algoritme lain).
MariaDB adalah salah satu server database relasional paling populer yang dibuat oleh pengembang asli dari server Database MySQL. MariaDB adalah fork dari MySQL yang mendukung mesin penyimpanan XtraDB, mesin penyimpanan InnoDB, dan mesin penyimpanan baru yang disebut aria.
MariaDB Galera Cluster adalah cluster multi-master sinkron untuk MariaDB yang hanya tersedia di sistem operasi berbasis GNU/Linux. Galera Cluster hanya mendukung mesin penyimpanan XtraDB dan InnoDB. Ia menggunakan perpustakaan Galera untuk replikasi dengan kontrol anggota otomatis, node otomatis bergabung dan untuk membaca dan menulis ke node cluster.
Prasyarat
- Server 4 CentOS 7 - 64bit:
mariadb1
192.168.1.132
mariadb2
192.168.1.133
mariadb3
192.168.1.134
HAProxy
192.168.1.135
- Hak istimewa root di keempat server.
Langkah 1 - Instal dan Konfigurasikan MariaDB Galera Cluster
Pada langkah ini, kita akan menginstal dan mengkonfigurasi MariaDB Galera Cluster pada 3 server CentOS. Kami akan menginstal server MariaDB-Galera, kemudian mengaktifkan firewall dan membuka beberapa port untuk database dan layanan lainnya. Kemudian kita akan menginstal script clustercheck pada setiap server MariaDB, sehingga kita dapat mengecek status server dari HAProxy.
A. Konfigurasikan nama host dan siapkan sistem dasar
Masuk ke semua server database dengan akun ssh Anda:
ssh [dilindungi email]
ssh [dilindungi email].133
ssh [dilindungi email]
Beralih ke pengguna root dengan perintah sudo:
sudo su
Edit file host di setiap server MariaDB dan tambahkan semua alamat IP server dan nama host dari node lain:
vi /etc/hosts
Lihat konfigurasi /etc/hosts saya di bawah ini:
192.168.1.132 mariadb1
192.168.1.133 mariadb2
192.168.1.134 mariadb3
Simpan file dan keluar.
Selanjutnya, nonaktifkan SELinux di setiap server karena menyebabkan masalah dengan MariaDB Galera. Nonaktifkan SELinux dengan perintah sed ini:
sed -i -e 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux
sed (stream editor):ganti "SELINUX=permissive" dengan "SELINUX=disabled" pada file /etc/sysconfig/selinux.
B. Instal Server MariaDB Galera
Pada langkah ini, kita akan menginstal MariaDB Galera 10.0 yang tersedia di repositori MariaDB.
Buat file .repo baru di direktori yum.repos.d dengan perintah vi:
vi /etc/yum.repos.d/mariadb.repo
Tempel detail repositori MariaDB Galera di bawah dan simpan:
# Daftar repositori MariaDB 10.0 CentOS - dibuat 07-09-2015 14:56 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name =MariaDB
baseurl =http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck =1
Sekarang instal MariaDB Galera Server and Client, dan beberapa paket lain yang diperlukan untuk tutorial ini:
yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget
Tunggu sampai proses penginstalan selesai.
C. Konfigurasikan Firewalld
Kami akan mengaktifkan firewall default CentOS 7 yang disebut Firewalld. Kami akan menyalakannya dan membuka port TCP yang digunakan oleh layanan yang akan kami instal.
3306 =Digunakan untuk koneksi klien MySQL/MariaDB.
4567 =Lalu lintas replikasi Cluster Galera.
873 =Rsync port.
4444 =Untuk semua State Snapshot Transfer (SST) lainnya.
9200 =xinetd - clustercheck.
Nyalakan firewalld dengan perintah systemctl ini:
systemctl start firewalld
Sekarang buka port dengan firewall-cmd:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp
firewall-cmd --permanent --add -port=873/tcp
firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp
dan muat ulang firewalld:
firewall-cmd --reload
D. Konfigurasikan MariaDB Galera Cluster
Buka direktori /etc/my.cnf.d/ dan edit file server.conf dengan vi:
cd /etc/my.cnf.d/
vi server.conf
Uncomment dan tambahkan beberapa baris konfigurasi, Anda dapat melihat detailnya di bawah ini:
wsrep_provider=/usr/lib64/galera/libgalera_smm.so # Jalur ke pustaka penyedia wsrep
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.134" # Node Grup, tambahkan semua IP Server MardiaDB
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Tambahkan beberapa konfigurasi di bawah ini
# Nama Cluster
wsrep_cluster_name="mariadb_cluster"
# Tambahkan IP Server - pada mariadb2 =192.168.1.133 - pada mariadb3 =192.168.1.134
wsrep_node_address="192.168.1.132 "
# Penyedia Replikasi dengan rsync
wsrep_sst_method=rsync
Simpan file dan keluar.
Di server mariadb1, mari kita bootstrap cluster dengan perintah di bawah ini:
/etc/rc.d/init.d/mysql bootstrap
hasil:
Bootstrap cluster.. Memulai MySQL.. SUKSES!
Di server mariadb2 dan mariadb3, mulai MariaDB secara normal:
/etc/init.d/mysql start
mariadb1 bootstrap.
mariadb2 dan mariadb3 dimulai.
MariaDB telah dimulai di semua node, sekarang konfigurasikan kata sandi root untuk MariaDB di semua server dengan perintah di bawah ini:
/usr/bin/mysql_secure_installation
E. Konfigurasi Clustercheck
Clustercheck adalah skrip bash yang berguna untuk membuat proxy (mis:HAProxy) yang mampu memantau server MariaDB.
Buka direktori /tmp dan unduh skrip dengan wget:
cd /tmp
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Sekarang buat skrip dapat dieksekusi dengan mengubah izin dan pindahkan ke direktori /usr/bin/:
chmod +x clustercheck
mv clustercheck /usr/bin/
Selanjutnya, buat skrip xinetd untuk clusterchek dengan perintah vi di direktori "/etc/xinet.d/":
vi /etc/xinetd.d/mysqlchk
Rekatkan konfigurasi di bawah ini:
# default:on
# description:mysqlchk
service mysqlchk
{
nonaktifkan =tidak
flags =GUNAKAN KEMBALI
socket_type =streaming
port =9200 # Port ini digunakan oleh xinetd untuk clustercheck
wait =no
user =none
server =/usr/bin/clustercheck
user =none
server =/usr/bin/clustercheck
USERID only_from =0.0.0.0/0
per_source =TANPA BATAS
}
Simpan dan keluar.
Tambahkan clustercheck ke daftar layanan:
vi /etc/services
Masuk ke baris 10101, beri komentar pada layanan yang menggunakan port 9200 dan tambahkan baris baru untuk mysqlchk/clustercheck.
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
Simpan file dan keluar.Kemudian mulai layanan xinetd:
systemctl start xinetdUntuk melakukan clustercheck, Anda harus membuat pengguna baru di MySQL. Masuk ke shell MariaDB dan buat pengguna baru dengan nama "clustercheckuser" dan kata sandi "clustercheckpassword!".
mysql -u root -p
PROSES HIBAH PADA *.* UNTUK 'clustercheckuser'@'localhost' DIIDENTIFIKASI DENGAN 'clustercheckpassword!';
keluar;
Pada tahap ini, semua layanan MariaDB disinkronkan.
Pengujian clustercheck:
/usr/bin/clustercheckPastikan kode hasil adalah 200.
Langkah 2 - Instal dan Konfigurasi HAProxy
Masuk ke server HAProxy:
ssh [dilindungi email]Menjadi pengguna root dan tambahkan IP server MariaDB dan nama host ke file "/etc/hosts":
sudo su
vi /etc/hostsHAProxy tersedia di repositori dasar CentOS, jalankan perintah yum ini untuk menginstalnya:
yum -y install haproxyKemudian konfigurasikan log untuk HAProxy dengan mengedit file konfigurasi rsyslog:
vi /etc/rsyslog.confBatalkan komentar pada port udp:
# Menyediakan penerimaan syslog UDP
$ModLoad imudp
$UDPServerRun 51Simpan file dan keluar dari editor.
Tambahkan konfigurasi HAProxy di direktori rsyslog.d:
vi /etc/rsyslog.d/haproxy.confTempelkan konfigurasi di bawah ini:
local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.logSimpan file dan mulai ulang rsyslog:
systemctl restart rsyslogSelanjutnya, buat file konfigurasi HAProxy baru.
Buka direktori /etc/haproxy dan buat cadangan file konfigurasi dafult haproxy.
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.origBuat file konfigurasi haproxy baru:
vi /etc/haproxy/haproxy.cfgDan paste konfigurasi HAProxy di bawah ini:
global
log 127.0.0.1 local2
maxconn 1024
pengguna haproxy
grup haproxy
daemon
mode 600 level admin # Buat file kaus kaki untuk haproxy
defaults
log global
mode http
option tcplog
ret br /> option pengiriman ulang
maxconn 1024
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen 0.0.b>listen mariad>## MariaDB balance leastconn - cluster mendengarkan pada port 3030.
mode tcp
balance leastconn
opsi httpchk
server mariadb1 192.168.1.132:3306 periksa port 9200
server mariadb2 192.168.1.133:3306 periksa port 9200
server mariadb3 192.168.1.134:3306 periksa port 9200 backup # Make mariadb3 sebagai cadangan - data replikasi otomatis
mendengarkan statistik 0.0.0.0:9000
## HAProxy stats web gui berjalan pada port 9000 - nama pengguna dan sandi:howtoforge.
mode http
stats enable
stats uri /stats
stats realm HAProxy\ Statistics
stats auth howtoforge:howtoforge
stats admin jika TRUEPelabuhan 3030 adalah port MariaDB dengan load balance, kita dapat mengakses database di semua server MariaDB dengan IP load balancer dan port tersebut.
Pelabuhan 9000 adalah port untuk web-gui, memungkinkan pemantauan HAProxy dari browser.
Sekarang mulai firewalld, buka port 9000 dan 3030, lalu muat ulang:
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
firewall- cmd --reloadMulai HAProxy dengan perintah systemctl:
systemctl start haproxy
Langkah 3 - Menguji HAProxy dan MariaDB
A. Pengujian replikasi
Login ke server MariaDB, akses shell MySQL dan buat database baru dari mariadb1, lalu dari mariadb2, dan terakhir dari mariadb3.
mysql -u root -p
buat database this_mariadb1; # Jalankan ini di server mariadb1
buat database this_mariadb2; # Jalankan ini di server mariadb2
buat database this_mariadb3; # Jalankan ini di server mariadb3Periksa databasenya:
B. Akses Server MariaDB melalui HAProxy
Sekarang kita mengakses server cluster dan database MariaDB melalui IP HAProxy pada port 3030.
Sebelum melakukan pengujian ini, aktifkan akses jarak jauh ke server MariaDB dengan membuat root pengguna baru dengan host "%".
Masuk ke shell MariaDB dan buat pengguna baru "root" dengan kata sandi "aqwe123":
mysql -u root -p
BERIKAN SEMUA HAK ISTIMEWA PADA *.* KEPADA [email protected]'%' DIIDENTIFIKASI OLEH "aqwe123";Selanjutnya, akses tabel database 'mysql.user' melalui server HAProxy:
mysql -u root -p -h 192.168.1.135 -P 3030 -e "pilih Host, User, Password dari mysql.user"
Anda dapat melihat pengguna server database dengan mengakses IP load balancer pada port 3030. Anda dapat mengakses database pada node MySQL dengan mengakses IP HAProxy pada port 3030.
Tes lain dari server:algoritma leastconn:
C. Masuk ke HAProxy Web-Gui
Anda dapat mengakses server pemantauan HAProxy pada port 9000, dengan nama pengguna dan kata sandi "howtoforge" untuk menampilkan UI web HAProxy:
http://192.168.1.135:9000/stats
HAProxy telah berhasil diinstal dan Anda dapat melihat server MariaDB dipantau.
Kesimpulan
MariaDB Galera Cluster adalah cluster multi-master sinkron yang menyediakan load balancing untuk database MySQL. Ini adalah solusi yang baik untuk membangun sistem database yang kuat untuk situs Anda. MariaDB Galera Cluster mendukung mesin penyimpanan xtradb dan innodb, menyediakan replikasi otomatis dan memungkinkan penggabungan node baru secara otomatis. Kita dapat menggunakan HAProxy di depan cluster database sebagai penyeimbang beban. Penyeimbang beban membantu mendistribusikan permintaan yang masuk ke semua basis data. Kami menggunakan skrip bash clustercheck untuk melakukan pemantauan basis data dari HAProxy. MariaDB Galera Cluster dan HAProxy adalah salah satu solusi terbaik untuk membangun sistem database ketersediaan tinggi.
Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Pada CentOS 7.0 Cara mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 7Cent OS