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

Cara mengatur HAProxy sebagai Load Balancer untuk MariaDB di CentOS 7

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 xinetd

Untuk 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/clustercheck

Pastikan 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/hosts

HAProxy tersedia di repositori dasar CentOS, jalankan perintah yum ini untuk menginstalnya:

yum -y install haproxy

Kemudian konfigurasikan log untuk HAProxy dengan mengedit file konfigurasi rsyslog:

vi /etc/rsyslog.conf

Batalkan komentar pada port udp:

# Menyediakan penerimaan syslog UDP
$ModLoad imudp
$UDPServerRun 51

Simpan file dan keluar dari editor.

Tambahkan konfigurasi HAProxy di direktori rsyslog.d:

vi /etc/rsyslog.d/haproxy.conf

Tempelkan konfigurasi di bawah ini:

local2.=info     /var/log/haproxy-access.log
local2.notice    /var/log/haproxy-info.log

Simpan file dan mulai ulang rsyslog:

systemctl restart rsyslog

Selanjutnya, buat file konfigurasi HAProxy baru.

Buka direktori /etc/haproxy dan buat cadangan file konfigurasi dafult haproxy.

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig

Buat file konfigurasi haproxy baru:

vi /etc/haproxy/haproxy.cfg

Dan 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 TRUE

Pelabuhan 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 --reload

Mulai 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 mariadb3

Periksa 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.


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

  2. Cara mengonfigurasi penyeimbang beban HAProxy

  3. Cara Setup Server VNC untuk Pengguna Baru di CentOS/RHEL 5

  1. Cara Menginstal MariaDB di CentOS 7

  2. Cara Menginstal MariaDB di CentOS 8

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

  1. Cara mengatur server SVN di CentOS

  2. Cara Mengatur PureFTPd di CentOS 7

  3. Cara Mengatur Alat Berbagi File ProjectSend di CentOS 7