Di bawah ini adalah contoh arsitektur pgpool:
Ini menyiratkan bahwa Anda hanya perlu memiliki pgpool pada satu server; Apakah ini benar? Ketika saya melihat konfigurasi saya juga melihat bahwa Anda mengkonfigurasi backends di dalamnya pgpool.conf
; jadi lebih jauh menyiratkan ini. Tapi, itu tidak menjelaskan mengapa saya melihat pgpool di server backend juga.
Saat melihat dokumentasi, saya juga melihat:
Jika Anda menggunakan PostgreSQL 8.0 atau yang lebih baru, menginstal fungsi pgpool_regclass pada semua PostgreSQL untuk diakses oleh pgpool-II sangat disarankan, karena digunakan secara internal oleh pgpool-II.
Jadi saya tidak yakin harus berpikir apa; apakah itu praktik terbaik untuk memiliki pgpool di semua backends atau hanya server khusus?
postgresql
architecture
pgpool
scalability
connection-pooling
Erwin Brandstetter
sumber
sumber
Jawaban:
Umumnya Anda tidak akan menginstal Pgpool di server backend. Apa yang Anda lihat dalam gambar Anda adalah konfigurasi yang paling umum. Pgpool adalah server mandiri yang pada dasarnya duduk di depan basis data. Dua server Postgres sering dikonfigurasi dengan replikasi streaming; dengan satu menjadi tuan dan yang lain menjadi budak.
Ini memungkinkan Pgpool memuat keseimbangan semua kueri baca antara dua (atau lebih) database. Setiap pertanyaan yang melibatkan penulisan apa pun, akan dialihkan ke server master yang pada gilirannya akan bereplikasi ke slave.
Seperti yang dikatakan @Neil McGuigan , Anda juga dapat memiliki beberapa server Pgpool untuk mencapai ketersediaan tinggi yang lebih baik. Secara teknis Anda bisa menginstal Pgpool pada server database dalam konfigurasi ini, tetapi ini akan menjadi praktik yang buruk. Menjalankan beberapa server Pgpool adalah konfigurasi yang jauh lebih kompleks. Jika ini pertama kalinya Anda menggunakan Pgpool, saya akan mulai dengan satu server Pgpool sebelum membuat dua server berfungsi.
Dalam konfigurasi mana pun, server aplikasi Anda berpikir itu hanya terhubung ke database Postgres tunggal.
Tentang
pgpool_regclass
, yang seharusnya menjadi pertanyaan terpisah, ini dari FAQ Pgpool :Jika Anda memerlukan ini, ini hanya beberapa kode SQL yang berjalan di server master Postgres Anda untuk menambahkan fungsi yang digunakan Pgpool.
Dengan regclass, ada langkah tambahan yang harus Anda lakukan (saya sedang memikirkan insert_lock). Jika Anda mengkompilasi dari sumber (umumnya sebagian besar distribusi memiliki versi Pgpool yang benar-benar ketinggalan zaman), Anda harus mengkompilasi pustaka Postgres juga.
Jika Anda dikompilasi dari sumber, Anda harus masuk ke
.../pgpool-II-3.X.X/src/sql/pgpool-regclass
folder dan melakukan a./configure; make
.Salin file pgpool-regclass.so ke direktori ekstensi Postgres. Pada saya Ubuntu 14.04 Server (hanya menggunakan Postgres 9.3 paket instalasi), terletak di:
/usr/lib/postgresql/9.3/lib
. Ingatlah untuk melakukan ini untuk semua server Postgres.Setelah itu selesai, maka Anda bisa menjalankan
pgpool-regclass.sql
master. Ini hanya memetakanpgpool_regclass
fungsi ke perpustakaan yang Anda salin.sumber
Seperti yang lainnya, ada banyak cara bagaimana Anda bisa mencapai penyebaran ketersediaan tinggi Anda. Di sini saya akan menyarankan sesuatu dari pengalaman saya (implementasi HA saya sendiri):
Akhirnya saya akan merekomendasikan tutorial ini selangkah demi selangkah yang akan menuntun Anda dari awal (menginstal server PostgreSQL ...) untuk menyelesaikan implementasi ketersediaan tinggi. Tutorial tersebut menjelaskan implementasi yang saya gunakan.
Saya harap ini membantu.
UPDATE: Terima kasih @ Moshe Katz - tautannya berubah. Sekarang diperbarui di sini, di posting asli juga.
sumber