From 2b34f6d2fdfab7ebf57fe6858586d3b938f2f97f Mon Sep 17 00:00:00 2001 From: Doug Szumski Date: Wed, 5 Sep 2018 10:10:50 +0100 Subject: [PATCH] Improve scalability of Kafka Set sensible defaults for replica counts and minimum insync replicas as a function of the number of nodes in the Kafka cluster. Partially-Implements: blueprint monasca-roles Change-Id: Icf1dddb7dd6a64f4e5efb7dffa5ffdf0880f891f --- ansible/roles/kafka/defaults/main.yml | 1 + ansible/roles/kafka/templates/kafka.server.properties.j2 | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kafka/defaults/main.yml b/ansible/roles/kafka/defaults/main.yml index 2eaf6d8a89..ca989940fe 100644 --- a/ansible/roles/kafka/defaults/main.yml +++ b/ansible/roles/kafka/defaults/main.yml @@ -22,6 +22,7 @@ kafka_cluster_name: "kolla_kafka" kafka_log_dir: "/var/log/kolla/kafka" kafka_heap_opts: "-Xmx1G -Xms1G" kafka_zookeeper: "{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ zookeeper_client_port }}{% if not loop.last %},{% endif %}{% endfor %}" +kafka_broker_count: "{{ groups['kafka'] | length }}" #################### # Docker diff --git a/ansible/roles/kafka/templates/kafka.server.properties.j2 b/ansible/roles/kafka/templates/kafka.server.properties.j2 index a8ca4465ed..8743f6f587 100644 --- a/ansible/roles/kafka/templates/kafka.server.properties.j2 +++ b/ansible/roles/kafka/templates/kafka.server.properties.j2 @@ -5,11 +5,12 @@ socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/var/lib/kafka/data -num.partitions=1 +min.insync.replicas={{ kafka_broker_count if kafka_broker_count|int < 3 else 2 }} +num.partitions=30 num.recovery.threads.per.data.dir=1 -offsets.topic.replication.factor=3 -transaction.state.log.replication.factor=3 -transaction.state.log.min.isr=3 +offsets.topic.replication.factor={{ kafka_broker_count if kafka_broker_count|int < 3 else 3 }} +transaction.state.log.replication.factor={{ kafka_broker_count if kafka_broker_count|int < 3 else 3 }} +transaction.state.log.min.isr={{ kafka_broker_count if kafka_broker_count|int < 3 else 2 }} log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000