L'objectif principal de Patroni est de fournir une haute disponibilitĂ© pour PostgreSQL. Mais Patroni n'est qu'un modĂšle, pas un outil prĂȘt Ă l'emploi (ce qui, en gĂ©nĂ©ral, est ce que dit la documentation). Ă premiĂšre vue, en configurant Patroni dans le laboratoire de test, vous pouvez voir Ă quel point il s'agit d'un excellent outil et avec quelle facilitĂ© il gĂšre nos tentatives de briser le cluster. Cependant, dans la pratique, dans un environnement de production, les choses ne se passent pas toujours aussi bien et Ă©lĂ©gamment que dans un laboratoire de test.
Vidéo:
. . -. 2014- Data Egret. Postgres. Postgres, Postgres, , .
2018- Patroni. - . - , , best practices. .
Postgres Linux. , . , , , Kubernetes. , . . postgresâ , , . . , . Go. software engineer, Go. .
- , , Postgres HA (High Availability) . HA, - , , .
- Patroni â , HA - . , , , - , , Patroni . , .
- . .
- , , â .
- , Patroni, , , , , . , , .
- . , .
- , Patroni PostgreSQL. , , , , , .
disclaimer , .
, , 6-7-8 . best practices. . - , .
, . , - , - , , - . .
Patroni?
- HA. . , . Patroni â , , . . , .
- , , init- Postgres. Postgres, , , .
- , , , , - . Patroni state . . Etcd, Consul, ZooKeeper, kubernetesâ Etcd, . . - .
- Patroni â , , . Repmgr, . Repmgr switchover, , . Patroni .
- . , , , . . , .
â , Patroni â , .
Patroni, . Postgres, Patroni Patroni, DCS, state. - . , ?
:
- Postgres. , - .
- Patroni.
- DCS, state.
- .
.
, , . , , ⊠, - .
. , DCS. . , . . .
, , , .
, . . . , .
, . . - , . .
, . . . : , . . . .
, , , , , .
, Patroni. , , . .
, , . . , . . . , DCS, . . - . , . «demoted self» .
, , , .
Patroni, , , -, . . Patroni DCS. Consul agent, 8500.
, Patroni . Consul-. , Consul. .
- , , Patroni . . Pgdb-2 . . . , - , , . . , .
, , Patroni . . . , .
- , Consul- , . , : , Consul.
, , Consul. Patroni c Consul', . . Postgres, Consul. , , .
ttl, loop_wait, retry_timeout, . . . , . . .
, , . DCS , .
. , DCS.
, , . Patroni , DCS, .
, Patroni , . pg_rewind, , . Patroni , .
, , . . , , . Patroni . . , , , , - . , , .
. . , , , - , Patroni . . , .
, , , . DCS Consul, Consul, .
Consul, , Consul- Consul-.
Consul-, , - . Consul- . .
, , , , , deadline, RPC falled, . . - Consul- .
â . , , . , . , . - .
:
- , , -, , Consul-, . . . Consul- . .
- â raft_multiplier. Consul-. 5. staging . Consul . , Consul-. production .
- , , Consul . «nice», . Consul- nice, .. , Consul . .
- â Consul. , Etcd. , Etcd Consul. , , , Consul , . . . Patroni Consul- . . - , Patroni Consul-. . Etcd . Patroni Etcd- . , Etcd, Etcd , , , Consul. , . Consul .
- â . , . Patroni , - .
, , Patroni, .
. . , , . , , , .
, . . , . , .
. .
, . Patroni , pg_rewind. , .
. , Postgres . .
, . , . , pg_rewind checkpoint. . , , .
timestamps, . 150 , . . 369 checkpoint, WAL-. 517 150 rewind . . . 150 , .
?
. , . . , , WAL-, . . - . , , .
, , , WAL-. , wal_keep_segments. 8 . 1 000 , . 16 wal_keep_segments. . . 16 .
â maintenance . , . . , , , -. , . wal_keep_segments, , . , , , . . .
production-. .
. â , , . , .
, - , , . , .
, pg_rewind . , , .
, , , , . . , , .
. Patroni. Patroni. Postgres. Postgres' , Patroni pg_rewind. , , . Patroni , . . . . 3 , 3 â .
. , . , rewind. . rewind, - .
, . â . , . . , .
pg_wal_lsn_diff . 17 . . - 17 â , - . .
?
-, â Patroni ? , , , . , , , . â standalone- , .
, , .
, «maximum_lag_on_failover». , , 1 .
? 1 , . , Patroni , . , . , .
, Patroni DCS . -, 30 ttl .
, , DCS , , . . realtime. . .
. , . . . , Patroni , , , .
. , - . . . - , , . . .
, maximum_lag_on_failover , . . . , , . .
, Postgres. , SSH. .
. - , , . , .
, , . . , .
postgresâ , , . , -- , . , . . . . .
dmesg ( ). , . software Raid. /proc/mdstat , . . . Raid 8 , . , , sde . , , . , Postgres.
Patroni , Patroni , . . .
â , watchdog? , , Patroni DCS . . . DCS Patroni , , .
, , , , -.
, , . . Patroni , Patroni , , . , . .
? , , . , .
, . . .
.
, , .
â immediate shutdown request. Postgres :
- graceful, , .
- fast, , .
- immediate. immediate , , . RST (TCP-, ).
? Postgres , . . kill-9. , , . . Postgres. , .
«last» , , . , kill -9. kill -9, .. Postgres , kill -9, .
, , Patroni â 54 . timestamp, 54 .
. Patroni . , - . . . pgsql01 .
, . . . . , recovery.conf, Postgres . 10 , , .
immediate-shutdown . . recovery , . . . , .
- , .
, recovery.conf . , - .
Patroni , , . , . . . , .
, , , , , . , , recovery.conf, .
. , recovery.conf, , . - , , , . . - . .
30 , . . Patroni . , , . â Patroni, , - . recovery. , .
. , .
, . Patroni, Postgres, Patroni , .
, , , . . - . .
â , Postgres, checkpoint, - , recovery ? WAL .
Patroni, checkpoints , - , . . , . . .
, , .
? Patroni , . â 100 % , . , - , , .
, , . . , .
. . , .
Patroni, . , , , , , . .
. , , , , , Patroni, DCS.
, Patroni â . , . , .
Patroni â . , Postgres, , Patroni Postgres, . , .
? , ELK , , 6 2 . â Patroni , â Consul, Postgres . .
? -, , . . , , . : .
, , . . , .
, , ( ).
? :
- Patroni.
- Postgres, DCS , Patroni.
- , .
Patroni? Patroni . , , . . Stolon, Repmgr, Pg_auto_failover, PAF. 4 . . Patroni .
: « Patroni?». , , Patroni . , , .
, Patroni, , , issues GitHub. . - , . . .
, . . , . .
Zalando , , . â , Zalando , , .
, Patroni â . , , . , Patroni. , Patroni , . , , , . Patroni, . , .
. , .
! , ?
. . . , , . â .
, , ?
, . , , . . . Patroni REST API, history. history , . . history, . , , . . , , .
!
! DCS - Postgres, ? best practices , - DCS , - . .? ? ?
, , - . . . DCS . , , . DCS , , , , .
. . , Patroni, , , - ?
, DCS-. (), . Patroni . . - , , , â , , Patroni . â patronictl pause, patronictl resume. , . maintenance DCS-, .
!
! , ?
, .
?
. « RPO RTO», . . . , . , , . , . Patroni, : , . , 100%- .
, ! Patroni zero level protection? . . standby? . . . Repmgr, . Patroni . Repmgr?
. , ( , â ). , , , , Patroni Standalone-, . .
, Repmgr . ? Patroni , Repmgr , . Repmgr daemon .
Repmgr â Postgres. Repmgr , .. Repmgr . Repmgr, ⊠. DCS, Stolon, Patroni, .
, , , . DCS . , â , , . , - DCS- ? , : .
, DCS , . . , . , DCS , , . . - ? Patroni read only . Patroni . DCS , read only. DCS .
, DCS , ?
Oui oui. Dans de nombreuses entreprises modernes, Service Discovery fait partie intĂ©grante de l'infrastructure. Il est mis en Ćuvre avant mĂȘme qu'il n'y ait mĂȘme une base de donnĂ©es dans l'infrastructure. Relativement parlant, l'infrastructure a Ă©tĂ© lancĂ©e, dĂ©ployĂ©e dans le DC, et nous avons immĂ©diatement Service Discovery. Si c'est Consul, alors DNS peut ĂȘtre construit dessus. S'il s'agit d'Etcd, il peut faire partie du cluster Kubernetes, dans lequel tout le reste sera dĂ©ployĂ©. Il me semble que Service Discovery fait dĂ©jĂ partie intĂ©grante des infrastructures modernes. Et ils y pensent bien avant les bases de donnĂ©es.
Merci!