Im Allgemeinen würden Sie Pgpool nicht auf den Backend-Servern installieren. Was Sie in Ihrem Bild sehen, ist die häufigste Konfiguration. Pgpool ist ein eigenständiger Server, der sich im Wesentlichen vor den Datenbanken befindet. Die beiden Postgres-Server werden häufig mit Streaming-Replikation konfiguriert. Der eine ist der Meister und der andere der Sklave.
Dadurch kann Pgpool alle Leseabfragen zwischen den zwei (oder mehr) Datenbanken ausgleichen. Alle Abfragen, die Schreibvorgänge beinhalten, werden an den Master-Server weitergeleitet, der sich wiederum auf den Slave repliziert.
Wie @Neil McGuigan sagte , können Sie auch mehrere Pgpool-Server haben, um eine bessere Hochverfügbarkeit zu erzielen. Technisch gesehen könnten Sie Pgpool in dieser Konfiguration auf den Datenbankservern installieren, dies wäre jedoch eine schlechte Vorgehensweise. Das Ausführen mehrerer Pgpool-Server ist eine viel komplexere Konfiguration. Wenn Sie zum ersten Mal mit Pgpool arbeiten, würde ich mit einem Pgpool-Server beginnen, bevor zwei zum Laufen kommen.
In beiden Konfigurationen glaubt Ihr Anwendungsserver, dass nur eine Verbindung zu einer einzelnen Postgres-Datenbank hergestellt wird.
Über pgpool_regclass
, was eigentlich eine separate Frage sein sollte, ist dies aus den Pgpool FAQ :
Wenn Sie PostgreSQL 8.0 oder höher verwenden, wird dringend empfohlen, die Funktion pgpool_regclass auf allen PostgreSQL zu installieren, auf die pgpool-II zugreifen soll, da sie intern von pgpool-II verwendet wird. Ohne dies kann die Behandlung doppelter Tabellennamen in verschiedenen Schemata zu Problemen führen (temporäre Tabellen sind kein Problem).
Wenn Sie PostgreSQL 9.4.0 oder höher und pgpool-II 3.3.4 oder höher, 3.4.0 oder höher verwenden, müssen Sie pgpool_regclass nicht installieren, da in PostgreSQL 9.4 die Funktion pgpool_regclass wie "to_regclass" integriert ist.
Wenn Sie dies benötigen, wird nur ein SQL-Code auf Ihrem Postgres-Masterserver ausgeführt, um eine von Pgpool verwendete Funktion hinzuzufügen.
Mit regclass müssen Sie einen zusätzlichen Schritt ausführen (ich habe an insert_lock gedacht). Wenn Sie aus dem Quellcode kompilieren (im Allgemeinen haben die meisten Distributionen wirklich veraltete Versionen von Pgpool), müssen Sie auch eine Postgres-Bibliothek kompilieren.
Wenn Sie aus dem Quellcode kompiliert haben, müssen Sie in den .../pgpool-II-3.X.X/src/sql/pgpool-regclass
Ordner gehen und a ./configure; make
.
Kopieren Sie die Datei pgpool-regclass.so in das Postgres-Erweiterungsverzeichnis. Auf meinem Ubuntu 14.04-Server (nur mit der Postgres 9.3-Paketinstallation) befindet es sich unter : /usr/lib/postgresql/9.3/lib
. Denken Sie daran, dies für alle Postgres-Server zu tun .
Sobald dies abgeschlossen ist, können Sie pgpool-regclass.sql
auf dem Master ausgeführt werden. Dadurch wird die pgpool_regclass
Funktion nur der Bibliothek zugeordnet, über die Sie kopiert haben.