Scale Confluent Platform Clusters using Ansible
Scale up Confluent Platform
Ansible Playbooks for Confluent Platform supports scaling up Confluent clusters. This use-case scenario demonstrates how to scale up Kafka, ksqlDB, and Connect using Ansible playbooks.
Ansible Playbooks for Confluent Platform does not currently support scaling up ZooKeeper.
The below example
hosts.yamlfile configures:3 ZooKeeper nodes
3 Kafka broker nodes
2 ksqlDB clusters, named
ksql1andksql2, with each cluster having 1 node2 Connect clusters, named
elasticandsyslog, with each cluster having 1 node1 Control Center (Legacy) node
zookeeper: hosts: ip-172-31-34-246.us-east-2.compute.internal: ip-172-31-37-15.us-east-2.compute.internal: ip-172-31-34-231.us-east-2.compute.internal: kafka_broker: hosts: ip-172-31-34-246.us-east-2.compute.internal: broker_id: 0 ip-172-31-34-247.us-east-2.compute.internal: broker_id: 1 ip-172-31-34-248.us-east-2.compute.internal: broker_id: 2 ksql: children: ksql1: ksql2: ksql1: vars: ksql_service_id: ksql1_ hosts: ip-172-31-34-15.us-east-2.compute.internal: ksql2: vars: ksql_service_id: ksql2_ hosts: ip-172-31-34-17.us-east-2.compute.internal: kafka_connect: children: syslog: elastic: syslog: vars: kafka_connect_group_id: connect_syslog hosts: ip-172-31-34-245.us-east-2.compute.internal: elastic: vars: kafka_connect_group_id: connect-elastic hosts: ip-172-31-34-246.us-east-2.compute.internal: control_center: hosts: ip-172-31-37-15.us-east-2.compute.internal:
Update the
hosts.yamlfile to scale up the clusters:zookeeper: hosts: ip-172-31-34-246.us-east-2.compute.internal: ip-172-31-37-15.us-east-2.compute.internal: ip-172-31-34-231.us-east-2.compute.internal: kafka_broker: hosts: ip-172-31-34-246.us-east-2.compute.internal: broker_id: 0 ip-172-31-34-247.us-east-2.compute.internal: broker_id: 1 ip-172-31-34-248.us-east-2.compute.internal: broker_id: 2 ip-172-31-34-249.us-east-2.compute.internal: --- [1] broker_id: 3 ip-172-31-34-250.us-east-2.compute.internal: --- [2] broker_id: 4 ksql: children: ksql1: ksql2: ksql1: vars: ksql_service_id: ksql1_ hosts: ip-172-31-34-15.us-east-2.compute.internal: ip-172-31-37-16.us-east-2.compute.internal: --- [3] ksql2: vars: ksql_service_id: ksql2_ hosts: ip-172-31-34-17.us-east-2.compute.internal: ip-172-31-37-18.us-east-2.compute.internal: --- [4] kafka_connect: children: syslog: elastic: syslog: vars: kafka_connect_group_id: connect_syslog hosts: ip-172-31-34-245.us-east-2.compute.internal: elastic: vars: kafka_connect_group_id: connect-elastic hosts: ip-172-31-34-246.us-east-2.compute.internal: ip-172-31-34-247.us-east-2.compute.internal: --- [5] control_center: hosts: ip-172-31-37-15.us-east-2.compute.internal:
[1] [2] Add 2 new nodes to the Kafka broker cluster.
[3] Add 1 new node to the
ksql1ksqlDB cluster.[4] Add 1 new node to the
ksql2ksqlDB cluster.[5] Add 1 new node to the
elasticConnect cluster.
Re-run the playbook to scale up the clusters:
ansible-playbook -i hosts.yml confluent.platform.all
The clusters are scaled up with:
5 Kafka broker nodes (scaled up)
2 ksqlDB clusters,
ksql1andksql2with 2 nodes each (scaled up)The
syslogConnect cluster with 1 nodeThe
elasticConnect cluster with 2 nodes (scaled up)1 Control Center (Legacy) node
To distribute existing loads to new nodes, make sure that you enable the Self-Balancing feature using the Ansible custom properties. For the list of configuration options, see Self-Balancing Configurations on the Brokers.