Verbindungspooling mit PgBouncer
Die meisten Webanwendungen verwenden Datenbanken zur Speicherung ihrer Daten. Clientanwendungen können die Informationen aus der Datenbank abrufen, indem sie eine Verbindung dazu herstellen. Jede Abfrage verbraucht Ressourcen wie Speicher, Portzuweisung und CPU-Zeit. Eine Transaktion kann Millisekunden dauern, aber eine Verbindung herzustellen kann bis zu mehreren Sekunden dauern.
Um den Prozess der Verbindung zu PostgreSQL zu vereinfachen, insbesondere wenn ein hohes Volumen von Clientverbindungen erwartet wird, können Sie PgBouncer verwenden, um Client-Datenbank-Verbindungen effektiv zu verwalten. Es ist ein beliebter Connection Pooler, der einmal eine Verbindung zur Datenbank herstellt und diese Verbindung dann mehrfach für verschiedene Clients verwendet. Dies ist nicht der einzige Vorteil bei der Verwendung von PgBouncer.
Angenommen, Sie haben 100 Clients, die eine Verbindung zu Ihrer Datenbank herstellen müssen, und Sie möchten das Datenbank-Benutzerpasswort nicht mit diesen Clients teilen. In diesem Fall können Sie PgBouncer verwenden. Sie können individuelle Logins und Passwörter für die Verbindung einrichten, sodass PgBouncer und Clients nicht die Datenbank-Benutzerpasswörter verwenden. Außerdem können Sie einen Aliasnamen für die Datenbank zuweisen, sodass die Clients den echten Namen der Datenbank nicht sehen.
Anstatt eine Datenbankverbindung herzustellen, wird eine Verbindung mit PgBouncer erzeugt, die bereits bestehende Datenbankverbindungen nutzt.
DataSunrise Database Security Suite unterstützt neben vielen anderen Funktionen auch das Pooling mit PgBouncer. Durch eine effektive Arbeit mit der Client-Datenbank-Zuordnung gewährleistet es umfassende Datenbanksicherheit, wenn PgBouncer läuft.
Vorteile der Verwendung von PgBouncer-Verbindungspools:
- Reduzierung der Verarbeitungszeit
- Reduzierung des Verbrauchs von Serverressourcen zur Aufrechterhaltung einer großen Anzahl von Serververbindungen zu einer oder mehreren Datenbanken
- Unterstützung von Online-Neustarts oder -Upgrades, ohne Client-Verbindungen zu unterbrechen
- Verbergen des echten Namens der Datenbank
- Die Möglichkeit, das Teilen eines Datenbank-Benutzerpassworts mit allen Clientanwendungen zu vermeiden
Konfiguration von PgBouncer
Nach der Installation funktioniert PgBouncer als Dienst auf Windows und als Daemon auf Linux (in beiden Fällen als pgbouncer bezeichnet).
Um die Konfigurationseinstellungen zu ändern, finden Sie die pgbouncer.ini Datei im folgenden Verzeichnis: pgbouncer/share. Sie enthält die folgenden Parameter:
[database] Abschnitt | Sie können Datenbanken hinzufügen, deren Hosts und Ports definieren, Aliasnamen für die Datenbanken zuweisen und einen Datenbank-Benutzer-Login und Passwort angeben (alle Clients, die über PgBouncer mit dem angegebenen Aliasnamen verbunden sind, verwenden den in diesem Abschnitt angegebenen DB-Benutzer-Login und Passwort). |
[pgbouncer] Abschnitt | Geben Sie IP-Adressen an, die vom PgBouncer-Daemon überwacht werden sollen. Verwenden Sie Listen_addr = *, um alle verfügbaren Adressen zu überwachen. |
auth_file | PgBouncer ist nicht Teil von PostgreSQL, daher müssen Sie die Liste der Benutzer mit verschlüsselten Passwörtern zur Verbindung mit PgBouncer bereitstellen. Auth_file ist ein Verzeichnispfad zur Datei, die Benutzernamen und Passwörter enthält. |
auth_type | (md5 | crypt | plain | trust | any) Md5 ist ein Argument für die Verwendung der im auth_file angegebenen Passwörter. Md5 ist standardmäßig eingestellt. |
max_client_conn | Die maximale Anzahl von Clients, die sich mit dem Pool verbinden können (100 standardmäßig). |
admin_users | Zuweisung von Berechtigungen mit Zugriff auf die Admin-Konsole. |
default_pool_size | Zuweisung der maximalen Anzahl von Server-Verbindungen pro Benutzer/Datenbank-Kombination. |
reserve_pool_size | Die maximale Anzahl zusätzlicher Verbindungen, die im Falle eines Problems erlaubt sind. |
pool_mode | Definiert den Pooling-Modus: (session) PgBouncer weist eine Server-Verbindung dem Client zu. Wenn die Client-Anwendung die Verbindung trennt, wird die Verbindung zurück in den Pool gestellt. (transaction) PgBouncer weist eine Server-Verbindung der Client-Anwendung zu, bis die Transaktion abgeschlossen ist. (statement) PgBouncer weist für jede Anweisung der Client-Anwendung eine Server-Verbindung zu. |
Wie Sie sehen können, bietet PgBouncer eine einfache Lösung zur Verwaltung von Verbindungspools, insbesondere bei der Arbeit mit einer mehrschichtigen Architektur. Durch die Verwendung bestehender Verbindungen eliminiert PgBouncer die Notwendigkeit, für jeden Client eine Datenbankverbindung zu erstellen.
Unsere Entwickler haben die Zuordnungsschemata von PgBouncer gründlich analysiert und die DataSunrise Database Security Suite so konfiguriert, dass sie vollständig neben diesem Connection Pooler funktioniert.