Nouzová nastavení clusteru Elasticsearch¶
Když je Elasticsearch degradovaný, LogMan.io Depositor může pozastavit (throttle) příjem událostí, dokud se nezlepší stav clusteru. V nouzi můžete kontroly uvolnit, aby Depositor pokračoval v zápisu, pokud přeživší uzly stále přijímají data.
Používejte jen při dočasném výpadku. Po obnovení clusteru vraťte výchozí hodnoty.
Jak Depositor rozhoduje o throttlingu¶
Každou minutu Depositor čte stav clusteru Elasticsearch. Vždy pokračuje, když stav odpovídá cluster_status_unthrottle (výchozí green).
Jinak throttluje, pokud platí některá z podmínek:
- Stav clusteru odpovídá
cluster_status_throttle(výchozíyellow). active_shards_percent_as_numberje podactive_shards_percent_throttle(výchozí50).- Příliš mnoho shardů ve stavu jiném než
STARTEDna uzlech, jejichž název obsahujehot_node_tag(výchozíhot), nadunassigned_shards_tolerance(výchozí32). Kontrola se přeskočí, když jehot_node_tagnonenebo prázdné.
Jeden nedostupný hot URL sám o sobě celý Depositor nezastaví: Depositor vyzkouší každý nakonfigurovaný endpoint url / url_hot, než cluster považuje za offline.
Kdy použít nouzová nastavení¶
Typické situace:
- Cluster je
yellow(chybí repliky, primární shardy běží) a chcete pokračovat v příjmu bez čekání nagreen. - Jeden site více-site clusteru Elasticsearch je down, celkový stav je
red, ale přeživší hot uzly stále ukládají události.
Rizika při stavu clusteru red
Při red mohou chybět některé primární shardy. Zápisy do těch indexů selžou i bez throttlingu Depositoru. Používejte jen pokud přeživší site má zapisovatelné primární shardy pro streamy, které potřebujete. Co nejdříve opravte alokaci a obnovte výpadkový site.
Zápisy, když primární shard je na výpadkovém site¶
Elasticsearch potřebuje aktivní primární shard pro zápis. Pokud primár je jen na výpadkovém site (bez repliky na přeživším site), indexování do indexu selže i bez throttlingu Depositoru.
Typická odpověď Elasticsearch:
- HTTP
503(někdy500) sunavailable_shards_exception/UnavailableShardsException - Nebo chyba bulk položky typu
unavailable_shards_exception
Stav clusteru je red, protože alespoň jeden primár není dostupný. Chybí-li jen repliky, stav je yellow a zápisy na zdravé primární shardy mohou uspět (s wait_for_active_shards, výchozí 1).
Co dělá master dál:
- Existuje replika na živém uzlu — master ji povýší na primár. Index směřuje k
yellowa zápisy pokračují. - Replika neexistuje — index zůstane
red, dokud nevrátí site nebo nezasáhne administrátor.
Depositor to považuje za opakovatelné
Tyto chyby nejdou do others. Depositor je opakuje ve stejné pipeline:
- Po dokumentu:
unavailable_shards_exceptionje ve výchozímretry_errors(scluster_block_exceptionanode_not_connected_exception). - Celý bulk HTTP: výchozí
retry_http_statuszahrnuje500,502a503.
Ve výchozím nastavení plný bulk HTTP 503 také throttluje příjem (throttle_http_status=503). Pauza se zruší při další kontrole stavu clusteru (cca každých 60 s), když už neplatí podmínky throttlingu. Pro opakování 503 bez pauzy pipeline nastavte throttle_http_status na prázdnou hodnotu (viz nouzový příklad). Opakování stále používá retry_http_status.
Události zůstávají v Kafka / retry smyčce pipeline, dokud není primár znovu dostupný. Chyby mapování nebo payloadu jdou do others jako obvykle.
Viz také Depositor Configuration (retry_errors, retry_http_status, throttle_http_status) a Depositor Troubleshooting.
Automatické opakování alokace při red
Nezávisle na nouzovém throttlingu, při red s nepřiřazenými shardy Depositor periodicky volá POST /_cluster/reroute?retry_failed=true (výchozí každých 30 minut; cluster_reroute_retry_failed=yes). Vyčistí vyčerpané pokusy alokace. Vypněte cluster_reroute_retry_failed=no.
Pokračovat v zápisu při výpadku jednoho site (cluster red)¶
Výchozí Depositor zastaví příjem při yellow (a typicky i red přes procento aktivních shardů / hot tier). Po výpadku jednoho site je to běžný stav, i když druhý site má kapacitu.
Pro pokračování depositu vypněte throttling podle stavu (cluster_status_throttle: none), snižte práh procenta aktivních shardů a uvolněte kontrolu hot tier. Preferované: hot_node_tag: none. Nebo ponechte hot_node_tag: hot a zvyšte unassigned_shards_tolerance. Volitelně vyprázdněte throttle_http_status, aby bulk HTTP 503 opakoval bez pauzy pipeline.
Konfigurace v modelu¶
Upravte /Site/model.yaml v Library (viz Configure ASAB services from the model) a aplikujte model:
define:
type: rc/model
services:
lmio-depositor:
instances:
- lma1
- lma2
asab:
config:
"connection:ESConnection":
cluster_status_throttle: none
cluster_status_unthrottle: yellow
active_shards_percent_throttle: 25
hot_node_tag: none
throttle_http_status: ""
# Alternative to hot_node_tag: none (keep default hot_node_tag=hot):
# unassigned_shards_tolerance: 100000
Nahraďte lma1 / lma2 uzly instancí Depositor. Po Apply Depositor načte vygenerovanou konfiguraci.
Ekvivalentní INI (reference)¶
Blok modelu výše odpovídá této INI sekci v konfiguraci Depositor:
[connection:ESConnection]
cluster_status_throttle=none
cluster_status_unthrottle=yellow
active_shards_percent_throttle=25
hot_node_tag=none
throttle_http_status=
; Alternative to hot_node_tag=none (keep default hot_node_tag=hot):
; unassigned_shards_tolerance=100000
Význam voleb v tomto scénáři¶
| Option | Suggested emergency value | Why |
|---|---|---|
cluster_status_throttle |
none |
Nepozastavovat jen kvůli celkovému stavu red. |
cluster_status_unthrottle |
yellow |
yellow stačí pro zrušení throttlingu bez čekání na green. |
active_shards_percent_throttle |
25 (dle topologie) |
Výpadek site často sníží procento aktivních shardů pod výchozích 50. |
hot_node_tag |
none |
Preferované: přeskočit kontrolu hot tier _cat/shards. |
unassigned_shards_tolerance |
velké číslo (např. 100000) |
Alternativa při hot_node_tag: hot. Nepoužito při hot_node_tag: none. |
throttle_http_status |
prázdné ("" / throttle_http_status=) |
Nepozastavovat pipeline na bulk HTTP 503. Opakování přes retry_http_status. |
active_shards_percent_throttle laděte podle replik. Často začněte zhruba 100 / (počet replik + 1). Sledujte logy Depositoru Throttling event ingestion because Elasticsearch cluster health is degraded a pole reasons.
Mírnější případ: pokračovat na yellow¶
Pokud je cluster jen yellow a nechcete povolit zápisy při red, nastavte jen práh unthrottle:
services:
lmio-depositor:
instances:
- lma1
asab:
config:
"connection:ESConnection":
cluster_status_unthrottle: yellow
Výchozí nastavení stále throttluje na red a obnoví příjem od yellow (místo čekání na green).
Reference parametrů¶
cluster_status_throttle¶
Stav clusteru, který způsobí pozastavení příjmu (pokud stav není cluster_status_unthrottle).
- Výchozí:
yellow - Možnosti:
red,yellow,none
cluster_status_unthrottle¶
Pokud aktuální stav odpovídá této hodnotě, Depositor ne throttluje (ostatní kontroly se pro tento tick přeskočí).
- Výchozí:
green - Možnosti:
red,yellow,green
active_shards_percent_throttle¶
Minimum active_shards_percent_as_number ze stavu clusteru. Pod touto hodnotou Depositor throttluje.
- Výchozí:
50
hot_node_tag¶
Podřetězec v názvech uzlů v _cat/shards při počítání hot tier shardů ≠ STARTED.
- Výchozí:
hot nonenebo prázdné vypne kontrolu. Pak nemá efektunassigned_shards_tolerance.
unassigned_shards_tolerance¶
Kolik shardů ≠ STARTED na uzlech s hot_node_tag je povoleno, než Depositor považuje hot tier za nepřipravený.
- Výchozí:
32 - Nepoužito při
hot_node_tagnonenebo prázdném.
throttle_http_status¶
HTTP kódy celého bulk selhání (oddělené ;), které pozastaví příjem do další kontroly stavu clusteru.
- Výchozí:
503 - Prázdné vypne pauzu na tyto kódy. Opakování stále podle
retry_http_status(výchozí500;502;503).
Návrat k výchozím hodnotám¶
Po obnově clusteru (green) odstraňte nouzové přepsání z lmio-depositor.asab.config v modelu a znovu Apply — Depositor se vrátí k výchozím (cluster_status_throttle=yellow, cluster_status_unthrottle=green, active_shards_percent_throttle=50, hot_node_tag=hot, throttle_http_status=503).