Juster din managed database: Redis- og Postgres-indstillinger
Managed database-clustre leveres med fornuftige standardindstillinger, men fornuftigt er ikke altid rigtigt for din arbejdsbyrde. Suble lader dig nu justere de Redis CONFIG-nøgler og Postgres-parametre der faktisk betyder noget — eviction-politik, forbindelsesgrænser, hukommelse, holdbarhed — direkte fra dashboardet eller CLI'en. Redis-ændringer anvendes live uden nedetid; en Postgres-indstilling der kræver genstart udrulles et medlem ad gangen, den primære til sidst.
The Suble team
Engineering ·
Hvert managed Redis- og Postgres-cluster hos Suble leveres med standardindstillinger valgt til at være sikre for de fleste arbejdsbyrder. Sikkert er ikke altid det samme som rigtigt — et cache-tungt Redis-cluster vil have en anden eviction-politik end en kø; en skrivetung Postgres-app vil have en større shared_buffers end en rapporterings-replika. Indtil nu betød det at spørge os. Nu er der en Konfiguration-sektion på Indstillinger-fanen for hvert managed database-cluster, og tilsvarende suble cluster config-kommandoer i CLI'en.
En tilladelsesliste, ikke en config-fil
Du får ikke rå adgang til redis.conf eller postgresql.conf. I stedet er der en kurateret tilladelsesliste af parametre pr. motor — de knapper der ændrer reel adfærd, med fornuftige grænser hvor det giver mening (max_connections mellem 20 og 1000, ikke 0 eller en milliard). Administrerede indstillinger — autentificering, TLS, replikering, load balancerens sundhedstjek-routing — er simpelthen ikke på listen, så der er ingen måde at konfigurere et cluster til en usikker eller ødelagt tilstand.
- Redis:
maxmemory-policy,maxmemory,maxclients,timeout,tcp-keepalive,appendfsync, RDBsave-skemaet,notify-keyspace-events, og slowlog-grænserne. - Postgres:
max_connections,shared_buffers,work_mem,maintenance_work_mem,effective_cache_size,max_wal_size/min_wal_size,checkpoint_completion_target,random_page_cost,statement_timeout,idle_in_transaction_session_timeout,log_min_duration_statement,max_parallel_workers_per_gather, ogtimezone.
To motorer, to måder det træder i kraft på
Redis og Postgres anvender en config-ændring meget forskelligt, så de to motorer opfører sig forskelligt med vilje:
- Redis — hver nøgle på listen er en ægte runtime-indstilling. En ændring sendes ud som
CONFIG SETtil hvert medlem og gemmes medCONFIG REWRITE. Ingen genstart, ingen droppet forbindelse, ingen failover. - Postgres — de fleste nøgler (
work_mem,statement_timeout, og størstedelen af listen) genindlæses live: Patroni sender dem til hvert medlems dynamiske konfiguration viapatronictl edit-config, og Postgres tager dem i brug uden genstart. En håndfuld nøgler (max_connections,shared_buffers) kompileres ind i delt hukommelse ved opstart og kræver reelt at Postgres genstarter — de udrulles et medlem ad gangen, replikaer først, den primære til sidst, samme disciplin vi bruger til OS-opdateringer og størrelsesændringer. Skrivninger afbrydes aldrig; der er kun en kort failover når den primære selv genstarter.
Dashboardet fortæller dig hvilken er hvilken
Hver indstilling i Konfiguration-kortet er mærket hvis den kræver genstart. Gem en ændring der inkluderer en, og bekræftelsesdialogen staver nøjagtigt ud hvad der er ved at ske, før du gennemfører den.
Fra dashboardet, eller fra et script
Indstillinger-fanen viser det fulde katalog for motoren i dit cluster, den aktuelt gældende værdi for hver nøgle (standard eller din tilsidesættelse), og en nulstilling til standard med et enkelt klik. De samme handlinger er en kommando væk fra et script eller et CI-job:
suble cluster config get my-redis
suble cluster config set my-redis maxmemory-policy=allkeys-lru maxclients=20000
suble cluster config get my-postgres
suble cluster config set my-postgres work_mem=8MB
suble cluster config set my-postgres max_connections=200
# -> ændring der kræver genstart: udrulles automatisk, den primære til sidst
# Nulstil en nøgle til standard ved at sætte den til en tom værdi:
suble cluster config set my-redis maxmemory-policy=Indstillinger overlever skalering, tilpasning og selvhelbredelse
Dine tilsidesættelser gemmes direkte på dit cluster, ikke kun skubbet ud til de aktuelt kørende medlemmer. Så når du skalerer op, tilpasser til en større plan, eller et selvhelbredt erstatningsmedlem kommer online, gengiver det sin konfiguration fra dine gemte indstillinger — det starter allerede konfigureret som du vil have det, ikke tilbage ved fabriksindstillingerne.
Konfiguration er live på alle managed Redis- og Postgres-clustre allerede i dag — ingen migration, intet tilvalg. Gå til Indstillinger-fanen på et cluster, eller kør suble cluster config get <cluster> for at se det fulde katalog for dit.
Skrevet af
The Suble team
Engineering