65
Život postgresového serveru bez ručních zásahů Jakub Jedelský P2D2 2019

P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život postgresového serverubez ručních zásahů

Jakub Jedelský

P2D2 2019

Page 2: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

“GD je hodně silný v automatizaci”– Pavel Stěhule

Page 3: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodData

Zdroj: https://developer.gooddata.com/

Analytické aplikace velkého rozsahu

Page 4: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodData

Zdroj: https://help.gooddata.com/display/doc/GoodData+Platform+Overview

Platforma

Page 5: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodDataČísla: příklad zákazníka

▸ 29 000 projektů▸ 880 000 koncových uživatelů▸ 22,7 TB dat▸ Největší: 750 GB s 13 500 uživateli

Zdroj: https://medium.com/gooddata-developers/high-concurrency-analytics-with-gooddata-7d5ca988966f

Page 6: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodDataČísla: příklad zákazníka

▸ 29 000 projektů▸ 880 000 koncových uživatelů▸ 22,7 TB dat▸ Největší: 750 GB s 13 500 uživateli

▸ 4 554 678 zobrazení / den▸ 15 000 / minuta ve špičce

▸ 20 000 000 queries / den▸ 2 300 hodin počítání

Zdroj: https://medium.com/gooddata-developers/high-concurrency-analytics-with-gooddata-7d5ca988966f

Page 7: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodDataZákladní stavební jednotka

Projekt

▸ Informace o uživateli

▸ Metadata

▸ Data

▸ Cache

Zdroj: https://help.gooddata.com/display/doc/Architecture+Principles#ArchitecturePrinciples-ProjectPartitioning

Page 8: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodDataDatabáze

Projekt

▸ Informace o uživateli

▸ Metadata

▸ Data

▸ Cache

Page 9: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

GoodDataDatabáze

Projekt

▸ Informace o uživateli

▸ Metadata

▸ Data

▸ Cache

29 000 × 3

Page 10: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveru

▸ Deployment▸ Údržba▸ Ukončení

Page 11: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruDeployment

▸ Deployment▸ Vytvoření virtuálního serveru▸ Konfigurace▸ Start služeb▸ Registrace do aplikace

▸ Údržba▸ Ukončení

Page 12: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Deployment▸ Vytvoření virtuálního serveru▸ Konfigurace▸ Start služeb▸ Registrace do aplikace

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

▸ Ukončení

Page 13: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Deployment▸ Vytvoření virtuálního serveru▸ Konfigurace▸ Start služeb▸ Registrace do aplikace

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

Page 14: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruDeployment

▸ Deployment▸ Vytvoření virtuálního serveru▸ Konfigurace▸ Start služeb▸ Registrace do aplikace

Page 15: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentVytvoření virtuálního serveru

Cluster-deployer:

▸ Vlastní nástroj▸ Foreman klient▸ YAML konfigurace▸ Verzování konfigurace

Page 16: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentVytvoření virtuálního serveru

Cluster-deployer:

▸ Vlastní nástroj▸ Foreman klient▸ YAML konfigurace▸ Verzování konfigurace

---test-pg01: description: “Postgresql Datamart” flavor: c4r30e950 parameters: icinga_services: !csv - pgsql - … role: pdwh type: cl_pdwh require: - test-maria01

Page 17: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentVytvoření virtuálního serveru

Cluster-deployer:

▸ Vlastní nástroj▸ Foreman klient▸ YAML konfigurace▸ Verzování konfigurace

---test-pg01: description: “Postgresql Datamart” flavor: c4r30e950 parameters: icinga_services: !csv - pgsql - … role: pdwh type: cl_pdwh require: - test-maria01

$ cluster-deployer --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

Page 18: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentVytvoření virtuálního serveru

Cluster-deployer:

▸ Vlastní nástroj▸ Foreman klient▸ YAML konfigurace▸ Verzování konfigurace

---test-pg01: description: “Postgresql Datamart” flavor: c4r30e950 parameters: icinga_services: !csv - pgsql - … role: pdwh type: cl_pdwh require: - test-maria01

$ cluster-deployer --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

OS řešení:

Page 19: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruDeployment

▸ Deployment▸ Vytvoření virtuálního serveru▸ Konfigurace▸ Start služeb▸ Registrace do aplikace

Page 20: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentKonfigurace, start služeb, registrace do aplikace

Puppet:

▸ Software Configuration Management▸ Vlastní deklarativní jazyk▸ Popisuje stav serveru▸ Release

▸ Změny konfigurace▸ Instance nových a aktualizovaných

balíků▸ Start služeb

Page 21: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentKonfigurace, start služeb, registrace do aplikace

Puppet:

▸ Software Configuration Management▸ Vlastní deklarativní jazyk▸ Popisuje stav serveru▸ Release

▸ Změny konfigurace▸ Instance nových a aktualizovaných

balíků▸ Start služeb

# postgresql.pp

class { ‘postgresql::server’ :}

Page 22: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentKonfigurace, start služeb, registrace do aplikace

Puppet:

▸ Software Configuration Management▸ Vlastní deklarativní jazyk▸ Popisuje stav serveru▸ Release

▸ Změny konfigurace▸ Instance nových a aktualizovaných

balíků▸ Start služeb

# postgresql.pp

class { ‘postgresql::server’ :}

postgresql::server::db { ‘mydb’: user => ‘dbadmin’, password => postgresql_password( ‘dbadmin’,‘Secret!’),}

Page 23: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentPuppet pro Pg nodu v Gooddata

Page 24: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

DeploymentPuppet pro Pg nodu v Gooddata

Page 25: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

Page 26: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringGraphite & Grafana

Page 27: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Lokální:

▸ collectd▸ doručeno lokálně na server puppetem

Page 28: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Lokální:

▸ collectd▸ doručeno lokálně na server puppetem

# monitoring.pp

collectd::plugin::postgresql::query { ‘select-1’: statement => “SELECT 1 AS one” , results => [{ type => ‘gauge’, valuesfrom => ‘one’, instanceprefix => ‘select-1’, ]}}

collectd::plugin::postgresql::database { ‘postgres’: (...) query => [‘select-1’]}

Page 29: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Lokální:

▸ collectd▸ doručeno lokálně na server puppetem

+ server odesílá vlastní info+ nepotřebuje vzdálený přístup- pomalý release

# monitoring.pp

collectd::plugin::postgresql::query { ‘select-1’: statement => “SELECT 1 AS one” , results => [{ type => ‘gauge’, valuesfrom => ‘one’, instanceprefix => ‘select-1’, ]}}

collectd::plugin::postgresql::database { ‘postgres’: (...) query => [‘select-1’]}

Page 30: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Vzdálený:

▸ Vlastní služba (immutabilní infrastruktura)▸ Doručováno po merge

Page 31: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Vzdálený:

▸ Vlastní služba (immutabilní infrastruktura)▸ Doručováno po merge

Page 32: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringLokální vs. vzdálený

Vzdálený:

▸ Vlastní služba (immutabilní infrastruktura)▸ Doručováno po merge

+ rychlý release- vyžaduje třetí službu (service discovery)

Page 33: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

MonitoringGrafana dashboard

Grafana dashboard builder:

▸ Popis dashbordu v YAML▸ Verzovatelné▸ Open source▸ https://github.com/jakubplichta/grafana-dashboard-builder/

- name: overview

dashboard:

title: '{dashboard-prefix} Overview'

tags:

- tag1

- tag2

<<: *default-dashboard

rows:

- row:

title: '{dashboard-prefix}-row'

panels:

- graph:

span: 3

title: Frontend

target:

'aliasByMetric({metric-prefix}.frontend.*)'

- graph:

span: 3

title: Backend

target:

'aliasByMetric({metric-prefix}.backend.*)'

Page 34: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

Page 35: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Alerting

▸ E-mail

▸ Pagerduty.com

Page 36: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

AlertingPuppet

▸ E-mail

▸ Pagerduty.com

# icinga templateapply Service "pgsql" { check_command = "nrpe" vars.nrpe_command = "check_pgsql" display_name= "PgSQL" assign where "pgsql" in host.vars.gdc_services}

Page 37: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

AlertingPuppet + cluster-deployer

▸ E-mail

▸ Pagerduty.com

# icinga templateapply Service "pgsql" { check_command = "nrpe" vars.nrpe_command = "check_pgsql" display_name= "PgSQL" assign where "pgsql" in host.vars.gdc_services}

# cluster-deployerstg3-pdwh01: parameters: icinga_services: !csv - pgsql

Page 38: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

Page 39: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Logování

▸ Aplikační log▸ Postgresql log▸ Postgresql slow queries▸ Postgresql auto_explain▸ Vertica queries

Page 40: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Logování

▸ Aplikační log▸ Postgresql log▸ Postgresql slow queries▸ Postgresql auto_explain▸ Vertica queries

Page 41: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Logování

▸ Aplikační log▸ Postgresql log▸ Postgresql slow queries▸ Postgresql auto_explain▸ Vertica queries

?

Page 42: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Logování

▸ Aplikační log▸ Postgresql log▸ Postgresql slow queries▸ Postgresql auto_explain▸ Vertica queries

?

index=os source=/mnt/log/postgresql.log "automatic vacuum" "pg_catalog"| rex field=_raw "automatic vacuum of table \"(?<db_name>\w+)\..*"| stats count by db_name,host | search count > 500

Page 43: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Logování

▸ Aplikační log▸ Postgresql log▸ Postgresql slow queries▸ Postgresql auto_explain▸ Vertica queries

?

index=os source=/mnt/log/postgresql.log "automatic vacuum" "pg_catalog"| rex field=_raw "automatic vacuum of table \"(?<db_name>\w+)\..*"| stats count by db_name,host | search count > 500

OS řešení:

Page 44: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Údržba▸ Monitoring▸ Alerting▸ Logování▸ Rozdělování zátěže (balancing)▸ Release / ad hoc operativa

Page 45: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Priority:

1. Počítání2. Load3. Velikost

Page 46: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Priority:

1. Počítání2. Load3. Velikost

Hodinová historická data

Page 47: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Priority:

1. Počítání2. Load3. Velikost

Skóre projektuHodinová historická data

Page 48: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Priority:

1. Počítání2. Load3. Velikost

Skóre serveruSkóre projektuHodinová historická data

Page 49: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Priority:

1. Počítání2. Load3. Velikost

Skóre projektu Skóre serveruHodinová historická data

Page 50: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Migrace:

▸ Postgresql ↔Postgresql

▸ Postgresql ↔ Vertica

▸ Vertica ↔ Vertica▸ Cross DC

Page 51: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

BalancingRedistribuce DB skrz platformu

Migrace:

▸ Postgresql ↔Postgresql

▸ Postgresql ↔ Vertica

▸ Vertica ↔ Vertica▸ Cross DC

1. Zapnutí commit logu2. Export + import dat3. Přepnutí zdroje v Project router4. Vyčištění

Page 52: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruÚdržba

▸ Údržba▸ Monitoring▸ Alerting▸ Rozdělování zátěže (balancing)▸ Logování▸ Release / ad hoc operativa

Page 53: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaHistorie: clusterExec.py

Historie: clusterExec.py

▸ Multi-ssh klient▸ Vzdálené spouštění příkazů▸ Upload souborů▸ List nodů v (sub)clusteru

Page 54: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaHistorie: clusterExec.py

Historie: clusterExec.py

▸ Multi-ssh klient▸ Vzdálené spouštění příkazů▸ Upload souborů▸ List nodů v (sub)clusteru

+ rychlost

Page 55: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaHistorie: clusterExec.py

Historie: clusterExec.py

▸ Multi-ssh klient▸ Vzdálené spouštění příkazů▸ Upload souborů▸ List nodů v (sub)clusteru

+ rychlost

- bez historie- netestovatelné- pouze pro uživatele s přístupem na produkci

Page 56: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaHistorie: clusterExec.py

Historie: clusterExec.py

▸ Multi-ssh klient▸ Vzdálené spouštění příkazů▸ Upload souborů▸ List nodů v (sub)clusteru

+ rychlost

- bez historie- netestovatelné- pouze pro uživatele s přístupem na produkci

clusterExec.py -c prod -- ‘sudo rm -rf / tmp/directory/’

Page 57: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaRundeck

Zdroj: https://www.rundeck.com/open-source

Page 58: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Release / ad hoc operativaRundeck

Rundeck:

▸ YAML konfigurace▸ Code review▸ Verzovatelné

▸ Skládání úloh jako “Lego® kostičky”

- description: 'Stop PostgreSQL Database' name: {{name}}_stop_postgres_db options: - description: ‘Wait time in minutes’ name: stop-postgres-db.wait value: '15' required: true sequence: commands: - description: 'Stop postgres database' script: |- set -x

function wait_for_postgres() { local SERVICE_NAME=$1 for ((i=1;i<="@option.stop-postgres-db.wait@";++i)); do echo "Waiting till postgres is stopped" sudo service $SERVICE_NAME status if [[ $? -gt 0 ]]; then echo "Postgres reported it shut down successfully" return 0 fi sleep 60 done

echo "postgres database did not stop in @option.stop-postgres-db.wait@ minutes" return 1 }

systemctl stop postgresql systemctl stop pgbouncer

wait_for_postgres $POSTGRESQL_SERVICE exit $?

Page 59: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

Page 60: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

Page 61: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

1. Bezvýpadkový rebalancing

Page 62: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

1. Bezvýpadkový rebalancing2. Odpojení (shell cmd)

Page 63: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

$ cluster-deployer --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

1. Bezvýpadkový rebalancing2. Odpojení (shell cmd)

3.

Page 64: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

Život serveruUkončení

▸ Ukončení▸ Vyklizení serveru▸ Odpojení z aplikace▸ Terminace

$ cluster-deployer --terminate --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

1. Bezvýpadkový rebalancing2. Odpojení (shell cmd)

3.

Page 65: P2D2 2019 bez ručních zásahů Život postgresového serveru › files › p2d2_zivot.pdf · 2019-02-21 · Život postgresového serveru bez ručních zásahů Jakub Jedelský

[email protected]

https://medium.com/gooddata-developers

Q?