Izanami менән хаос һынауҙары
Izanami - Iroha өҫкө ағымындағы эш майҙанындағы хаос селтәре оркестраторы. Ул бер тапҡыр ҡулланылған урындағы Iroha кластерын башлай, конфигурацияланған эш йөкләмәһен тапшыра һәм һайланған тиҫтерҙәргә хаталарҙы инжекциялай, шуға күрә операторҙар контролгә алынған уңышһыҙлыҡ ваҡытында селтәрҙең алға китешен тикшерә ала.
Izanami-ны производствоға тиклемге сыҙамлыҡ тикшереүҙәр, регрессия воспроизведениеһы һәм консенсус көйләү өсөн ҡулланығыҙ. Уны етештереү селтәренә йүнәлтмәгеҙ: инструмент ул башланған тиҫтерҙәргә эйә булыу өсөн тәғәйенләнгән, шул иҫәптән тиҫтерҙәрҙең яңынан старт итеүе, һаҡлау сүплектәре, яһалма пакет юғалтыу һәм локаль CPU йәки диск баҫымы.
Шарттар
Izanami-ны Iroha сығанаҡ репозиторийынан түгел, ә был документтар репозиторияһынан эшләтергә:
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanamiБинарға селтәрле тиңдәштәре булдырыу һәм улар менән идара итеүгә асыҡтан-асыҡ рөхсәт бирергә кәрәк. TUI булмаған һәр йүгереү өсөн --allow-net үтә, йәки TUI системаһында allow_net ҡеүәтенә эйә булыу.
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120sИнтерактив хәрәкәт конфигурацияһы өсөн:
cargo run -p izanami -- --tui --allow-netIzanami TUI һәм CLI параметрҙарын ҡулланыусы конфигурацияһы каталогы аҫтында һаҡлай, шуға күрә элекке профилде яңынан файҙаланыр алдынан күрһәтелгән параметрҙарҙы ҡарағыҙ.
Башланғыс күрһәткес
Ауыр хаталар өҫтәлмәҫтән алда бер ҡабатланырлыҡ башланғыс күрһәткес менән башларға кәрәк:
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 | Яуызлыҡ юлы менән тәьмин итеү | Маҡсатлы рәүештә ялған рецепттарҙы үҙ эсенә ала |
Тәүҙә тотороҡло профилде ҡулланығыҙ:
cargo run -p izanami -- --allow-net --workload-profile stable --seed 42Төп һыҙығы инде аңлайышҡас, хаос профиленә күсеү:
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42Контрактҡа урынлаштырыу өсөн рецепттар, әгәр быны асыҡтан-асыҡ рөхсәт ителмәһә, тотороҡло этапта эшләмәй:
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 | Урындағы һаҡлау баҫымы |
Пакеттарҙы юғалтыу өсөн генә:
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, хәтер, диск һәм селтәрҙең туйыныусы хост башҡарыусы тиңдәштәре
Валидация-оҙайлылыҡ анализы өсөн, төп әйләнештәге дебог журналдарын булдырыу:
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 - Яуызлыҡ тәҙрәһе ябылғандан һуң, сираттар дауам итә
- кире ҡаҡҡан йәки ваҡытлыса тамамланған транзакциялар һайлап алынған йөкләмә менән аңлатылмай
- Бер-береһе менән ҡабаттан башлау, һаҡлауҙы һүтеү йәки пакетты юғалтыу өсөн ҡулдан таҙартыу талап ителә.
Яуызлыҡ булғандан һуң ҡабаттан шул уҡ орлоҡ менән һәм бер аҙ яңылышлыҡ төрө менән эшләгеҙ, был эш йөкләмәһен һәм ваҡытты ҡабатландырыуға мөмкинлек бирә.