# Deploy Apache Kafka on Arm-based Microsoft Azure Cobalt 100 virtual machines

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/)
- [Overview](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/background/)
- [Create an Arm-based cloud virtual machine using Microsoft Cobalt 100 CPU](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/create-instance/)
- [Install Kafka](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/deploy/)
- [Run baseline testing with Kafka on Azure Arm VM](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/baseline/)
- [Benchmark with official Kafka tools](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/benchmarking/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/kafka-azure/_next-steps/)

## About this Learning Path

| Skill level:    | Advanced       |
|------------------|----------------|
| Reading time:    | 30 min         |
| Last updated:    | 17 Sep 2026    |

| Author:          | Pareena Verma, Arm [GitHub](https://github.com/pareenaverma) [LinkedIn](https://linkedin.com/in/pareena-verma-7853607) |
|------------------|----------------|
| Arm IP:          | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags:            | [Storage](https://learn.arm.com/tag/storage) [Microsoft Azure Cobalt](https://learn.arm.com/tag/microsoft-azure-cobalt) [Linux](https://learn.arm.com/tag/linux) [Kafka](https://learn.arm.com/tag/kafka) |

### Who is this for?

This is an advanced topic for developers looking to migrate their Apache Kafka workloads from x86_64 to Arm-based platforms, specifically on Microsoft Azure Cobalt 100 (arm64) virtual machines (VMs).

### What will you learn?

Upon completion of this Learning Path, you will be able to:
- Provision an Azure Arm64 VM using Azure console, with Ubuntu Pro 24.04 LTS as the base image.
- Deploy Kafka on an Ubuntu VM.
- Perform Kafka baseline testing and benchmarking on Arm64 VMs.

### Prerequisites

Before starting, you will need the following:
- A [Microsoft Azure](https://azure.microsoft.com/) account with access to Cobalt 100 based instances (Dpsv6)
- Basic understanding of the Linux command line
- Familiarity with the [Apache Kafka architecture](https://kafka.apache.org/) and deployment practices on Arm64 platforms

### Summary

You’ll provision an Arm64 Azure Cobalt 100 VM, install Java and Kafka, and configure Kafka `4.1.0` in KRaft mode. First, you’ll create a topic and verify producer-to-consumer message flow, then run Kafka’s official performance tools to capture throughput and latency. You’ll finish with a working Kafka deployment and baseline benchmark results from an Arm64 instance on Microsoft Azure.

### Frequently asked questions

<details>
<summary>Which Azure VM series should I use?</summary>
Select a D-Series v6 VM from the Dpsv6 size series, which uses the Cobalt 100 Arm-based CPU.
</details>

<details>
<summary>Which operating system image do I choose when creating the VM?</summary>
Use Ubuntu Pro 24.04 (Arm64).
</details>

<details>
<summary>Do I need ZooKeeper for this Kafka setup?</summary>
No. Kafka `4.1.0` supports KRaft mode, which removes the need for ZooKeeper. Start the broker in KRaft mode.
</details>

<details>
<summary>How do I verify that Kafka is working after installation?</summary>
Open separate terminals for each of the following tasks: starting the Kafka broker (KRaft), creating a topic, running a consumer, and running a producer. If the consumer receives the messages that you produce, the end-to-end flow works.
</details>

<details>
<summary>What should I look for when running the Kafka benchmarks?</summary>
Ensure that the broker is running and the topic is ready, then run the official `kafka-producer-perf-test.sh` and `kafka-consumer-perf-test.sh` tools. Review the reported throughput and latency metrics to confirm that the benchmark completed, and to capture baseline results.
</details>
