Helyi OpenSearch lemez-watermarkok beállítása
Használd ezt az útmutatót fix szabadhely-tartalékok kiválasztásához a helyi OpenSearch 2.18 szolgáltatáshoz FullLocal vagy PartialRemote módban. A watermark olyan lemezküszöb, amely korlátozza a shard-allokációt vagy az írásokat, mielőtt a tárhely megtelik.
Az opcionális konfiguráció csak a helyi OpenSearch szolgáltatást érinti. Nem módosítja a távoli függőségeket, a jogosultságokat (grants) vagy az operációs rendszer korlátait. Bekapcsolva tartja a lemezvédelmet.
Mielőtt elkezded
Válaszd ki azt a fizikai runtime-gyökeret, amely a futó példány .env fájlját, állapotát és volume-jait birtokolja. Az alkalmazás forrás-snapshotja eltérhet ettől a gyökértől. Lásd a forrásválasztást.
Docker-hozzáféréssel a runtime hoszton keresd meg a kiválasztott futó példányt:
-
Listázd a futó OpenSearch-konténereket:
docker ps --filter label=com.docker.compose.service=opensearch --format '{{.ID}} {{.Names}}' -
Válaszd ki a tervezett példány pontos konténerét a neve és a példányazonosítója alapján. Ne válassz másik példányt.
-
Olvasd ki a konténer fizikai runtime-gyökerét:
docker inspect OPENSEARCH_CONTAINER_ID --format '{{index .Config.Labels "ecs.clone-root"}}'
Cseréld le az OPENSEARCH_CONTAINER_ID helyőrzőt a kiválasztott konténerazonosítóra minden alábbi parancsban. Az ecs.clone-root címke adja meg a fizikai gyökeret. Ha a címke hiányzik, vagy az azonosító nem egyértelmű, állj meg a konfiguráció szerkesztése előtt.
Módosítás előtt készíts biztonsági mentést a kiválasztott példány adatairól, kulcsairól és privát környezeti konfigurációjáról. Őrizd meg a meglévő volume-okat. A privát fájlokhoz használd a környezeti konfigurációs eljárást.
Válassz olyan tartalékokat, amelyek illenek a runtime tényleges tárhelyéhez. Az override hordozható konfiguráció, nem hardverfelismerés. Ha egy engedélyezett .env fájlt átmásolsz egy másik runtime-ba, ott is bekapcsolja a beállítást. A többi runtime alapértelmezés szerint kikapcsolva marad.
A tartalékok beállítása és alkalmazása
-
Nyisd meg a kiválasztott fizikai runtime-gyökér
.envfájlját. -
Állítsd be ezeket a nem érzékeny értékeket:
OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLED=trueOPENSEARCH_DISK_WATERMARK_LOW=15gbOPENSEARCH_DISK_WATERMARK_HIGH=10gbOPENSEARCH_DISK_WATERMARK_FLOOD_STAGE=5gb -
Ugyanebből a gyökérből ellenőrizd a konfigurációt:
bash devstack.sh validate -
Alkalmazd a módosítást a szokásos újraindítással:
bash restartDevServers.sh
A szokásos újraindítás megszakítja a felhasználók munkáját, és megőrzi az adatokat. Kövesd a támogatott életciklus-eljárást és a kapacitás-ellenőrzéseit. A gyors indítás a meglévő konténereket folytatja, és nem alkalmazza az új konfigurációt. Ezen .env módosítás után a szokásos újraindítást használd a célzott szolgáltatás-újraindítás helyett.
Az engedélyezett overlay true értékre állítja a statikus cluster.routing.allocation.disk.watermark.enable_for_single_data_node beállítást. Átadja a három indítási watermarkot is. A bájtalapú értékek szabad helyet jelentenek. A százalékos alapértékek foglalt helyet jelentenek, ezért a sorrendjük eltér.
A tényleges beállítások ellenőrzése
A runtime hosztról kérdezd le a kiválasztott konténert ezzel a csak olvasható paranccsal:
docker exec OPENSEARCH_CONTAINER_ID curl --fail --silent --show-error 'http://127.0.0.1:9200/_cluster/settings?include_defaults=true'
Újraindítás után ismételd meg a fenti konténerlistázást, hogy megkapd ugyanennek a példánynak az aktuális azonosítóját. Cseréld le az OPENSEARCH_CONTAINER_ID helyőrzőt erre az azonosítóra.
Ez a parancs a konténeren belüli loopback címet használja. A compose.yaml helyi szolgáltatása DISABLE_SECURITY_PLUGIN=true értéket állít be, és nem nyit host-portot. Csak ehhez a helyi szolgáltatáshoz nem kell API-hitelesítés. A távoli hitelesítés nem része ennek az útmutatónak.
A parancs a GET /_cluster/settings?include_defaults=true kérést küldi el.
Vizsgáld meg a transient, a persistent és a defaults mezőket ezekre a pontos kulcsokra:
cluster.routing.allocation.disk.watermark.low
cluster.routing.allocation.disk.watermark.high
cluster.routing.allocation.disk.watermark.flood_stage
A transient beállítások elsőbbséget élveznek a persistent beállításokkal szemben. Mindkettő elsőbbséget élvez az indítási értékekkel szemben. API-override nélkül az engedélyezett konfiguráció a 15gb, 10gb és 5gb értékeket adja, kivéve, ha más érvényes méreteket választottál.
Ha egy operátor korábban az API-n keresztül állította be ezeket a watermarkokat, módosítás előtt nézd át az értékeket. Ha vissza akarod adni a vezérlést az indítási konfigurációnak, csak a korábban beállított kulcsokat állítsd null értékre az érintett scope-okban. Az alábbi kérés csak akkor érvényes, ha mindhárom kulcsot alaphelyzetbe kell állítani mindkét scope-ban:
PUT /_cluster/settings
Content-Type: application/json
{
"persistent": {
"cluster.routing.allocation.disk.watermark.low": null,
"cluster.routing.allocation.disk.watermark.high": null,
"cluster.routing.allocation.disk.watermark.flood_stage": null
},
"transient": {
"cluster.routing.allocation.disk.watermark.low": null,
"cluster.routing.allocation.disk.watermark.high": null,
"cluster.routing.allocation.disk.watermark.flood_stage": null
}
}
Hagyd ki azokat a kulcsokat és scope-okat, amelyeket az operátor korábban nem állított be. Soha ne töröld a nem kapcsolódó cluster- vagy indexbeállításokat. Ne kapcsold ki a lemezvédelmet. Jóváhagyott visszaállítás után ismételd meg a GET kérést.
A lemezmonitor normál esetben körülbelül 30 másodpercenként ellenőrzi a szabad helyet. A flood-stage miatti csak olvasható indexblokkolás feloldódik, miután a lemezhasználat a high watermark alá csökken. Szabadhely-értékeknél az elérhető helynek meg kell haladnia a high tartalékot.
Egy monitorciklus után ismételd meg a beállítások GET parancsát. Vizsgáld meg az aktív blokkolásokat is:
docker exec OPENSEARCH_CONTAINER_ID curl --fail --silent --show-error 'http://127.0.0.1:9200/_cluster/state/blocks'
Ha nincs 10 globális blokkolás és nincs 12 indexblokkolás, akkor nincs aktív indexlétrehozási vagy flood-stage blokkolás. A persistent cluster.blocks.create_index=true beállítás újraindítás után is megmaradhat akkor is, ha nincs aktív globális blokkolás. Ne feltételezd, hogy a monitor mindig törli ezt a tárolt flaget. Az OpenSearch 2.18-ban az automatikus feloldási útvonalhoz aktív 10 globális blokkolás kell.
Ha a korábbi persistent flag megmarad, először erősítsd meg mindhárom feltételt:
- Az elérhető lemezbájtok meghaladják a tényleges high tartalékot.
- A tényleges
cluster.blocks.create_index.auto_releasebeállítás értéketrue. - A flag ismert automatikus lemezmonitor-eredetű (provenance), nem kézi operátori korlátozás.
Vizsgáld meg az elérhető bájtokat ugyanezen a kiválasztott konténeren keresztül:
docker exec OPENSEARCH_CONTAINER_ID curl --fail --silent --show-error 'http://127.0.0.1:9200/_nodes/stats/fs'
Használd az fs.total.available_in_bytes mezőt, ne csak a free_in_bytes mezőt. Ha bármelyik feltétel bizonytalan, állj meg, és diagnosztizáld az okot. Ezek után az ellenőrzések után a jogosult operátor alaphelyzetbe állíthatja csak a korábbi persistent flaget:
PUT /_cluster/settings
Content-Type: application/json
{
"persistent": {
"cluster.blocks.create_index": null
}
}
A jóváhagyott visszaállítás után ismételd meg mindkét GET kérést. Soha ne töröld a kézi vagy nem kapcsolódó blokkolásokat, az indexbeállításokat vagy a lemezvédelmet. A postafiók-indexelés elfogadása nem része ennek az útmutatónak. A szolgáltatás készenléte önmagában nem bizonyítja, hogy a postafiók-indexelés elkészült.
Az upstream szerződésekhez lásd az OpenSearch 2.18 cluster settings referenciát és a Cluster Settings API dokumentációt.
Visszatérés az alapértékekhez
- Állítsd az
OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLED=falseértéket a kiválasztott runtime-gyökér.envfájljában. - Futtasd a
bash devstack.sh validateparancsot ebből a gyökérből. - Futtasd a
bash restartDevServers.shparancsot ebből a gyökérből. - Ellenőrizd a tényleges beállításokat a fenti GET kéréssel.
A letiltott konfiguráció kihagyja az overlayt, és megtartja az eredeti OpenSearch alapértékeket: low 85%, high 90%, flood stage 95%. Ezek az alapértékek csak akkor érvényesek, ha nem maradt erősebb API-override. A rendszer figyelmen kívül hagyja a letiltott méretbeállításokat.
Konfigurációs referencia
| Változó | Consumer | Cél | Típus vagy formátum | Mikor kötelező | Alapérték | Példa | Korlátok vagy biztonság |
|---|---|---|---|---|---|---|---|
OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLED | Gyökér életciklus Compose-konfiguráció. | A helyi OpenSearch overlay kiválasztása. | Literális true vagy false. | Opcionális. | false | true | Az üres vagy más érték érvénytelen. Nem titok. |
OPENSEARCH_DISK_WATERMARK_LOW | Helyi OpenSearch overlay. | A low szabadhely-tartalék beállítása. | Pozitív egész szám kisbetűs mb vagy gb egységgel. | Bekapcsolva opcionális. | 15gb | 15gb | Nagyobbnak kell lennie a HIGH értéknél. Kikapcsolva figyelmen kívül marad. Nem titok. |
OPENSEARCH_DISK_WATERMARK_HIGH | Helyi OpenSearch overlay. | A high szabadhely-tartalék beállítása. | Pozitív egész szám kisbetűs mb vagy gb egységgel. | Bekapcsolva opcionális. | 10gb | 10gb | Nagyobbnak kell lennie a FLOOD_STAGE értéknél. Kikapcsolva figyelmen kívül marad. Nem titok. |
OPENSEARCH_DISK_WATERMARK_FLOOD_STAGE | Helyi OpenSearch overlay. | A flood-stage szabadhely-tartalék beállítása. | Pozitív egész szám kisbetűs mb vagy gb egységgel. | Bekapcsolva opcionális. | 5gb | 5gb | Nagyobbnak kell lennie nullánál. Kikapcsolva figyelmen kívül marad. Nem titok. |
Bekapcsolt állapotban a hiányzó vagy üres méretek a megadott alapértékeket használják. A méreteknek bájtra váltás után teljesíteniük kell a LOW > HIGH > FLOOD_STAGE > 0 feltételt. Minden bájtszámnak bele kell férnie egy pozitív, előjeles 64 bites egész számba, ami legfeljebb 9223372036854775807 bájt. Itt az 1mb értéke 1024² bájt, az 1gb értéke pedig 1024³ bájt.
A százalékok, arányok, tizedes törtek, nagybetűs egységek, egyéb egységek és változókifejezések érvénytelen méretbemenetek. Az életciklus elutasítja az érvénytelen engedélyezett beállításokat, mielőtt a Compose módosítaná az erőforrásokat. Az engedélyező kapcsoló a runtime-gyökér .env fájljából származik. A csak shellben megadott kapcsoló nem engedélyezi az overlayt.