P2D Život postgresového serveru bez ručních zásahů. Jakub Jedelský

Podobné dokumenty
Evoluce deploye Od FTP po automatický deploy

Automatizace správy linuxové infrastruktury pomocí Katello a Puppet LinuxDays

Použití PostgreSQL v. P2D Martin Swiech

Životní cyklus IT systémů

Diagnostika webových aplikací v Azure

Možnosti využití cloudových služeb pro provoz IT

TimescaleDB. Pavel Stěhule 2018

Úvod do Operačních Systémů

Verzování a publikace dat na webu za pomoci PostgreSQL

Tipy a triky nejenom v shellu nejenom pro programátory

Administrace, Monitoring. Pavel Stěhule P2D2, Praha 2016

Monitoring SQL Server, Resource Governor, Tracing SQL Server

Vladimír

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Databáze ROMARIN (WIPO)

OpenNebula pro začátečníky SUT Tomáš Kukrál

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

INDEXY JSOU GRUNT. Pavel Stěhule

Státní ICT jak to zvládáme na NKÚ. Jan Mareš

U nás na farmě (Linux konsolidace) konference itsmf

Open Source řešení pro Mission critical systémy. Software Defined Networks v praxi , Praha

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Kubernetes Azure Service Fabric

CFEngine 3 Nástroj pro hromadnou správu

w w w. u l t i m u m t e c h n o l o g i e s. c z Infrastructure-as-a-Service na platformě OpenStack

Komponovatelná infrastruktura jako kód s HPE a Red Hat Ansible aneb cesta k DevOps

Cíl workshopu. - seznámit uživatele s prostředím OpenStack - procvičit základní úkony v OpenStack:

Případová studie: Adresářové řešení pro webhosting pomocí ApacheDS. Lukáš Jelínek

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Řešení pro audit činnosti administrátorů UNIX/Linux serverů

Implementace dávkových operací

Od klasického reportingu k SAP BO Design studio na BW power by HANA Pavel Strnad

SIMATIC WinCC Data Monitor. Siemens s.r.o.

FUJITSU PRIMEFLEX. Human Centric Innovation in Action. Integrované systémy pro Vaše řešení. 30. května 2017 Pavel Čáslavský. 0 Copyright 2017 FUJITSU

Zálohování a obnova databáze. Kryštof Měkuta

Tipy technické podpory 2015

MBI - technologická realizace modelu

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

eduroam.cz správa a deployment pomocí Ansible

Serverové systémy Microsoft Windows

Systémová administrace portálu Liferay

Synchronní replikace v PostgreSQL 9.1

Stěhování aplikací. Michal Tomek, Sales Manager

prostředí IDS 11.5 na Martin Mikuškovic, ICZ a. s

DNS, DHCP DNS, Richard Biječek

Vysvětlení zadávací dokumentace č. 3

Informační systém klubu Silicon Hill

Lotus Quickr - ECM Integrace s LD/LN aplikacemi. Ing. Josef Homolka VUMS Legend

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Úvod do Operačních Systémů

IBM SmartCloud Enterprise Igor Hegner ITS Sales

Ruby on Rails: zapomeňte na Javu

Monitorovací systém Zabbix. Lukáš Malý

PostgreSQL jako platforma pro datové sklady

PHP a Large Objecty v PostgreSQL

Úvod do Operačních Systémů

SQL. relační databázový systém. v úvodní kurz jazyka SQL


Revit link. Propojení mezi Scia Engineer a Revit structure

WinCC/Calendar Scheduler. TIA na dosah

Monitoring výkonu PostgreSQL

Správa a sledování SOA systémů v Oracle SOA Suite

Bi-Direction Replication

Optimalizace dotazů a databázové transakce v Oracle

Open source kyberbezpečnost ve školách

Agilní metodiky vývoje softwaru

Příprava k certifikaci , TS: Windows 7, Configuring

Nové jazykové brány do Caché. Daniel Kutáč

Projekt VRF LITE. Jiří Otisk, Filip Frank

Služby datového centra

Ekonomická krize jako (významná) obchodní příležitost!

IW3 MS SQL SERVER 2014

SQL injection princip a ochrana

Projekt JetConf REST API pro vzdálenou správu

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

Lukáš Brodský Praha Osnova. Objektový přístup Verze 4, 5, 6 / 7 Developer7 -funkčnost, nové vlastnosti HW

BEZPEČNOST (BEZ)DRÁTU. Martin Macek,

NMS. Linux na Strahově. Radim Roška & Moris Bangoura InstallFest Silicon Hill

Praha, Martin Beran

Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra Czech and Slovak PostgreSQL Users Group

Integrace podnikových Open Source aplikací v praxi. RNDr. Petr Novák, Open Source Conference Praha, 19. duben 2011

František Kysela SE Datacenter

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

User-Managed Backup RMAN (od v. 8.1)

BIRD Internet Routing Daemon

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

uzly. Výpočetní uzel (Working node) výkonná jednotka clusteru.

Virtuální datacentrum na ovirt způsob

Uživatelský modul. DF1 Ethernet

Zvýšení zabezpečení počítače

Řešení ochrany databázových dat

NSS - Cache 5. LECTURE MARTIN TOMASEK

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

První pomoc pro DBA. administrátory CIDUG. Milan Rafaj IBM Česká republika

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Full-textové vyhledávání. Július Štroffek Revenue Product Engineer Sun Microsystems

Cloud. Nebo zatím jen mlha? Workshop Day 2011 WG06 Jaromír Šlesinger, CA Technologies Bratislava, 13. október 2011

Transkript:

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

GD je hodně silný v automatizaci Pavel Stěhule

GoodData Analytické aplikace velkého rozsahu Zdroj: https://developer.gooddata.com/

GoodData Platforma Zdroj: https://help.gooddata.com/display/doc/gooddata+platform+overview

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

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

GoodData Základní stavební jednotka Projekt Informace o uživateli Metadata Data Cache Zdroj: https://help.gooddata.com/display/doc/architecture+principles#architectureprinciples-projectpartitioning

GoodData Databáze Projekt Informace o uživateli Metadata Data Cache

GoodData Databáze Projekt Informace o uživateli Metadata 29 000 3 Data Cache

Život serveru Deployment Údržba Ukončení

Život serveru Deployment Deployment Vytvoření virtuálního serveru Konfigurace Start služeb Registrace do aplikace Údržba Ukončení

Život serveru Údržba Deployment Údržba Vytvoření virtuálního serveru Konfigurace Start služeb Registrace do aplikace Monitoring Alerting Logování Rozdělování zátěže (balancing) Release / ad hoc operativa Ukončení

Život serveru Ukončení Deployment Údržba Vytvoření virtuálního serveru Konfigurace Start služeb Registrace do aplikace Monitoring Alerting Logování Rozdělování zátěže (balancing) Release / ad hoc operativa Ukončení Vyklizení serveru Odpojení z aplikace Terminace

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

Deployment Vytvoření virtuálního serveru Cluster-deployer: Vlastní nástroj Foreman klient YAML konfigurace Verzování konfigurace

Deployment Vytvoř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

Deployment Vytvoř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

Deployment Vytvoření virtuálního serveru Cluster-deployer: Vlastní nástroj Foreman klient YAML konfigurace Verzování konfigurace OS řešení: --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

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

Deployment Konfigurace, 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

Deployment Konfigurace, start služeb, registrace do aplikace # postgresql.pp 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 class { postgresql::server : }

Deployment Konfigurace, start služeb, registrace do aplikace # postgresql.pp 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 class { postgresql::server : } postgresql::server::db { mydb : user => dbadmin, password => postgresql_password( dbadmin, Secret! ), }

Deployment Puppet pro Pg nodu v Gooddata

Deployment Puppet pro Pg nodu v Gooddata

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

Monitoring Graphite & Grafana

Monitoring Lokální vs. vzdálený Lokální: collectd doručeno lokálně na server puppetem

Monitoring Lokální vs. vzdálený Lokální: collectd doručeno lokálně na server puppetem # monitoring.pp collectd::plugin::postgresql::query { statement => SELECT 1 AS one, results => [{ type => gauge, valuesfrom => one, instanceprefix => select-1, ]} } select-1 : collectd::plugin::postgresql::database { postgres : (...) query => [ select-1 ] }

Monitoring Loká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 { statement => SELECT 1 AS one, results => [{ type => gauge, valuesfrom => one, instanceprefix => select-1, ]} } select-1 : collectd::plugin::postgresql::database { postgres : (...) query => [ select-1 ] }

Monitoring Lokální vs. vzdálený Vzdálený: Vlastní služba (immutabilní infrastruktura) Doručováno po merge

Monitoring Lokální vs. vzdálený Vzdálený: Vlastní služba (immutabilní infrastruktura) Doručováno po merge

Monitoring Loká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)

Monitoring Grafana dashboard - name: overview Grafana dashboard builder: dashboard : title: '{dashboard-prefix} Overview' tags: Popis dashbordu v YAML Verzovatelné Open source https://github.com/jakubplichta/grafana-dashboard-builder/ - 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.*)'

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

Alerting E-mail Pagerduty.com

Alerting Puppet E-mail Pagerduty.com # icinga template apply Service "pgsql" { check_command = "nrpe" vars.nrpe_command = "check_pgsql" display_name= "PgSQL" assign where "pgsql" in host.vars.gdc_services }

Alerting Puppet + cluster-deployer E-mail Pagerduty.com # icinga template apply Service "pgsql" { check_command = "nrpe" vars.nrpe_command = "check_pgsql" display_name= "PgSQL" assign where "pgsql" in host.vars.gdc_services } # cluster-deployer stg3-pdwh01: parameters: icinga_services:!csv - pgsql

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

Logování Aplikační log Postgresql log Postgresql slow queries Postgresql auto_explain Vertica queries

Logování Aplikační log Postgresql log Postgresql slow queries Postgresql auto_explain Vertica queries

Logování Aplikační log Postgresql log Postgresql slow queries Postgresql auto_explain Vertica queries?

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

Logování Aplikační log Postgresql log Postgresql slow queries Postgresql auto_explain Vertica queries OS řešení:? 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

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

Balancing Redistribuce DB skrz platformu Priority: 1. 2. 3. Počítání Load Velikost

Balancing Redistribuce DB skrz platformu Priority: 1. 2. 3. Počítání Load Velikost Hodinová historická data

Balancing Redistribuce DB skrz platformu Priority: 1. 2. 3. Počítání Load Velikost Hodinová historická data Skóre projektu

Balancing Redistribuce DB skrz platformu Priority: 1. 2. 3. Počítání Load Velikost Hodinová historická data Skóre projektu Skóre serveru

Balancing Redistribuce DB skrz platformu Priority: 1. 2. 3. Počítání Load Velikost Hodinová historická data Skóre projektu Skóre serveru

Balancing Redistribuce DB skrz platformu Migrace: Postgresql Postgresql Postgresql Vertica Vertica Vertica Cross DC

Balancing Redistribuce DB skrz platformu Migrace: Postgresql Postgresql Postgresql Vertica Vertica Vertica Cross DC 1. 2. 3. 4. Zapnutí commit logu Export + import dat Přepnutí zdroje v Project router Vyčištění

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

Release / ad hoc operativa Historie: clusterexec.py Historie: clusterexec.py Multi-ssh klient Vzdálené spouštění příkazů Upload souborů List nodů v (sub)clusteru

Release / ad hoc operativa Historie: clusterexec.py Historie: clusterexec.py Multi-ssh klient Vzdálené spouštění příkazů Upload souborů List nodů v (sub)clusteru + rychlost

Release / ad hoc operativa Historie: 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

Release / ad hoc operativa Historie: clusterexec.py Historie: clusterexec.py Multi-ssh klient Vzdálené spouštění příkazů Upload souborů List nodů v (sub)clusteru + rychlost clusterexec.py -c prod -- sudo rm -rf / tmp/directory/ - bez historie - netestovatelné - pouze pro uživatele s přístupem na produkci

Release / ad hoc operativa Rundeck Zdroj: https://www.rundeck.com/open-source

Release / ad hoc operativa Rundeck 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 $?

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace 1. Bezvýpadkový rebalancing

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace 1. 2. Bezvýpadkový rebalancing Odpojení (shell cmd)

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace 1. 2. 3. Bezvýpadkový rebalancing Odpojení (shell cmd) $ cluster-deployer --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

Život serveru Ukončení Ukončení Vyklizení serveru Odpojení z aplikace Terminace 1. 2. 3. Bezvýpadkový rebalancing Odpojení (shell cmd) $ cluster-deployer --terminate --hosts test-pg01 test-maria01 -t 2 -- cluster/64.yaml

Díky. jakub.jedelsky@gmail.com https://medium.com/gooddata-developers Q?