---
title: "Kafka Simulator v1.3 — 永続性とレプリケーション"
date: 2026-08-04T00:00:00.000Z
author: "michal"
excerpt: "レプリケーションモジュールが登場。ISR の挙動、ハイウォーターマーク、acks=all と min.insync.replicas、リーダー選出、そして unclean な選出が実際に何を失わせるのか。Kafka の代名詞である保証を扱う12のシナリオ。"
---
v1.3 は [Kafka Simulator](/kafka-simulator/) に**レプリケーション**モジュールを開きます。Kafka が掲げるあらゆる永続性の保証を支える仕組みです。**12 個の新しいシナリオ**を擁するこれまでで最大のパックで、カリキュラムは **125 個中 45 個** に到達します。

## v1.3 の内容

レプリケーションは、Kafka の保証が具体的な形をとる場所であり、同時にそれが失われうる場所でもあります。

- **ISR の挙動** — フォロワーが遅れたときに同期レプリカ集合がどう縮み、追いついたときにどう広がるか。そして、その集合に属しているかどうかがすべてを決める理由。
- **ハイウォーターマーク** — コンシューマーが HW までしか読めない理由と、リーダーが書き込みを受け付け続けていても HW が進まなくなることがある理由。
- **`acks=all` と `min.insync.replicas`** — 両者の正確な関係。ブローカーが 1 台落ちてもプロデューサーが書き込める一方、2 台目で `NotEnoughReplicas` を受け取り始める理由。
- **リーダー選出** — 障害後にどのレプリカが引き継ぐのか、そしてそれが ISR から選ばれなければならない理由。
- **Unclean なリーダー選出** — 同期していないレプリカをリーダーにしたとき実際に何を失うのかを、オフセット単位で観察します。

これこそ、シミュレーター全体がそれを可視化するために作られたモジュールです。興味深い挙動は完全に*遷移*の中にあります — ブローカーが死ぬ前と後、ISR が変わる前と後 — そしてそれはまさに、ホワイトボードでは示せないものです。

## フリープレイの新機能: active/passive トポロジー

v1.3 はフリープレイのサンドボックスに、最初のマルチデータセンター構成も開放します。**active/passive** — 2 つのリージョン、一方向のミラー、そして任意のタイミングで起こせるフェイルオーバー。レプリケーションが単一クラスター内の話でなくなる様子を見るには、これが最も簡単な方法です。

DR の*カリキュラム* — MirrorMaker 2、オフセット変換、フェイルバック — はもっと後、v1.8 で登場します。ここにあるのはサンドボックスであり、早めに解放したのは意図的です。この構成は、それを説明するシナリオが届くずっと前から触ってみる価値があります。続く 3 つのパックが、それぞれトポロジーを 1 つずつ追加していきます。

## レプリケーションが要である理由

プロデューサーとコンシューマーはこれらの保証の上に成り立ち、ストレージ・トランザクション・マルチ DC はそれを拡張します。ISR が動き、ハイウォーターマークが踏みとどまる様子を一度見てしまえば、カリキュラムの残りは、すでに理解しているシステムの変奏にすぎません。

[シミュレーター](/kafka-simulator/)を開き、`RF=3` と `min.insync.replicas=2` を設定して、ブローカーを落とし始めてください。