conduktor.io ↗

ISR Alignment with Replication Factor

min.insync.replicas must equal replicationFactor − 1.

Rationale

Common silent misconfig: RF=3 with min.insync.replicas=1 accepts writes that vanish on a single broker outage. The convention `min.insync.replicas = RF - 1` tolerates one broker failure while preserving durability.

Pattern

min.insync.replicas == replicationFactor - 1

Examples

RF=3 + min.insync.replicas=2
RF=5 + min.insync.replicas=4
RF=3 + min.insync.replicas=1
RF=3 + min.insync.replicas=3 (no headroom)

Parameters

NameDefaultDescription
rule "rf-minus-one" `rf-minus-one` (default) or `rf-minus-two` for higher availability.

Governs

This policy relates to the following Kafka configuration keys:

Implementation

Drop this YAML into Conduktor Console as a ResourcePolicy, then link it from an ApplicationInstance, Application, or KafkaCluster.

Conduktor ResourcePolicy
# Conduktor self-service ResourcePolicy
# Schema: https://docs.conduktor.io/platform/reference/resource-reference/self-service/#resourcepolicy
# spec.configs values are strings — wrap with int(string(...)) before numeric compare.
# Presence check uses the bracket form because the key contains dots.
---
apiVersion: self-serve/v1
kind: ResourcePolicy
metadata:
  name: isr-alignment
spec:
  targetKind: Topic
  description: min.insync.replicas must equal replicationFactor - 1
  rules:
    - condition: '"min.insync.replicas" in spec.configs && int(string(spec.configs["min.insync.replicas"])) == int(spec.replicationFactor) - 1'
      errorMessage: "min.insync.replicas must equal replicationFactor - 1 (e.g. RF=3 -> min.insync.replicas=2)"

Related policies

Try Conduktor Console

Enforce policies like this across your team — central audit history, pre-commit guardrails, ApplicationInstance bindings. 5-min Docker install.

Get Started →