#cloud-config package_update: true package_upgrade: true packages: - openjdk-11-jdk - wget users: - name: kafka system: true shell: /bin/false home: /opt/kafka write_files: - path: /opt/kafka/config/server.properties content: | broker.id=1 listeners=PLAINTEXT://localhost:9092 advertised.listeners=PLAINTEXT://localhost:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/opt/kafka/logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=localhost:2181 zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0 - path: /opt/kafka/config/zookeeper.properties content: | dataDir=/opt/kafka/zookeeper-data clientPort=2181 maxClientCnxns=0 admin.enableServer=false tickTime=2000 initLimit=10 syncLimit=5 - path: /etc/systemd/system/zookeeper.service content: | [Unit] Description=Apache Zookeeper After=network.target [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh Restart=on-failure [Install] WantedBy=multi-user.target - path: /etc/systemd/system/kafka.service content: | [Unit] Description=Apache Kafka After=zookeeper.service Requires=zookeeper.service [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh Restart=on-failure [Install] WantedBy=multi-user.target runcmd: # Download and install Kafka - cd /opt - wget https://downloads.apache.org/kafka/2.13-3.5.0/kafka_2.13-3.5.0.tgz - tar -xzf kafka_2.13-3.5.0.tgz - mv kafka_2.13-3.5.0 kafka - chown -R kafka:kafka /opt/kafka - mkdir -p /opt/kafka/logs /opt/kafka/zookeeper-data - chown -R kafka:kafka /opt/kafka/logs /opt/kafka/zookeeper-data # Set JAVA_HOME - echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> /etc/environment - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # Enable and start services - systemctl enable zookeeper - systemctl start zookeeper - sleep 10 - systemctl enable kafka - systemctl start kafka # Configure firewall - ufw allow 9092/tcp - ufw allow 2181/tcp # Create test topic - sleep 15 - sudo -u kafka /opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1