Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set internal replication factors to match default and min.insync.replicas #140

Merged
merged 9 commits into from
Feb 3, 2018
6 changes: 3 additions & 3 deletions kafka/10broker-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ data:
############################# Internal Topic Settings #############################
# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
#offsets.topic.replication.factor=1
#transaction.state.log.replication.factor=1
#transaction.state.log.min.isr=1

############################# Log Flush Policy #############################

Expand Down
13 changes: 4 additions & 9 deletions kafka/test/kafkacat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ spec:
- test-kafkacat
- --partitions
- "1"
- --replication-factor
- "2"
restartPolicy: Never
---
apiVersion: apps/v1beta2
Expand All @@ -93,6 +91,7 @@ metadata:
name: kafkacat
namespace: test-kafka
spec:
# Note that this test sets a consumer group, but asserts assume that the tests gets its own messages
replicas: 1
selector:
matchLabels:
Expand All @@ -103,12 +102,6 @@ spec:
labels:
test-target: kafka-client-kafkacat
test-type: readiness
# for example:
# readonly - can be used in production
# isolated - read/write but in a manner that does not affect other services
# load - unsuitable for production because it uses significant resources
# chaos - unsuitable for production because it injects failure modes
#test-use:
spec:
containers:
- name: producer
Expand All @@ -135,11 +128,13 @@ spec:
env:
- name: BOOTSTRAP
value: bootstrap.kafka:9092
- name: CONSUMER_GROUP_ID
value: test-kafkacat-group
command:
- /bin/bash
- -cex
- >
kafkacat -C -b $BOOTSTRAP -t test-kafkacat -o -1 -f '%T;%k:%p;%o;%s\n' -u -d broker |
kafkacat -b $BOOTSTRAP -G $CONSUMER_GROUP_ID test-kafkacat -o -1 -f '%T;%k:%p;%o;%s\n' -u -d broker |
tee /shared/consumed.tmp
;
volumeMounts:
Expand Down
2 changes: 0 additions & 2 deletions kafka/test/produce-consume.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ spec:
- test-produce-consume
- --partitions
- "1"
- --replication-factor
- "2"
restartPolicy: Never
---
apiVersion: apps/v1beta2
Expand Down
98 changes: 98 additions & 0 deletions kafka/test/replication-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# https://github.com/Yolean/kubernetes-kafka/pull/140
---
kind: ConfigMap
metadata:
name: replication-config
namespace: test-kafka
apiVersion: v1
data:

setup.sh: |-
touch /tmp/testlog

tail -f /tmp/testlog

test.sh: |-
exec >> /tmp/testlog
exec 2>&1
set -e

kafkacat -L -b $BOOTSTRAP > /tmp/metadata
BROKERS=$(cat /tmp/metadata | grep -E ' [0-9]+ brokers:' | awk '{print $1}')
if (( $BROKERS == 1 )); then
echo "Only one broker; no need to check for >1 replication config."
exit 0
fi

WITH_TWO_OR_MORE=$(cat /tmp/metadata | grep -E ' replicas: [0-9]+,[0-9]+' | wc -l)
WITH_ONE=$(cat /tmp/metadata | grep -E ' replicas: [0-9]+, ' | wc -l)
if (( $WITH_TWO_OR_MORE == 0 )); then
echo "No partitions have >1 replica, so this is probably normal."
exit 0
fi

if (( $WITH_ONE > $MAX_SINGLE_REPLICA_PARTITIONS )); then
echo "$(date --iso-8601='ns') There are $WITH_ONE partitions with only one replica. Alerts for under-replicated partitions won't catch that."
exit 10
fi

echo "$(date --iso-8601='ns') $WITH_ONE partitions have one replica and WITH_TWO_OR_MORE have more"
exit 0

quit-on-nonzero-exit.sh: |-
exec >> /tmp/testlog
exec 2>&1

exit 0
---
apiVersion: apps/v1beta2
kind: ReplicaSet
metadata:
name: replication-config
namespace: test-kafka
spec:
# Note that this test sets a consumer group, but asserts assume that the tests gets its own messages
replicas: 1
selector:
matchLabels:
test-target: kafka-replication-config
test-type: readiness
template:
metadata:
labels:
test-target: kafka-replication-config
test-type: readiness
spec:
containers:
- name: testcase
image: solsson/kafkacat@sha256:b32eedf936f3cde44cd164ddc77dfcf7565a8af4e357ff6de1abe4389ca530c9
env:
- name: BOOTSTRAP
value: bootstrap.kafka:9092
- name: MAX_SINGLE_REPLICA_PARTITIONS
value: "0"
command:
- /bin/bash
- -e
- /test/setup.sh
readinessProbe:
exec:
command:
- /bin/bash
- -e
- /test/test.sh
initialDelaySeconds: 30
periodSeconds: 60
livenessProbe:
exec:
command:
- /bin/bash
- -e
- /test/quit-on-nonzero-exit.sh
volumeMounts:
- name: config
mountPath: /test
volumes:
- name: config
configMap:
name: replication-config
2 changes: 1 addition & 1 deletion yahoo-kafka-manager/kafka-manager.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ spec:
spec:
containers:
- name: kafka-manager
image: solsson/kafka-manager@sha256:e07b5c50b02c761b3471ebb62ede88afc0625e325fe428316e32fec7f227ff9b
image: solsson/kafka-manager@sha256:5db7d54cdb642ec5a92f37a869fdcf2aa479b2552e900b2d2b83b38a1806c2de
ports:
- containerPort: 80
env:
Expand Down