Na zabezpečenie ochrany pred stratou údajov má Elasticsearch rôzne funkcie, ktoré vám umožňujú zabezpečiť dostupnosť údajov, a to aj v prípadoch zlyhania údajov.
Medzi spôsoby, ktoré vám server Elasticsearch poskytuje, aby vám poskytol dostupnosť údajov, patria:
- Replikácie naprieč klastrami, funkcia, ktorá umožňuje replikovať údaje do sady klastrov sledovateľov; sledovací klaster je pohotovostný klaster používaný v prípade zlyhania z hlavného klastra.
- Ďalšia metóda, ktorú Elasticsearch používa na prevenciu údajov pomocou zálohovanie - nazývajú sa tiež snímky klastrov. Ak to bude potrebné, môžete tieto snímky použiť na obnovenie údajov v úplne novom klastri.
Tento tutoriál vám ukáže, ako vytvoriť snímky klastra, ktoré vám pomôžu byť pripravení, ak dôjde k nezvratnej udalosti zlyhania údajov.
Začnime.
Čo je Elasticsearch Snapshot?
Ako už bolo spomenuté, elastická snímka je záložnou kópiou spusteného klastra Elasticsearch. Táto snímka môže byť celého klastra alebo konkrétnych indexov a dátových tokov v konkrétnom klastri.
Ako sa čoskoro dozviete, zásuvný modul úložiska spravuje snímky Elasticsearch. Tieto snímky sa dajú uložiť na rôznych miestach úložiska definovaných doplnkom. Patria sem miestne systémy a vzdialené systémy, ako napríklad GCP Storage, Amazon EC2, Microsoft Azure a mnoho ďalších.
Ako vytvoriť úložisko snímok Elasticsearch
Predtým, ako sa ponoríme do vytvárania snímok Elasticsearch, musíme vytvoriť úložisko snímok, pretože veľa služieb Elasticsearch používa na vykonávanie týchto úloh rozhranie Snapshot API.
Niektoré z úloh spracovávaných rozhraním Snapshot API sú:
- Vložte úložisko snímok
- Skontrolujte úložisko snímok
- Získajte archív snímok
- Odstrániť úložisko snímok
- Vyčistiť úložisko snímok
- Vytvorte snímku
- Clone snapshot
- Získajte snímku
- Získajte stav snímky
- Obnoviť snímku
- Odstrániť snímku
Na vytvorenie úložiska snímok používame koncový bod API _snapshot nasledovaný názvom, ktorý chceme priradiť úložisku snímok. Zvážte nižšie uvedenú požiadavku, ktorá vytvára úložisko s názvom backup_repo
PUT / _snapshot / backup_repo"type": "fs",
"nastavenie":
"location": "/ domov / root / zálohy",
"stlačiť": pravda
Tu je príkaz cURL pre vyššie uvedenú požiadavku:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ home / root / backups "," compress ": true 'Ak chcete odovzdať cestu k úložisku snímok, musíte do cesty najskôr pridať cestu systému alebo nadradený adresár.repo záznam v elasticsearch.yml
Cesta.záznam repo by mal vyzerať podobne ako:
cesta.repo: [“/ home / root / backups”]Konfiguračný súbor Elasticsearch nájdete v priečinku / etc / elasticsearch / elasticsearch.yml
POZNÁMKA: Po pridaní cesta.repo, možno budete musieť reštartovať klastre Elasticsearch. Ďalej sú podporované hodnoty pre cestu.repo sa môže veľmi líšiť v závislosti od platformy, na ktorej je spustený Elasticsearch.
Ako zobraziť úložisko snímok
Ak chcete potvrdiť úspešné vytvorenie úložiska snímok, použite požiadavku GET s koncovým bodom _snapshot ako:
ZÍSKAŤ / _snapshot / backup_repoMôžete tiež použiť nasledujúci príkaz cURL:
curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"Mali by sa zobraziť informácie o úložisku záloh, napríklad:
"backup_repo":
"type": "fs",
"nastavenie" :
"compress": "true",
"location": "" "/ domov / root / zálohy" ""
Ak máte viac ako jedno úložisko snímok a nepamätáte si ich názov, môžete vynechať názov úložiska a zavolať koncový bod _snapshot a uviesť všetky existujúce úložiská.
GET / _snapshot alebo curl curl -XGET http: // localhost: 9200 / _snapshot
Ako vytvoriť snímku elasticsearch
Vytvorenie snímky Elasticsearch pre konkrétne úložisko snímok sa vybavuje rozhraním create snapshot API. Rozhranie API vyžaduje názov úložiska snímok a názov snímky.
POZNÁMKA: Jeden archív snímok môže mať viac ako jednu snímku rovnakých klastrov, pokiaľ majú jedinečné identity / názvy.
Zvážte nasledujúcu požiadavku na pridanie snímky nazvanej snapshot_2021 do úložiska backup_repo.
PUT / _snapshot / backup_repo / snapshot_2021Ak chcete použiť cURL, použite príkaz:
curl -XPUT “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021”Príkaz by mal vrátiť odpoveď z Elasticsearch s 200 OK a prijatý: true
„prijatý“: pravda
Pretože neurčuje, ktoré dátové toky a indexy chcete zálohovať, volanie vyššie uvedenej požiadavky zálohuje všetky údaje a stav klastra. Ak chcete určiť, ktoré dátové toky a indexy sa majú zálohovať, pridajte ich do tela žiadosti.
Zvážte nasledujúcu požiadavku, ktorá zálohuje .index kibana (systémový index) a určuje, ktorý používateľ autorizoval snímku, a dôvod.
PUT / _snapshot / backup_repo / snapshot_2"indexy": ".kibana ",
"ignore_unavailable": pravda,
"include_global_state": true,
"metadáta":
"taken_by": "elasticadmin",
“Taken_because”: “Denné zálohovanie”
Príkaz cURL je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Content-Type: application / json' -d '"indexy": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Daily Backup " 'Ignore_unavailable nastavuje booleovský stav, ktorý vracia chybu, ak chýbajú alebo sú zatvorené akékoľvek dátové toky alebo indexy uvedené v snímke.
Parameter include_global_state uloží aktuálny stav klastra, ak je pravdivý. Niektoré z uložených informácií o klastri zahŕňajú:
- Trvalé nastavenia klastra
- Šablóny indexov
- Staré šablóny indexov
- Prijímajte potrubia
- Politiky životného cyklu ILM
POZNÁMKA: Môžete zadať viac ako jeden index oddelený čiarkami.
Bežným argumentom používaným v koncovom bode _snapshot je wait_for_completion, logická hodnota definujúca, či (true) alebo nie (false) by sa žiadosť mala vrátiť okamžite po inicializácii snímky (predvolená) alebo počkať na dokončenie snímky.
Napríklad:
PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = true"indexy": ".kibana ",
"ignore_unavailable": pravda,
"include_global_state": false,
"metadáta":
"taken_by": "elasticadmin",
“Taken_because”: “Týždenné zálohovanie”
Príkaz cURL je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Typ obsahu: application / json' -d '" indexy ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Týždenné zálohovanie " 'Keď máte parameter wait_for_completion nastavený na true, dáte výstup podobný tomu, ktorý je uvedený nižšie:
"snapshot":
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"verzia": "7.10.2 ",
"indexy": [
„.kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadáta":
"taken_by": "elasticadmin",
“Taken_because”: “Týždenné zálohovanie”
,
"state": "ÚSPECH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"nepodarky": [],
"shards":
"celkom": 1,
"failed": 0,
„úspešné“: 1
Ako zobraziť snímky
Rozhranie API GET snapshot spracováva funkčnosť snímok zobrazenia.
Všetko, čo potrebujete na odoslanie žiadosti, je úložisko snímok a názov snímky, ktorú chcete zobraziť.
Snímka by mala odpovedať podrobnosťami o určenej snímke. Medzi tieto podrobnosti patria:
- Počiatočné a konečné hodnoty času
- Verzia aplikácie Elasticsearch, ktorá vytvorila snímku
- Zoznam zahrnutých indexov
- Aktuálny stav snímky
- Zoznam zlyhaní, ktoré sa vyskytli počas snímky
Ak chcete napríklad zobraziť podrobnosti o snímke_3 vytvorenej vyššie, použite žiadosť uvedenú nižšie:
ZÍSKAŤ / _snapshot / backup_repo / snapshot_3Na použitie cURL použite nasledujúci príkaz:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3”
Žiadosť by mala vrátiť odpoveď s podrobnosťami snímky ako:
„snímky“: [
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"verzia": "7.10.2 ",
"indexy": [
„.kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadáta":
"taken_by": "elasticadmin",
“Taken_because”: “Týždenné zálohovanie”
,
"state": "ÚSPECH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"nepodarky": [],
"shards":
"celkom": 1,
"failed": 0,
„úspešný“: 1
]
Môžete tiež prispôsobiť telo žiadosti, aby ste získali konkrétne podrobnosti o snímke. Nateraz sa však tým nebudeme zaoberať.
Povedzme, že chcete zobraziť informácie o všetkých snímkach v konkrétnom úložisku snímok; v takom prípade môžete v žiadosti odovzdať zástupný znak hviezdičky ako:
GET / _snapshot / backup_repo / *Príkaz cURL je:
curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / *”Odpoveďou je podrobný výpis všetkých snímok v danom úložisku ako:
"snímky": [
"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"verzia": "7.10.2 ",
"indexy": [
"moj_index",
„single_index_with_body“,
„my_index_2“,
„single_index“,
„.kibana_1 ",
„Test“
],
"data_streams": [],
"include_global_state": true,
"state": "ÚSPECH",
"start_time": "2021-01-19T13: 28: 48.172Z ",
"start_time_in_millis": 1611062928172,
"end_time": "2021-01-19T13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
"duration_in_millis": 2659,
"nepodarky": [],
"shards":
"celkom": 7,
"failed": 0,
„úspešné“: 7
,
"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"verzia": "7.10.2 ",
"indexy": [
„.kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadáta":
"taken_by": "elasticadmin",
"taken_because": "Denné zálohovanie"
,
"state": "ÚSPECH",
"start_time": "2021-01-19T13: 33: 34.482Z ",
"start_time_in_millis": 1611063214482,
"end_time": "2021-01-19T13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
"duration_in_millis": 1439,
"nepodarky": [],
"shards":
"celkom": 1,
"failed": 0,
„úspešné“: 1
,
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"verzia": "7.10.2 ",
"indexy": [
„.kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadáta":
"taken_by": "elasticadmin",
“Taken_because”: “Týždenné zálohovanie”
,
"state": "ÚSPECH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"nepodarky": [],
"shards":
"celkom": 1,
"failed": 0,
„úspešné“: 1
]
Zástupné znaky sú veľmi užitočné na filtrovanie konkrétnych informácií o snímkach.
Ako odstrániť snímku
Odstránenie snímky je veľmi jednoduché: všetko, čo musíte urobiť, je použiť požiadavku na ODSTRÁNENIE ako:
DELETE / _snapshot / backup_repo / snapshot_2021 /Príkaz cURL je:
curl -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”Je potrebné uznať odpoveď: pravda
„Potvrdené“: pravda
Ak snímka neexistuje, dostanete stavový kód 404 a chýbajúca snímka ako:
"chyba" :
"príčina" : [
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] chýba"
],
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] chýba"
,
"status": 404
Záver
V tejto príručke sme diskutovali o tom, ako vytvoriť snímky Elasticsearch pomocou Snapshot API. To, čo ste sa naučili, by malo stačiť na to, aby ste mohli vytvoriť úložisko snímok, prezerať úložiská snímok, vytvárať, zobrazovať a mazať snímky. Aj keď existujú prispôsobenia, ktoré môžete vykonať pomocou API, znalosti v tejto príručke by vám mali stačiť, aby ste mohli začať.
Ďakujem za čítanie.