Di bagian pertama blog ini, kami menyebutkan beberapa konsep penting yang terkait dengan lingkungan replikasi PostgreSQL yang baik. Sekarang, mari kita lihat bagaimana menggabungkan semua hal ini bersama-sama dengan cara yang mudah menggunakan ClusterControl. Untuk ini, kami akan menganggap Anda telah menginstal ClusterControl, tetapi jika tidak, Anda dapat mengunjungi situs resminya, atau merujuk ke dokumentasi resmi untuk menginstalnya.
Menerapkan Replikasi Streaming PostgreSQL
Untuk melakukan penerapan Cluster PostgreSQL dari ClusterControl, pilih opsi Deploy dan ikuti petunjuk yang muncul.
Saat memilih PostgreSQL, Anda harus menentukan Pengguna, Kunci atau Kata Sandi, dan Port untuk terhubung dengan SSH ke server Anda. Anda juga dapat menambahkan nama untuk cluster baru Anda dan menentukan apakah Anda ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk Anda.
Setelah menyiapkan informasi akses SSH, Anda perlu menentukan kredensial basis data , versi, dan datadir (opsional). Anda juga dapat menentukan repositori mana yang akan digunakan.
Pada langkah berikutnya, Anda perlu menambahkan server Anda ke cluster yang akan Anda buat menggunakan Alamat IP atau Hostname.
Pada langkah terakhir, Anda dapat memilih apakah replikasi Anda akan Sinkron atau Tidak sinkron, lalu tekan saja Deploy.
Setelah tugas selesai, Anda dapat melihat Cluster PostgreSQL baru Anda di layar ClusterControl utama.
Sekarang Anda telah membuat cluster, Anda dapat melakukan beberapa tugas di dalamnya, seperti menambahkan load balancer (HAProxy), connection pooler (PgBouncer), atau slave replikasi sinkron atau asinkron baru.
Menambahkan Budak Replikasi Sinkron dan Asinkron
Buka ClusterControl -> Cluster Actions -> Tambahkan Replication Slave.
Anda dapat menambahkan budak replikasi baru, atau bahkan mengimpor yang sudah ada. Mari kita pilih opsi pertama dan lanjutkan.
Di sini, Anda perlu menentukan server master, alamat IP, atau Nama Inang dari budak replikasi baru, port, dan jika Anda ingin ClusterControl menginstal perangkat lunak, atau menyertakan node ini dalam penyeimbang beban yang ada. Anda juga dapat mengonfigurasi replikasi menjadi sinkron atau asinkron.
Sekarang Anda memiliki klaster PostgreSQL dengan replika yang sesuai, mari kita lihat cara meningkatkan kinerja dengan menambahkan kumpulan koneksi.
Penerapan PgBouncer
Buka ClusterControl -> Pilih PostgreSQL Cluster -> Cluster Actions -> Tambahkan Load Balancer -> PgBouncer. Di sini, Anda dapat menerapkan node PgBouncer baru yang akan diterapkan di node database yang dipilih, atau bahkan mengimpor PgBouncer yang sudah ada.
Anda perlu menentukan Alamat IP atau Hostname, Port Listen dan Kredensial PgBouncer. Saat Anda menekan Deploy PgBouncer, ClusterControl akan mengakses node, menginstal, dan mengonfigurasi semuanya tanpa intervensi manual.
Anda dapat memantau kemajuan di Bagian Aktivitas ClusterControl. Setelah selesai, Anda perlu membuat Pool baru. Untuk ini, buka ClusterControl -> Pilih Cluster PostgreSQL -> Nodes -> PgBouncer node.
Anda perlu menambahkan informasi berikut:
-
Nama host PgBouncer:Pilih host node untuk membuat kumpulan koneksi.
-
Nama Kumpulan:Nama kumpulan dan database harus sama.
-
Nama pengguna: Pilih pengguna dari node utama PostgreSQL atau buat yang baru.
-
Mode Pool:Bisa berupa:session (default), transaksi, atau statement pooling.
-
Ukuran Kumpulan:Ukuran maksimum kumpulan untuk database ini. Nilai defaultnya adalah 20.
-
Koneksi Basis Data Maks:Mengonfigurasi maksimum seluruh basis data. Nilai defaultnya adalah 0, yang berarti tidak terbatas.
Sekarang, Anda seharusnya dapat melihat Pool di bagian Node.
Untuk menambahkan Ketersediaan Tinggi ke database PostgreSQL Anda, mari kita lihat cara menerapkan penyeimbang beban.
Penerapan Penyeimbang Beban
Untuk melakukan penerapan load balancer, pilih opsi Add Load Balancer di menu Tindakan Cluster, dan lengkapi informasi yang diminta.
Anda perlu menambahkan IP atau Hostname, Port, Policy, dan node Anda akan menggunakan. Jika Anda menggunakan PgBouncer, Anda dapat memilihnya di kotak kombo jenis instans.
Untuk menghindari satu titik kegagalan, Anda harus menerapkan setidaknya dua node HAProxy, dan menggunakan Keepalived yang memungkinkan Anda menggunakan alamat IP virtual dalam aplikasi Anda yang ditetapkan ke node HAProxy aktif. Jika node ini gagal, alamat IP virtual akan dimigrasikan ke penyeimbang beban sekunder, sehingga aplikasi Anda tetap dapat bekerja seperti biasa.
Penerapan Tetap Terjaga
Untuk melakukan penerapan Keepalived, pilih opsi Add Load Balancer di menu Tindakan Cluster, lalu buka Tab Keepalive.
Di sini, pilih node HAProxy, dan tentukan alamat IP virtual yang akan digunakan untuk mengakses database (atau connection pooler).
Pada saat ini, Anda harus memiliki topologi berikut:
Dan ini berarti:HAProxy + Keepalived -> PgBouncer -> node Database PostgreSQL , itu adalah topologi yang bagus untuk Cluster PostgreSQL Anda.
Fitur Pemulihan Otomatis Kontrol Cluster
Jika terjadi kegagalan, ClusterControl akan mempromosikan node siaga paling canggih ke node utama serta memberi tahu Anda tentang masalahnya. Itu juga gagal pada node siaga lainnya untuk mereplikasi dari server utama yang baru.
Secara default, HAProxy dikonfigurasi dengan dua port berbeda:baca-tulis dan baca-saja. Di port baca-tulis, Anda memiliki node database (atau PgBouncer) utama sebagai online dan node lainnya sebagai offline, dan di port read-only, Anda memiliki node utama dan node siaga online.
Bila HAProxy mendeteksi bahwa salah satu node Anda tidak dapat diakses, HAProxy secara otomatis menandainya sebagai offline dan tidak memperhitungkan pengiriman lalu lintas ke node tersebut. Deteksi dilakukan dengan skrip pemeriksaan kesehatan yang dikonfigurasi oleh ClusterControl pada saat penerapan. Ini memeriksa apakah instance aktif, apakah sedang menjalani pemulihan, atau hanya-baca.
Saat ClusterControl mempromosikan node siaga, HAProxy menandai primer lama sebagai offline untuk kedua port dan menempatkan node yang dipromosikan online di port baca-tulis.
Jika HAProxy aktif Anda, yang diberi alamat IP virtual yang terhubung dengan sistem Anda, gagal, Keepalived memigrasikan Alamat IP ini ke HAProxy pasif Anda secara otomatis. Artinya, sistem Anda dapat terus berfungsi secara normal.
Kesimpulan
Seperti yang Anda lihat, memiliki topologi PostgreSQL yang baik itu mudah jika Anda menggunakan ClusterControl dan jika Anda mengikuti konsep praktik terbaik dasar untuk replikasi PostgreSQL. Tentu saja, lingkungan terbaik bergantung pada beban kerja, perangkat keras, aplikasi, dll, tetapi Anda dapat menggunakannya sebagai contoh dan memindahkan bagian sesuai kebutuhan.