PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Menyebarkan Distribusi Percona untuk PostgreSQL untuk Ketersediaan Tinggi

Ketersediaan Tinggi adalah persyaratan untuk banyak sistem, apa pun teknologi yang Anda gunakan. Ini sangat penting untuk database, karena mereka menyimpan data yang diandalkan oleh aplikasi. Bergantung pada persyaratannya, ada berbagai cara untuk menerapkan lingkungan Ketersediaan Tinggi untuk PostgreSQL, tetapi selalu diperlukan untuk menggunakan alat pelengkap karena fitur PostgreSQL asli tidak cukup.

Di blog ini, kita akan melihat cara menerapkan Distribusi Percona untuk PostgreSQL untuk Ketersediaan Tinggi, dan alat apa yang diperlukan untuk melakukannya.

Distribusi Percona untuk PostgreSQL

Ini adalah kumpulan alat untuk membantu Anda dalam mengelola sistem database PostgreSQL Anda. Ini menginstal PostgreSQL dan melengkapinya dengan pilihan ekstensi yang memungkinkan penyelesaian tugas-tugas praktis penting secara efisien, termasuk:

  • pg_repack :Ini membangun kembali objek database PostgreSQL.
  • pgaudit :Ini memberikan sesi mendetail atau logging audit objek melalui fasilitas logging PostgreSQL standar.
  • pgBackRest :Ini adalah solusi pencadangan dan pemulihan untuk PostgreSQL.
  • Pelindung :Ini adalah solusi Ketersediaan Tinggi untuk PostgreSQL.
  • pg_stat_monitor :Ini mengumpulkan dan menggabungkan statistik untuk PostgreSQL dan memberikan informasi histogram.
  • Koleksi ekstensi kontribusi PostgreSQL tambahan.

Ketersediaan Tinggi di PostgreSQL

Ada arsitektur berbeda untuk ketersediaan tinggi PostgreSQL, tetapi yang paling umum adalah memiliki topologi Master-Slave (Primary-Standby). Ini didasarkan pada satu database utama dengan satu atau lebih node siaga. Basis data siaga ini akan tetap disinkronkan (atau hampir disinkronkan) dengan yang utama, tergantung pada apakah replikasinya sinkron atau asinkron. Jika server utama gagal, standby berisi hampir semua data dari server utama, dan dapat dengan cepat diubah menjadi server database utama yang baru.

Tetapi penyiapan master-slave tidak cukup untuk memastikan ketersediaan tinggi secara efektif, karena Anda juga perlu menangani kegagalan. Setelah kegagalan terdeteksi, Anda harus dapat memilih node siaga dan melakukan failover dengan penundaan yang lebih kecil. PostgreSQL sendiri tidak menyertakan mekanisme failover otomatis, sehingga akan memerlukan beberapa skrip khusus atau alat pihak ketiga untuk otomatisasi ini.

Setelah failover terjadi, aplikasi perlu diberi tahu, sehingga mereka dapat mulai menggunakan node utama yang baru. Selain itu, Anda perlu mengevaluasi status arsitektur kami setelah failover, karena Anda dapat menjalankan dalam situasi di mana Anda hanya menjalankan utama baru (yaitu, Anda memiliki node utama dan hanya satu siaga sebelum masalah). Dalam hal ini, Anda perlu menambahkan node siaga baru untuk membuat ulang pengaturan master-slave yang semula Anda miliki untuk Ketersediaan Tinggi.

Agar berhasil, Anda perlu memiliki alat/layanan yang berbeda untuk membantu tugas ini.

Load Balancer

Load balancers adalah alat yang dapat digunakan untuk mengelola lalu lintas dari aplikasi Anda untuk mendapatkan hasil maksimal dari arsitektur database Anda.

Tidak hanya berguna untuk menyeimbangkan beban database kami, ini juga membantu aplikasi dialihkan ke node yang tersedia/sehat dan bahkan menentukan port dengan peran berbeda.

HAProxy adalah penyeimbang beban yang mendistribusikan lalu lintas dari satu asal ke satu atau beberapa tujuan dan dapat menentukan aturan dan/atau protokol khusus untuk tugas ini. Jika salah satu tujuan berhenti merespons, itu ditandai sebagai offline, dan lalu lintas dikirim ke tujuan lain yang tersedia.

Keepalived adalah layanan yang memungkinkan Anda mengonfigurasi IP virtual dalam grup server aktif/pasif. IP virtual ini ditetapkan ke server aktif. Jika server ini gagal, IP secara otomatis dimigrasikan ke server pasif “Sekunder”, memungkinkannya untuk terus bekerja dengan IP yang sama secara transparan untuk sistem.

Untuk mengimplementasikan semua hal ini, Anda dapat melakukannya secara manual, yang berarti pekerjaan ekstra dan tugas yang memakan waktu, atau Anda dapat melakukannya hanya dari satu sistem menggunakan ClusterControl.

Mari kita lihat cara mengimpor Distribusi Percona yang ada untuk PostgreSQL ke ClusterControl, lalu cara mengonfigurasi lingkungan Ketersediaan Tinggi menggunakan HAProxy dan Keepalive seputar penyiapan ini dari antarmuka yang ramah dan mudah digunakan.

Topologi PostgreSQL untuk Ketersediaan Tinggi

Topologi Ketersediaan Tinggi dasar untuk PostgreSQL dapat berupa:

  • 3 server PostgreSQL 12 (satu node utama dan dua node siaga).
  • 2 HAProxy Load Balancer.
  • Tetap dikonfigurasi di antara server penyeimbang beban.
  • 1 server ClusterControl

Jadi, Anda akan memiliki topologi berikut:

Cara menginstal Distribusi Percona untuk PostgreSQL

Mari kita mulai dengan menginstal Percona Distribution untuk PostgreSQL. Untuk contoh ini, kita akan menggunakan CentOS 7 dan PostgreSQL 12.

Jika cluster Anda telah terinstal, Anda pergi ke bagian berikutnya untuk mengimpor database yang ada ke ClusterControl.

Instal epel-release dan percona-release

$ yum install epel-release

$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Aktifkan repositori PostgreSQL 12

$ percona-release setup ppg-12

* Disabling all Percona Repositories

* Enabling the Percona Distribution for PostgreSQL 12 repository

<*> All done!

Instal paket server

$ yum install percona-postgresql12-server

Perhatikan bahwa paket ini tidak akan menginstal semua komponen Distribusi Percona. Untuk menginstal komponen ini gunakan paket opsional yang sesuai seperti yang ditunjukkan di bawah ini:

​$ yum install percona-pg_repack12

$ yum install percona-pgaudit

$ yum install percona-pgbackrest

$ yum install percona-patroni

$ yum install percona-pg-stat-monitor12

$ yum install percona-postgresql12-contrib

Inisialisasi Database

$ /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database ... OK

Pastikan Anda memiliki konfigurasi yang benar untuk dapat mengonfigurasi replikasi PostgreSQL, mirip dengan:

$ vi /var/lib/pgsql/12/data/postgresql.conf

listen_addresses = '*'

wal_level=logical

max_wal_senders = 16

wal_keep_segments = 32

hot_standby = on

Kemudian, jalankan layanan database

$ systemctl start postgresql-12

Sekarang, jika Anda ingin menambahkan node standby, ulangi langkah 1, 2, dan 3 di semua node yang ingin Anda tambahkan ke cluster. Untuk node tersebut, Anda tidak perlu mengonfigurasi apa pun karena ClusterControl akan membuat konfigurasi yang sesuai.

Mengimpor Distribusi Percona untuk PostgreSQL di ClusterControl

Dengan ClusterControl Anda dapat menerapkan atau mengimpor mesin database open source yang berbeda dari sistem yang sama, dan hanya akses SSH dan pengguna yang memiliki hak istimewa yang diperlukan untuk menggunakannya.

Buka bagian “Impor” dan lengkapi informasi yang diperlukan dari server PostgreSQL Anda.

Anda harus menentukan Pengguna, Kunci atau Kata Sandi, dan port untuk terhubung dengan SSH ke server Anda. Anda juga memerlukan nama untuk cluster baru Anda, jika tidak, ClusterControl akan menetapkan nama generik untuk Anda.

Setelah menyiapkan informasi akses SSH, Anda harus menentukan kredensial basis data, version, basedir, dan IP Address atau Hostname untuk setiap node database.

Jika replikasi belum dikonfigurasi, Anda hanya perlu menambahkan alamat IP atau Nama Host untuk node utama, karena kami akan menunjukkan cara menambahkan node lainnya nanti.

Pastikan Anda mendapatkan centang hijau saat memasukkan nama host atau alamat IP, yang menunjukkan bahwa ClusterControl dapat berkomunikasi dengan node. Kemudian, klik tombol Import dan tunggu hingga ClusterControl menyelesaikan tugasnya. Anda dapat memantau proses di Bagian Aktivitas ClusterControl. Setelah selesai, Anda akan melihat cluster baru di layar utama ClusterControl. Untuk menambahkan replika baru, buka tindakan cluster, dan pilih opsi “Tambahkan Budak Replikasi”.

Jika Anda mengikuti langkah sebelumnya, Anda akan menginstal Percona Distribution untuk PostgreSQL di semua node siaga, jadi Anda perlu menonaktifkan “Instal perangkat lunak PostgreSQL” di bagian ini.

Dengan cara ini, ClusterControl akan menggunakan Distribusi Percona yang diinstal untuk paket PostgreSQL menginstal paket PostgreSQL resmi.

Setelah menyelesaikan ini, Anda akan melihat semua node dalam cluster dan status semuanya di bagian ringkasan.

Sekarang Anda telah menyiapkan sisi database, mari kita lihat bagaimana menyelesaikan High Lingkungan ketersediaan dengan menambahkan alat lainnya menggunakan ClusterControl.

Penerapan Penyeimbang Beban

Untuk melakukan penerapan penyeimbang beban, pilih opsi “Tambahkan Penyeimbang Beban” dalam tindakan klaster dan isi informasi yang diminta.

Anda hanya perlu menambahkan Alamat IP atau Hostname, port, policy, dan node yang akan Anda tambahkan ke konfigurasi load balancer.

Penerapan Tetap Terjaga

Untuk melakukan penerapan Keepalived, pilih cluster, buka tindakan cluster, pilih “Add Load Balancer”, lalu buka bagian “Keepalived”.

Untuk lingkungan Ketersediaan Tinggi, Anda harus memilih server penyeimbang beban dan alamat IP virtual, yang perlu Anda gunakan untuk mengakses klaster Anda. Keepalived mengonfigurasi IP virtual ini di penyeimbang beban aktif dan memindahkannya dari satu penyeimbang beban ke penyeimbang beban lainnya jika terjadi kegagalan, sehingga penyiapan Anda dapat terus berfungsi secara normal.

Kesimpulan

Karena Anda belum dapat menerapkan Distribusi Percona untuk PostgreSQL langsung dari ClusterControl, di blog ini, kami menunjukkan kepada Anda cara mengelolanya menggunakan ClusterControl, dan cara menambahkan alat yang berbeda seperti HAProxy dan Keepalive untuk memiliki lingkungan Ketersediaan Tinggi. dengan cara yang mudah.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DatabaseError:transaksi saat ini dibatalkan, perintah diabaikan hingga akhir blok transaksi?

  2. Koneksi ditolak (PGError) (postgresql dan Rails)

  3. Cara memeriksa status server PostgreSQL Mac OS X

  4. Hapus beberapa array secara paralel

  5. Cara Mendapatkan Waktu Saat Ini di PostgreSQL