sql >> Database teknologi >  >> RDS >> PostgreSQL

PgBouncer 1.7 - "Farver varierer efter opstandelse"

PgBouncer er en letvægts forbindelsespooler til PostgreSQL. PgBouncer 1.7 blev annonceret den 18. december 2015. I dette blogindlæg vil vi tale om de store nye forbedringer i PgBouncer.

De mest farverige funktioner

  • PgBouncer 1.7 understøtter TLS-forbindelser og jeg tror, ​​at dette er den største forbedring af den nye udgivelse. De brugte OpenSSL/LibreSSL-biblioteker som backend-implementering af funktionen.
  • PgBouncer understøtter nu godkendelse via TLS-klientcertifikat .

Lad os grave i detaljer om TLS-indstillinger af PgBouncer. Der er 14 konfigurationsparametre relateret til TLS-opsætning (klientside + serversideindstillinger).

For at tildele, hvilken TLS-tilstand der skal bruges til forbindelser fra klienter, bør vi indstille client_tls_sslmode parameter. TLS-forbindelser er som standard deaktiveret. Når aktiveret, client_tls_key_file og client_tls_cert_file skal også konfigureres til at opsætte nøgle og cert PgBouncer bruger til at acceptere klientforbindelser.

Vi kan tildele et rodcertifikat til at validere klientcertifikater ved at indstille client_tls_ca_file parameter, standard er deaktiveret.

Vi kan angive, hvilke TLS-protokolversioner der er tilladt ved at indstille client_tls_protocols parameter, standard er alle.

For mere detaljerede klientsideindstillinger kan du tjekke client_tls_ciphers , client_tls_ecdhcurve og client_tls_dheparams parametre.

Lad os nu tale om TLS-serversidens konfigurationsparametre. Først skal vi erklære TLS-tilstand til brug for forbindelser til PostgreSQL-servere med server_tls_sslmode parameter. TLS-forbindelser er som standard deaktiveret. Vi kan tildele CA-server med server_tls_ca_file parameter. Hvis vi gerne vil tildele privat nøgle til PgBouncer til at godkende mod PostgreSQL-server, kan vi bruge server_tls_key_file parameter, kan vi endda tildele et certifikat til privat nøgle, som PostgreSQL-serveren kan validere med server_tls_cert_file parameter. Ligesom vi gjorde i TLS-forbindelsesindstillinger på klientsiden, kan vi erklære, hvilke TLS-protokolversioner der er tilladt med server_tls_protocols parameter.

  • Efter TLS-understøttelse er en anden væsentlig ny funktion understøttelse af "peer"-godkendelse på Unix-stik.
  • Som en sidste vigtig funktion i denne version vil jeg gerne nævne support til værtsbaseret adgangskontrolfil, som pg_hba.conf i Postgres. Dette gør det muligt at konfigurere TLS til netværksforbindelser og "peer"-godkendelse for lokale forbindelser.

Vi kan konfigurere, hvordan man godkender brugere med auth_type parameter for PgBouncer. Alle konfigurationsparametrene er defineret i konfigurationsfilen pgbouncer.ini. Lad os se nærmere på detaljerne om auth_type parameter.

auth_type parameter kan tildeles en af ​​de 6 værdier, der er anført nedenfor. Lad os se forklaringerne og brugen af ​​disse værdier.

  • hba : Hvis vi indstiller auth_type parameter med værdien hba , bør vi indstille auth_hba_file parameter også for at vise hvilken pg_hba.conf filen vil blive brugt som en konfiguration. Ved at gøre dette tillader vi, at den faktiske godkendelsestype indlæses fra auth_hba_file. Det betyder, at vi kan bruge forskellige godkendelsesmetoder til forskellige adgangsstier. For eksempel, med version 1.7-forbindelsen over Unix-socket brug peer-godkendelsesmetode, samtidig skal forbindelse over TCP bruge TLS. Indtil videre understøtter HBA-filformatet ikke alle godkendelsesmetoderne for pg_hba.conf. Understøttede metoder er:tillid, afvis, md5, adgangskode, peer og cert.
  • certifikat: Klienten skal oprette forbindelse via TLS forbindelse med gyldigt klientcertifikat. Brugernavn er derefter taget fra Fællesnavn felt fra certifikat.
  • md5 : Brug MD5-baseret adgangskodekontrol. auth_file (navnet på den fil, der skal indlæses brugernavne og adgangskoder fra ) kan indeholde både MD5-krypterede eller almindelig tekst-adgangskoder. Dette er standardgodkendelsesmetoden.
  • almindelig : Klartekstadgangskode sendes over tråd. Udgået.
  • tillid: Der udføres ingen godkendelse. Brugernavnet skal stadig eksistere i auth_file .
  • enhver : Ligesom tillidsmetoden, men det angivne brugernavn ignoreres. Kræver at alle databaser er konfigureret til at logge på som specifik bruger. Derudover tillader konsoldatabasen enhver bruger at logge ind som admin.

Andre skinnende funktioner

Der er flere funktioner frigivet i denne version. Du kan besøge PgBouncer changelog-siden eller tjekke listen nedenfor for de andre forbedringer:

  • Indstil query_wait_timeout til 120s som standard. Denne parameter definerer den maksimale tid, forespørgsler må bruge på at vente på udførelse. Hvis forespørgslen ikke er tildelt en server i løbet af det tidsrum, afbrydes klienten. Dette bruges til at forhindre ikke-responsive servere i at få fat i forbindelser. Det hjælper også, når serveren er nede, eller databasen afviser forbindelser af en eller anden grund. Hvis dette er deaktiveret, vil klienter stå i kø uendeligt. Nuværende standard (0) forårsager uendelig kødannelse, hvilket ikke er nyttigt. Med version 1.7, hvis klienten har en afventende forespørgsel og ikke er blevet tildelt til serverforbindelse, vil klientforbindelsen blive afbrudt efter 120 sekunder som standard.
  • Deaktiver server_reset_query_always som standard. Nulstillingsforespørgsel bruges kun i puljer, der er i sessionstilstand.
  • Forøg pkt_buf til 4096 bytes. Forbedrer ydelsen med TLS . Opførselen er sandsynligvis belastningsspecifik, men det burde være sikkert at gøre som siden v1.2 pakkebufferne er opdelt fra forbindelser og brugt dovent fra pool.
  • Support pipelining-antal forventes ReadyForQuery pakker. Dette undgår at frigive serveren for tidligt. Rettelser #52.
  • Forbedret sbuf_loopcnt logik – socket er garanteret genbehandlet, selvom der ikke er nogen hændelse fra socket. Påkrævet for TLS da den har sin egen buffering.
  • Tilpas systemtests til at fungere med moderne BSD og MacOS . (Eric Radman )
  • Fjern krypt auth. Det er forældet og ikke understøttet af PostgreSQL siden 8.4 .
  • Ret almindelig “–med-omsorg” konfigurer mulighed – uden argument blev den ødelagt.

Hvad er PgBouncer?

PgBouncer er et værktøj til at administrere klientforbindelser til PostgreSQL-databasen. I en nøddeskal vedligeholder den en forbindelsespulje til PostgreSQL-serveren og genbruger de eksisterende forbindelser. Selvom dette kan være nyttigt til at reducere klientforbindelsesomkostningerne, gør det også muligt at begrænse det maksimale antal åbne forbindelser til databaseserveren. Det kan også bruges til trafikformning som at omdirigere forbindelser til en eller flere databaser til forskellige databaseservere. Ud over disse kan PgBouncer bruges til at administrere sikkerhed på bruger- og endda på databaseniveau.

Du kan downloade PgBouncer via deres downloadside og begynde at bruge det nu!

For mere information om PgBouncer kan du tjekke mit tidligere blogindlæg om PgBouncer.

God læsning!


  1. Hvordan finder man forskelle s/h TIMESTAMP-formatværdier i Oracle?

  2. Bruger samme kolonne flere gange i WHERE-sætning

  3. freeTDS bruger ikke sin konfiguration

  4. PASS Summit 2013 :En succes i Charlotte