Skip to content

Commit

Permalink
Merge branch 'increase-replication-factor' into ops-jobs
Browse files Browse the repository at this point in the history
motivated by #140
  • Loading branch information
solsson committed Feb 2, 2018
2 parents e6a7aec + 4257128 commit 49649e1
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
10 changes: 10 additions & 0 deletions maintenance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,13 @@ Create the `preferred-replica-election-job.yml` resource, after deleting any pre
_-- Neha Narkhede, Gwen Shapira, and Todd Palino. ”Kafka: The Definitive Guide”_

Use the `reassign-paritions-job.yml`, after editing `TOPICS` and `BROKERS`.

## Increase a topic's replication factor

See https://github.com/Yolean/kubernetes-kafka/pull/140

Use the `replication-factor-increase-job.yml`, after editing `TOPICS` and `BROKERS`.

The affected topics may end up without a preferred replica. See above to fix that,
or to affect only your selected topics use [Kafka Manager's](https://github.com/Yolean/kubernetes-kafka/pull/83) topic screen,
Generate Partition Assignments followed by Reassigned Partitions.
65 changes: 65 additions & 0 deletions maintenance/replication-factor-increase-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
apiVersion: batch/v1
kind: Job
metadata:
name: replication-factor-increase
namespace: kafka
spec:
template:
metadata:
name: replication-factor-increase
spec:
containers:
- name: kafka
image: solsson/kafka:1.0.0@sha256:17fdf1637426f45c93c65826670542e36b9f3394ede1cb61885c6a4befa8f72d
env:
- name: ZOOKEEPER
value: zookeeper.kafka:2181
# the following must be edited per job
- name: TOPICS
value: ""
- name: BROKERS
value: 0,1,2
command:
- /bin/bash
- -ce
- >
if [ -z "$TOPICS" ]; then
echo "Please set the TOPICS env (comma-separated) and re-create the job"
tail -f /dev/null
fi
echo '{"topics":[' > /tmp/reassign-topics.json;
echo -n ' {"topic":"' >> /tmp/reassign-topics.json;
echo -n $TOPICS | sed 's/,/"},\n {"topic":"/g' >> /tmp/reassign-topics.json;
echo '"}' >> /tmp/reassign-topics.json;
echo ']}' >> /tmp/reassign-topics.json;
echo "# reassign-topics.json";
cat /tmp/reassign-topics.json;
./bin/kafka-reassign-partitions.sh
--zookeeper=$ZOOKEEPER
--generate
--topics-to-move-json-file=/tmp/reassign-topics.json
--broker-list=$BROKERS > /tmp/generated.txt;
tail -n 1 /tmp/generated.txt > /tmp/proposed-reassignment.json;
sleep 1;
echo "# proposed-reassignment.json";
cat /tmp/proposed-reassignment.json;
sed -i 's/"replicas":\[.\]/"replicas":[0,1,2]/g' /tmp/proposed-reassignment.json;
sed -i 's/,"log_dirs":\["any"\]//g' /tmp/proposed-reassignment.json;
echo "# proposed-reassignment.json modified to affect replication factor";
cat /tmp/proposed-reassignment.json;
echo "# Triggering kafka-reassign-partitions.sh"
./bin/kafka-reassign-partitions.sh
--zookeeper=$ZOOKEEPER
--execute
--reassignment-json-file=/tmp/proposed-reassignment.json;
echo "# Reassignment exited. Upon success you may want to run preferred-replica-election."
restartPolicy: Never
backoffLimit: 3

0 comments on commit 49649e1

Please sign in to comment.