Kami sebelumnya menunjukkan cara mengatur cluster MariaDB Galera dengan HAproxy, dan hari ini kami akan melakukan pengaturan serupa dengan distribusi MySQL Percona. Percona adalah perusahaan yang memiliki keahlian mendalam dengan MySQL dan MongoDB, dan mereka membuat sendiri distribusi database tersebut serta mesin penyimpanan untuk kedua database tersebut. Hari ini kami hanya akan berkonsentrasi pada MySQL, dan bukan pada penawaran MongoDB dari perusahaan ini.
Menyiapkan host, firewall, dan repositori
Pertama mulai dengan mengatur file host. Kami memiliki tiga node untuk cluster Percona dan satu node untuk HAproxy. File host saya di keempat server memiliki empat baris tersebut:
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
Selanjutnya mari kita setup firewalld pada semua host kecuali HAproxy satu. Yang itu akan memerlukan pengaturan yang berbeda dan kami akan melakukan yang terakhir. Pertama mari kita mulai firewalld pada ketiga node percona.
systemctl start firewalld
Kemudian kami mengizinkan layanan mysql. Pecona adalah distro mysql sehingga menggunakan port yang sama dengan mysql.
firewall-cmd --zone=public --add-service=mysql --permanent
Selanjutnya kita tambahkan port lain yang dibutuhkan:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
Dan muat ulang firewall
firewall-cmd --reload
Setelah selesai, selanjutnya kita perlu menginstal epel release
yum install epel-release
Selanjutnya kita install socat dari repositori EPEL
yum install socat
Dan kemudian kami menghapus mariadb-libs karena bertentangan dengan percona
yum remove mariadb-libs
Memasang dan menyiapkan Percona
Kita perlu menambahkan repositori yang berisi percona
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Sekarang kita dapat menginstal percona cluster dan semua dependensi lainnya
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc
Dan mulai mysql
systemctl start mysql
Hal pertama yang kita lakukan di semua server mysql adalah menjalankan skrip mysql_secure_installation. Jadi mari kita lakukan.
mysql_secure_installation
Anda harus memasukkan kata sandi root baru dan menjawab y untuk semua pertanyaan.
Setelah selesai, masuk ke akun root Anda
mysql -u root -p enter password
Dan buat sstuser cluster Anda
mysql> create user sstuser@'%' identified by 'strongpassword'; Query OK, 0 rows affected (0.01 sec) mysql> grant all on *.* to sstuser@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
Setelah ini kita harus menghentikan MySQL untuk mengedit file konfigurasi.
systemctl stop mysql nano /etc/my.cnf
Dalam konfigurasi temukan baris-baris tersebut dan buat mereka terlihat persis seperti ini, cukup ubah kata sandi Anda sendiri dan ubah nama node dan alamat node menjadi nama host Anda untuk setiap server
wsrep_cluster_address = gcomm://centos-percona01,centos-percona02,centos-percona03 wsrep_provider = /usr/lib64/galera3/libgalera_smm.so wsrep_slave_threads = 8 wsrep_cluster_name = Cluster Percona XtraDB wsrep_node_name = centos-percona01 wsrep_node_address = centos-percona01 wsrep_sst_method = xtrabackup-v2 wsrep_sst_auth = sstuser:strongpassword
Perhatikan bahwa baris pertama di server pertama (centos-percona01) bisa kosong, seperti ini:
wsrep_cluster_address = gcomm://
Setelah konfigurasi selesai, kita perlu mem-bootstrap node pertama, lalu biasanya memulai yang kedua dan ketiga.
Saat server pertama dijalankan
systemctl start mysql@bootstrap
pada putaran kedua dan ketiga
systemctl start mysql
Selanjutnya kita perlu menguji apakah cluster berfungsi.
mysql -u root -p
masukkan kata sandi
Dan kemudian jalankan perintah ini:
SHOW STATUS LIKE 'wsrep_local_state_comment'; show global status like 'wsrep_cluster_size';
Mereka akan memberi Anda hasil seperti ini:
Dengan penyiapan cluster ini selesai.
Pengaturan proxy HA
Pertama kita perlu clustercheck diinstal pada semua node cluster sehingga cluster dapat diservis dengan HAproxy. Mari dapatkan skrip dengan wget
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Skrip harus dibuat dapat dieksekusi dan dipindahkan ke salah satu direktori $PATH Anda.
chmod +x clustercheck mv clustercheck /usr/bin/
Sekarang kita juga membutuhkan mysqlchk yang termasuk dalam paket xinetd:
yum install xinetd
Selanjutnya kita pindah create clustercheck user pada database. Kita dapat mengetik ini hanya pada simpul pertama
mysql -u root -p mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!'; exit;
Selanjutnya kita dapat menguji apakah clustercheck berfungsi seperti yang diharapkan:
[root@centos-percona01 ~]# clustercheck HTTP/1.1 200 OK Content-Type: text/plain Connection: close Content-Length: 40 Percona XtraDB Cluster Node is synced.
Selanjutnya kita pindah ke konfigurasi xinetd, xinetd perlu ditambahkan ke daftar layanan.
nano /etc/services
Kami menggunakan CTRL-W untuk menemukan bagian di mana port 9200, lalu kami merekomendasikan layanan yang menggunakan port itu dan sebagai gantinya menambahkan baris baru. Seharusnya terlihat seperti ini:
mysqlchk 9200/tcp # mysqlchk #wap-wsp 9200/tcp # WAP connectionless session service #wap-wsp 9200/udp # WAP connectionless session service
Setelah selesai kita simpan. Perhatikan bahwa semua node cluster kecuali HAproxy harus melakukan ini.
Sekarang saatnya untuk masuk ke server HAporoxy kami. Pertama kita perlu membuat cadangan konfigurasi haproxy.
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Kemudian kami akan membuat yang baru dari batu tulis yang bersih
nano /etc/haproxy/haproxy.cfg
Kita dapat menyalin konfigurasi HAproxy dari sini kecuali bahwa tiga baris ini perlu diubah:
server centos-percona01 10.132.84.186:3306 check port 9200 inter 12000 rise 3 fall 3 server centos-percona02 10.132.84.141:3306 check port 9200 inter 12000 rise 3 fall 3 server centos-percona03 10.132.84.67:3306 check port 9200 inter 12000 rise 3 fall 3
Bagian yang disorot perlu diubah dengan nama host dan alamat Anda. Selanjutnya kita perlu memulai firewalld di server haproxy dan memiliki izinkan port yang perlu kita gunakan
systemctl start firewalld firewall-cmd --permanent --add-port=9000/tcp firewall-cmd --permanent --add-port=3030/tcp
Setelah itu kita perlu memuat ulang firewall
firewall-cmd --reload
Akhirnya, mulai haproxy
systemctl start haproxy
Penyiapan telah selesai, sekarang kita perlu menguji.
Menguji HAproxy
Mari kita arahkan browser ke alamat ip publik server HAproxy pada port 9000:
Semua node sedang online. Selanjutnya mari kita instal klien percona di server haproxy sehingga kita dapat mencoba meng-query cluster dari sana.
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm yum install Percona-XtraDB-Cluster-client-56
Dan mari kita coba untuk melihat apakah kita dapat memiliki kueri dari server haproxy ini:
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
Kesimpulan
Kami telah menyiapkan cluster 3 node dari beban Percona XtraDB yang diseimbangkan oleh HAproxy. Ini adalah pengaturan yang mirip seperti artikel minggu lalu dengan MariaDB dan Galera, tetapi dengan mesin penyimpanan Percona dan tanpa WordPress. Pengaturan Percona ini dapat digunakan untuk meng-host berbagai macam kumpulan data, antara lain Anda dapat menggunakannya lagi dengan WordPress, seperti di artikel kami sebelumnya. Dengan itu kami menyimpulkan artikel ini, terima kasih telah membaca dan semoga hari Anda menyenangkan.
Cent OS