Skip to content

Izanami менән хаос һынауҙары

Izanami - Iroha өҫкө ағымындағы эш майҙанындағы хаос селтәре оркестраторы. Ул бер тапҡыр ҡулланылған урындағы Iroha кластерын башлай, конфигурацияланған эш йөкләмәһен тапшыра һәм һайланған тиҫтерҙәргә хаталарҙы инжекциялай, шуға күрә операторҙар контролгә алынған уңышһыҙлыҡ ваҡытында селтәрҙең алға китешен тикшерә ала.

Izanami-ны производствоға тиклемге сыҙамлыҡ тикшереүҙәр, регрессия воспроизведениеһы һәм консенсус көйләү өсөн ҡулланығыҙ. Уны етештереү селтәренә йүнәлтмәгеҙ: инструмент ул башланған тиҫтерҙәргә эйә булыу өсөн тәғәйенләнгән, шул иҫәптән тиҫтерҙәрҙең яңынан старт итеүе, һаҡлау сүплектәре, яһалма пакет юғалтыу һәм локаль CPU йәки диск баҫымы.

Шарттар

Izanami-ны Iroha сығанаҡ репозиторийынан түгел, ә был документтар репозиторияһынан эшләтергә:

bash
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanami

Бинарға селтәрле тиңдәштәре булдырыу һәм улар менән идара итеүгә асыҡтан-асыҡ рөхсәт бирергә кәрәк. TUI булмаған һәр йүгереү өсөн --allow-net үтә, йәки TUI системаһында allow_net ҡеүәтенә эйә булыу.

bash
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120s

Интерактив хәрәкәт конфигурацияһы өсөн:

bash
cargo run -p izanami -- --tui --allow-net

Izanami TUI һәм CLI параметрҙарын ҡулланыусы конфигурацияһы каталогы аҫтында һаҡлай, шуға күрә элекке профилде яңынан файҙаланыр алдынан күрһәтелгән параметрҙарҙы ҡарағыҙ.

Башланғыс күрһәткес

Ауыр хаталар өҫтәлмәҫтән алда бер ҡабатланырлыҡ башланғыс күрһәткес менән башларға кәрәк:

bash
cargo run -p izanami -- \
  --allow-net \
  --peers 4 \
  --faulty 1 \
  --duration 5m \
  --target-blocks 100 \
  --progress-interval 15s \
  --progress-timeout 120s \
  --latency-p95-threshold 2s \
  --tps 15 \
  --max-inflight 32 \
  --submitters 1 \
  --seed 42

Был йүгереү бары тик кластер һоралған блок маҡсатына еткән, ваҡыт үтеү ваҡыты эсендә алға китеш яһаған һәм факультатив p95 блок интервале сигенән түбән ҡалған осраҡта ғына уңышлы була.

Команданы, орлоҡто, Iroha commit, peer count, faulty-peer count, workload profile, target TPS һәм latency thresholdты яҙҙырығыҙ. Был ҡиммәттәрһеҙ башҡа оператор шул уҡ уңышһыҙлыҡ моделен ҡабатлай алмай.

Эш йөкләмәһе профилдәре

Izanami-ның ике эш йөкләмәһе профиле бар:

ПрофильУны өсөн ҡулланырғаБелешмәләр
stableОҙайлы һыу һибеүҙәр һәм ҡабатланғыс һөҙөмтәлелек тикшереүҙәреҠулланыуға хәүефһеҙ рецепттарҙы хуплай
chaosЯуызлыҡ юлы менән тәьмин итеүМаҡсатлы рәүештә ялған рецепттарҙы үҙ эсенә ала

Тәүҙә тотороҡло профилде ҡулланығыҙ:

bash
cargo run -p izanami -- --allow-net --workload-profile stable --seed 42

Төп һыҙығы инде аңлайышҡас, хаос профиленә күсеү:

bash
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42

Контрактҡа урынлаштырыу өсөн рецепттар, әгәр быны асыҡтан-асыҡ рөхсәт ителмәһә, тотороҡло этапта эшләмәй:

bash
cargo run -p izanami -- \
  --allow-net \
  --workload-profile stable \
  --allow-contract-deploy-in-stable

--nexus ҡулланыу, әгәр йүгереү өҫтәмә эш майҙанынан индерелгән SORA Nexus ҡалыптарҙы ҡулланырға тейеш.

Хаталар менән идара итеү

Ҡасан --faulty 0-нан ҙурыраҡ булһа, бер генә хата сценарийы ла булдырылған булырға тейеш. Файл алмаштырғанда ҡағиҙә буйынса булдырылған, һәм boolean флагтар менән һүндерелә ала =false.

ГонаһCLI флагУл нимә эшләй ?
Авария һәм яңынан стартлау--fault-enable-crash-restartТиҫтерҙәр процесын юғалтыу һәм тергеҙеү
Һаҡлауҙы һүндереп , ҡабаттан ҡуҙғатыу--fault-enable-wipe-storageЮғалған урындағы дәүләттән һауыҡтырыу
Яуыз транзакция спамы--fault-enable-spam-invalid-transactionsҠабул итеү һәм кире ҡағыу юлдары
Ауырыу ваҡыты--fault-enable-network-latencyТәкәббер һөйләшеүҙәр һәм һуңғараҡ килеү хәбәрҙәре
Сеть бүлеү--fault-enable-network-partitionВаҡытлыса ышаныслы тиңдәрҙән айырылып тороу
P2P Пакет юғалтыу--fault-enable-network-packet-lossҠулланыу системаһы трафигы кәмегән
CPU стресс--fault-enable-cpu-stressУрындағы валидациялау һәм графиклау баҫымы
Дисктың тығыҙлығы--fault-enable-disk-saturationУрындағы һаҡлау баҫымы

Пакеттарҙы юғалтыу өсөн генә:

bash
cargo run -p izanami -- \
  --allow-net \
  --peers 20 \
  --faulty 5 \
  --duration 800s \
  --fault-window-start 133s \
  --fault-window-end 266s \
  --tps 200 \
  --submitters 20 \
  --max-inflight 512 \
  --fault-enable-crash-restart=false \
  --fault-enable-wipe-storage=false \
  --fault-enable-spam-invalid-transactions=false \
  --fault-enable-network-latency=false \
  --fault-enable-network-partition=false \
  --fault-enable-network-packet-loss=true \
  --fault-enable-cpu-stress=false \
  --fault-enable-disk-saturation=false \
  --fault-network-packet-loss-percent 75 \
  --seed 42

--fault-window-start һәм --fault-window-end ҡулланып, инжекцияланған уңышһыҙлыҡҡа тиклем һәм унан һуң контрольле стационар торошо һаҡлай. Был яңылышлыҡтың һөҙөмтәһенән старт тауышын айырыуҙы еңеләйтә.

Сценарий формалары

Үрге ағымы Izanami каталогы CLI профилдәренә блокчейн аралашыу уңышһыҙлығы формаларын карталар. Һеҙ уларҙы шул уҡ флагтар менән өлгөләй алаһығыҙ:

СценарийТиптик форма
Маҡсатлы йөкләмә--faulty 0, юғары --tps, бер тапшырыусы, юғары --max-inflight
Ваҡытлы уңышһыҙлыҡСикләү / ҡабаттан башлауҙы сикләнгән хаталы тәҙрә эсендә генә ҡулайлаштырыу
Пакет юғалтыуПакеттарҙы юғалтыу ғына рөхсәт ителә, ғәҙәттә default 75% юғалтыу ставкаһы менән
Туҡтау һәм һауыҡтырыуcrash / restart менән ҙур хаталы- peer популяцияһы ҡулланыу
Лидерҙар изоляцияһыТик селтәр бүлеү йәки пакеттар юғалтыу хаталары менән тап бер хаталы тиңдәше ҡулланыу; Izanami Sumeragi лидер телеметрияһы буйынса

Бер үк ваҡытта бер үҙгәреүсәнде тоторға кәрәк. Әгәр һеҙ бер үк ваҡытта тиҫтерҙәр һанын, эш йөкләмәһе профилен, хаталар тәҙрәһен һәм TPS үҙгәрһәгеҙ, һөҙөмтәне тәржемә итеү ҡыйын буласаҡ.

Нимә күрергә кәрәк?

Йүгереү ваҡытында һөҙөмтәлелекте раҫлау өсөн ҡулланылған сигналдарҙы күҙәтегеҙ:

  • һәр йүгереүсе менән бергә блок бейеклеге буйынса алға китеш
  • тапшырылған, ҡабул ителгән, кире ҡағылған һәм ваҡытлыса тамамланған операциялар
  • сират тәрәнлеге, сират тығыҙлығы һәм һуңғы нөктәләрҙең кире баҫымы
  • ҡарау үҙгәрештәрен, тергеҙеү юлдарын, юғалған блоктарҙы һәм юғалған кворум сертификаттарын
  • RBC артта ҡалыу, сираттағы ултырыштар һәм консенсус хәрәкәтенең кәмеүе йәки һуңланыуы
  • CPU, хәтер, диск һәм селтәрҙең туйыныусы хост башҡарыусы тиңдәштәре

Валидация-оҙайлылыҡ анализы өсөн, төп әйләнештәге дебог журналдарын булдырыу:

bash
RUST_LOG=iroha_core::sumeragi::main_loop=debug \
  cargo run -p izanami -- --allow-net --seed 42

Һәр блок block validation timings менән stateless_ms, execution_ms һәм total_ms сығара. Был ваҡыттарҙы p95 блогы интервалдары, күреүҙе үҙгәртеү счетчиктары һәм сираттағы баҫым менән сағыштырып ҡарағыҙ.

Һөҙөмтәләрҙе аңлатыу

Барлыҡ һайлап алынған тиҫтерҙәр блоктарҙы йөкмәтеүен дауам иткәндә, артта ҡалыуҙар сикләнмәйенсә үҫмәгәндә һәм конфигурацияланған тәҙрә тамамланғандан һуң хаталар яңы тергеҙеү эшмәкәрлеген тыуҙырыуҙы туҡтатҡанда йүгереүҙе сәләмәт тип иҫәпләгеҙ.

Йүгереүҙе уңышһыҙлыҡ тип һанарға кәрәк:

  • --progress-timeout тиклем оҙайлы блок прогресс эстафетаһы
  • Тиҫтерҙәрҙең бейеклектәре айырыла һәм ҡабаттан бер-береһенә ҡушылмай
  • p95 задержкаһы --latency-p95-threshold
  • Яуызлыҡ тәҙрәһе ябылғандан һуң, сираттар дауам итә
  • кире ҡаҡҡан йәки ваҡытлыса тамамланған транзакциялар һайлап алынған йөкләмә менән аңлатылмай
  • Бер-береһе менән ҡабаттан башлау, һаҡлауҙы һүтеү йәки пакетты юғалтыу өсөн ҡулдан таҙартыу талап ителә.

Яуызлыҡ булғандан һуң ҡабаттан шул уҡ орлоҡ менән һәм бер аҙ яңылышлыҡ төрө менән эшләгеҙ, был эш йөкләмәһен һәм ваҡытты ҡабатландырыуға мөмкинлек бирә.