Skip to main content

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:

  1. Listázd a futó OpenSearch-konténereket:

    docker ps --filter label=com.docker.compose.service=opensearch --format '{{.ID}} {{.Names}}'
  2. 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.

  3. 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​

  1. Nyisd meg a kiválasztott fizikai runtime-gyökér .env fájlját.

  2. Állítsd be ezeket a nem érzékeny értékeket:

    OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLED=true
    OPENSEARCH_DISK_WATERMARK_LOW=15gb
    OPENSEARCH_DISK_WATERMARK_HIGH=10gb
    OPENSEARCH_DISK_WATERMARK_FLOOD_STAGE=5gb
  3. Ugyanebből a gyökérből ellenőrizd a konfigurációt:

    bash devstack.sh validate
  4. 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_release beállítás értéke true.
  • 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​

  1. Állítsd az OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLED=false értéket a kiválasztott runtime-gyökér .env fájljában.
  2. Futtasd a bash devstack.sh validate parancsot ebből a gyökérből.
  3. Futtasd a bash restartDevServers.sh parancsot ebből a gyökérből.
  4. 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óConsumerCélTípus vagy formátumMikor kötelezőAlapértékPéldaKorlátok vagy biztonság
OPENSEARCH_DISK_WATERMARK_OVERRIDE_ENABLEDGyökér életciklus Compose-konfiguráció.A helyi OpenSearch overlay kiválasztása.Literális true vagy false.Opcionális.falsetrueAz üres vagy más érték érvénytelen. Nem titok.
OPENSEARCH_DISK_WATERMARK_LOWHelyi 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.15gb15gbNagyobbnak kell lennie a HIGH értéknél. Kikapcsolva figyelmen kívül marad. Nem titok.
OPENSEARCH_DISK_WATERMARK_HIGHHelyi 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.10gb10gbNagyobbnak kell lennie a FLOOD_STAGE értéknél. Kikapcsolva figyelmen kívül marad. Nem titok.
OPENSEARCH_DISK_WATERMARK_FLOOD_STAGEHelyi 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.5gb5gbNagyobbnak 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.