<a id="system-requirements"></a>

# Confluent Platform System Requirements

Confluent Platform requirements depend on your workload and the components you deploy.
Each broker requires several CPU cores, RAM sized for the OS page cache,
and dedicated storage. The following tables cover per-component
hardware, supported operating systems, JVM versions, network ports, and
Docker versions.

<a id="cp-hardware"></a>

## Hardware

Confluent Platform hardware requirements vary by component. The following table lists
per-component machine recommendations.
Confluent Platform supports both ARM64 and X86 hardware architecture. ARM64 is supported in Confluent Platform 7.6.0 and later.

For consistent and optimal performance in your Confluent Platform cluster, ensure all cluster nodes have identical hardware specifications. This includes CPU type
and core count, RAM capacity and speed, and storage type with matching performance characteristics like throughput and IOPS. Varying hardware among nodes
can cause performance bottlenecks, uneven workload distribution, and overall cluster instability. Maintaining identical hardware across all nodes is
essential for high availability and reliable performance in your Confluent Platform deployment.

The CPU resource requirement is the same for all platforms. For example, if 12 CPUs is the requirement for non-Kubernetes
environments, the requirement for a Kubernetes environment is also 12 CPU units.

The following table lists hardware recommendations. Confluent Platform is used for a wide range of use cases and on a lot of different machines. These recommendations provide a good starting point based on the experiences of Confluent with production clusters, but actual requirements depend on your specific workload.

| Component                                                                                                                                                     | Nodes            | Storage                                                                                                                                   | Memory                                                                   | CPU                                                                                                          |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| Control Center-Normal mode, see [System Requirements](https://docs.confluent.io/control-center/current/installation/system-requirements.html)                 | 1                | 200 GB, preferably SSDs                                                                                                                   | Minimum 8 GB RAM                                                         | 4 cores or more                                                                                              |
| Control Center-Reduced infrastructure mode, see [System Requirements](https://docs.confluent.io/control-center/current/installation/system-requirements.html) | 1                | 128 GB, preferably SSDs                                                                                                                   | 8 GB RAM                                                                 | 4 cores or more                                                                                              |
| Control Center (Legacy)-Normal mode                                                                                                                           | 1                | 300 GB, preferably SSDs                                                                                                                   | 32 GB RAM  (JVM<br/>default 6 GB)                                        | 12 cores or more                                                                                             |
| Control Center (Legacy)-Reduced infrastructure mode                                                                                                           | 1                | 128 GB, preferably SSDs                                                                                                                   | 8 GB RAM  (JVM<br/>default 4 GB)                                         | 4 cores or more                                                                                              |
| Broker                                                                                                                                                        | 3                | - 12 X 1 TB disk. RAID 10 is optional<br/>- Separate OS disks from Apache Kafka®<br/>  storage                                            | 64 GB RAM                                                                | 24 cores                                                                                                     |
| KRaft controller                                                                                                                                              | 3-5              | 64 GB SSD                                                                                                                                 | 4 GB RAM                                                                 | 4 cores                                                                                                      |
| Confluent Manager for Apache Flink                                                                                                                            | 1 Kubernetes pod | 10 GB (Kubernetes persistent volume)                                                                                                      | 4 GB RAM<br/>(For managing<br/>150 Flink<br/>applications)               | 3 cores<br/>(For managing<br/>150 Flink<br/>applications)                                                    |
| Connect                                                                                                                                                       | 2                | Storage is only required at installation time.                                                                                            | 0.5 - 4 GB<br/>heap size<br/>depending on<br/>connectors                 | Typically not CPU-bound.<br/>More cores is better than<br/>faster cores.                                     |
| Replicator- Same as Connect for nodes, storage, memory, and CPU. (See<br/>note that follows about AWS.)                                                       | 2                | Storage is only required at installation time.                                                                                            | 0.5 - 4 GB<br/>heap size                                                 | More cores is better                                                                                         |
| ksqlDB - See [Capacity planning](../ksqldb/operate-and-deploy/capacity-planning.md#ksqldb-operate-capacity-planning-ksqldb-resources)                         | 2                | Use SSD. Sizing depends on the<br/>number of concurrent queries<br/>and the aggregation performed.<br/>Minimum 100 GB for a basic server. | 20 GB RAM                                                                | 4 cores                                                                                                      |
| REST Proxy                                                                                                                                                    | 2                | Storage is only required at installation time.                                                                                            | 1 GB overhead<br/>plus 64 MB per<br/>producer and 16<br/>MB per consumer | 16 cores to handle HTTP<br/>requests in parallel and<br/>background threads for<br/>consumers and producers. |
| Schema Registry                                                                                                                                               | 2                | Storage is only required at installation time.                                                                                            | 1 GB heap size                                                           | Typically not CPU-bound.<br/>More cores is better than<br/>faster cores.                                     |

#### NOTE
All components require a `/tmp` mount with sufficient space to store temporary files during
installation, upgrades, or component restarts. Allocate 2–10 GB for most environments, especially if you
run multiple components on the same machine. If `/tmp` fills up, components may fail to start or
operate correctly. Monitor free space to prevent failures.

* If you want to use RAID disks, the recommendation is:
  * RAID 1 and RAID 10: Preferred
  * RAID 0: 2nd preferred
  * RAID 5: Not recommended

#### NOTE
If deploying Confluent Platform on AWS VMs and [running Replicator as a connector](../multi-dc-deployments/replicator/replicator-run.md#replicator-as-a-connector),
be aware that VMs with burstable CPU types (T2, T3, T3a, and T4g) will not support high throughput streaming workloads.
Replicator worker nodes running on these VMs experience throughput degradation due to credits expiring, making
these VMs unsuitable for Confluent Platform nodes expected to run at elevated CPU levels for a sustained period of time,
and supporting workloads that are above and beyond their baseline resource rates.

## Software

<a id="sys-req-os"></a>

### Operating Systems

<!-- **IMPORTANT*** This file is shared into the CP Versions and Interoperability topic.
Modify with caution. -->

Confluent Platform is supported on several operating systems (OSs).
You should run Confluent Platform across uniform OS, Confluent Platform, and Java versions.

Confluent Platform supports X86, ARM64, and s390x hardware architectures. ARM64 is
supported in Confluent Platform 7.6.0 and later. s390x is supported in Confluent Platform 8.2.0
and later. For supported features on s390x, see [Linux on IBM Z (s390x) support](versions-interoperability.md#s390x-support).
For more information on required hardware, see [Hardware](#cp-hardware).

#### IMPORTANT
Do not use operating systems marked as *no* in the following table for production deployments.

| Operating System                                                       |   Linux Kernel | 8.3.x   | 8.2.x   | 8.1.x   | 8.0.x   | 7.9.x   | 7.8.x   | 7.7.x   | 7.6.x   | 7.5.x   |
|------------------------------------------------------------------------|----------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|
| AlmaLinux 9                                                            |           5.14 | yes     | yes     | yes     | yes     | yes     | yes     | no      | no      | no      |
| AlmaLinux 8                                                            |           4.18 | no      | no      | yes     | yes     | yes     | yes     | no      | no      | no      |
| Amazon Linux 2023                                                      |           6.1  | yes     | yes     | yes     | yes     | yes     | yes     | yes     | no      | no      |
| Debian 12 (bookworm)                                                   |           6.1  | yes     | yes     | yes     | yes     | yes     | yes     | yes     | no      | no      |
| Debian 10 (buster)                                                     |           4.19 | no      | no      | no      | no      | no      | no      | yes     | yes     | yes     |
| RHEL 10.x                                                              |           6.11 | yes     | yes     | no      | no      | no      | no      | no      | no      | no      |
| RHEL 9.x                                                               |           5.14 | yes     | yes     | yes     | yes     | yes     | yes     | yes     | yes     | yes     |
| RHEL/CentOS 8.x                                                        |           4.18 | no      | no      | yes     | yes     | yes     | yes     | yes     | yes     | yes     |
| RHEL/CentOS 7.x [(1)](versions-interoperability.md#os-note-1)          |           3.1  | no      | no      | no      | no      | no      | no      | no      | yes     | yes     |
| Rocky Linux 9                                                          |           5.14 | yes     | yes     | yes     | yes     | yes     | yes     | yes     | yes     | no      |
| Rocky Linux 8                                                          |           4.18 | no      | no      | yes     | yes     | yes     | yes     | yes     | yes     | no      |
| Oracle Linux 9                                                         |           5.14 | yes     | yes     | yes     | yes     | yes     | yes     | yes     | yes     | no      |
| Oracle Linux 8                                                         |           4.18 | no      | no      | yes     | yes     | yes     | yes     | yes     | yes     | no      |
| Ubuntu 24.04 LTS (noble) [(2)](versions-interoperability.md#os-note-2) |           6.8  | yes     | yes     | yes     | yes     | yes     | no      | no      | no      | no      |
| Ubuntu 22.04 LTS (jammy) [(2)](versions-interoperability.md#os-note-2) |           5.15 | yes     | yes     | yes     | yes     | yes     | yes     | no      | no      | no      |
| Ubuntu 20.04 LTS (focal)                                               |           5.4  | no      | no      | yes     | yes     | yes     | yes     | yes     | yes     | yes     |
| Ubuntu 18.04 LTS (bionic)                                              |           4.15 | no      | no      | no      | no      | no      | no      | yes     | yes     | yes     |

### Footnotes

<a id="os-note-1"></a>
1. `librdkafka` is not supported on RHEL 7 or CentOS 7 because these operating systems have reached end of life.

<a id="os-note-2"></a>
1. Java 11, 17, 21, and 25 are supported. Java 8 is not supported on this operating system.

**Additional notes about OS support:**

SELinux
: Confluent Platform is supported on AlmaLinux, Amazon Linux, Debian, RHEL, CentOS, Debian, Rocky Linux, and
  Ubuntu Operating Systems.
  <br/>
  Confluent is not accountable for Security-Enhanced Linux (SELinux) policy
  development, support, or enforcement. If you experience issues running
  Confluent Platform with SELinux enabled on a supported Linux Operating System,
  contact your OS provider for assistance.

Windows
: Windows is not currently supported for Confluent Platform.
  Windows 8.1 and later and Windows 2016 and later are supported by the
  [C/C++](https://docs.confluent.io/kafka-clients/librdkafka/current/overview.html) and [.NET](https://docs.confluent.io/kafka-clients/dotnet/current/overview.html) clients.

macOS
: macOS 10.14 and later is supported for testing and development purposes only.

File descriptors
: For the file descriptor requirement for Kafka,
  see [File Descriptors and mmap](../kafka/deployment.md#cp-production-file-descriptors).

ulimit
: Control Center requires many open RocksDB files. Set the `ulimit` for the number
  of open files to a minimum value of 16384 using the `ulimit -n` command.
  For the other Confluent Platform components, specifically Schema Registry and Replicator, you can leave the
  `ulimit` as the OS default.

RHEL with TLS
: When you install Confluent Platform on RHEL8 with TLS encryption, you must add DH Key Size
  JVM Parameters for each component. For more information, see [Strong crypto
  defaults in RHEL 8 and deprecation of weak crypto algorithms](https://access.redhat.com/articles/3642912).
  <br/>
  Set the following component-level environment variables to the argument:
  <br/>
  * Schema Registry: `SCHEMA_REGISTRY_OPTS=-Djdk.tls.ephemeralDHKeySize=2048`
  * Kafka and Connect: `KAFKA_OPTS=-Djdk.tls.ephemeralDHKeySize=2048`
  * REST Proxy: `KAFKAREST_OPTS=-Djdk.tls.ephemeralDHKeySize=2048`
  * ksqlDB: `KSQL_OPTS=-Djdk.tls.ephemeralDHKeySize=2048`

atime
: The `atime` mount option impacts performance, because every read
  operation on a file system causes a write operation.
  <br/>
  Confluent recommends disabling the tracking of `atime` by setting the
  `noatime` option when you mount Kafka data disks.

<a id="sys-req-java"></a>

### Java

<!-- Java requirements -->
<!-- **IMPORTANT*** Modify with caution, shared in the versions-interoperability.rst file. -->

Confluent Platform requires Java. Make sure you install the correct version of Java before
you start the Confluent Platform installation process.

The following table lists Java support in Confluent Platform by version. Note the following:

- Confluent Platform version 7.4.x deprecated Java 8 support, and Confluent Platform 8.0 removed it.
- Confluent Platform 8.0.x and later support Java 11 only for Kafka Streams and Kafka clients.
- Ubuntu 22.04 and 24.04 operating systems support Java versions 25, 21, 17, and 11, but do not support Java 8 in Confluent Platform 7.8.x or later.
- Starting with Confluent Platform 8.3.x, the Docker images support Java 25. Confluent Platform 8.0.x
  through 8.2.x Docker images support Java 21. For more information, see
  [Docker](versions-interoperability.md#docker-sys-req).
- Confluent Platform supports Eclipse Temurin, OpenJDK, Zulu OpenJDK, and Oracle. Eclipse
  Temurin was formerly AdoptOpenJDK.
- You should use the full JDK to help Confluent Support with troubleshooting
  and to provide better support if you experience issues with Confluent Platform.

| Confluent Platform   |   Recommended | Supported   |
|----------------------|---------------|-------------|
| 8.3.x                |            21 | 25, 21, 17  |
| 8.2.x                |            21 | 21, 17      |
| 8.1.x                |            21 | 21, 17      |
| 8.0.x                |            21 | 21, 17      |
| 7.9.x                |            17 | 17, 11, 8   |
| 7.8.x                |            17 | 17, 11, 8   |
| 7.7.x                |            17 | 17, 11, 8   |
| 7.6.x                |            17 | 17, 11, 8   |
| 7.5.x                |            17 | 17, 11, 8   |

From a security perspective, you should always use the latest released patch
version because older versions might have security vulnerabilities.

Confluent Platform supports only long-term support versions of Java. For more information
about Java versions, see [Java Version History](https://en.wikipedia.org/wiki/Java_version_history).

<!-- +--------------------+--------------------+
| |cp|               | Java Version       |
+====================+====================+
| 6.2.x              | 1.8.0_202, 11.0_4  |
+--------------------+--------------------+
| 6.1.x              | 1.8.0_202, 11.0_4  |
+--------------------+--------------------+
| 6.0.x              | 1.8.0_202, 11.0_4  |
+--------------------+--------------------+
| 5.5.x              | 1.8.0_202, 11.0_4  |
+--------------------+--------------------+
| 5.4.x              | 1.8.0_202, 11.0_4  |
+--------------------+--------------------+
| 5.3.x              | 1.8.0_60, 11.0_2   |
+--------------------+--------------------+
| 5.2.x              | 1.8.0_60, 11.0_2   |
+--------------------+--------------------+
| 5.1.x              | 1.8.0_60           |
+--------------------+--------------------+
| 5.0.x              | 1.8.0_60           |
+--------------------+--------------------+
| 4.1.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 4.0.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 3.3.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 3.2.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 3.1.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 3.0.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 2.0.x              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+
| 1.0.0              | 1.7.0_60, 1.8.0_60 |
+--------------------+--------------------+ -->
<!-- Java temporary directory configuration -->

#### Configure the Java temporary directory

Many Confluent Platform components and their dependencies, such as compression libraries, require write access to a
temporary directory to extract native libraries or store intermediate files.

To adhere to security best practices and prevent failures during compression algorithm changes,
configure a dedicated Java temporary directory instead of using the default system `/tmp`.
This prevents issues in production environments where `/tmp` is mounted with the `noexec` flag or has
restricted permissions.

Allocate 2–10 GB for the temporary directory. This provides sufficient space for temporary files created
during installation, upgrades, or component restarts. If the temporary directory fills up, components may
fail to start or operate correctly. Monitor free space to prevent failures.

Set the `java.io.tmpdir` property in the environment variable corresponding to your component.
Ensure the directory has write permissions and is not mounted with the `noexec` flag.

```bash
# For Kafka brokers and clients
export KAFKA_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For Control Center
export CONTROL_CENTER_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For ksqlDB
export KSQL_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For Schema Registry
export SCHEMA_REGISTRY_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For Kafka REST Proxy
export KAFKAREST_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For Connect workers
export KAFKA_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"

# For Confluent Rebalancer
export REBALANCER_OPTS="-Djava.io.tmpdir=/path/to/custom/tmp"
```

### Docker

Optional: Docker version 1.11 or later running on a [supported operating
system](versions-interoperability.md#operating-systems). This is required if you are installing Confluent Platform by
using the [Docker images](docker/installation.md#cpdocker-intro).

<!-- docker_end -->

### Network

Starting with Confluent Platform 7.9.1, Internet Protocol version 6 (IPv6) is supported. IPv6 support is subject to the following constraints:

- It can be enabled only on clusters using Java 11 or above.
- It is only supported on clusters running in KRaft mode. It may work on clusters running in ZooKeeper mode, but it is not supported.
- Tiered Storage: To enable IPv6 for [Tiered Storage](../clusters/tiered-storage.md#tiered-storage), you should set the following JVM property:
  - `Djava.net.preferIPv6Addresses=true`.

  In addition, the following property was added with a default of `true`. You can set it to `false` to disable IPv6 for tiered storage:
  - `confluent.tier.s3.ipv6.enabled=true`.

<a id="sys-req-ports"></a>

### Ports

Confluent Platform exposes the TCP network services and default ports listed in the
following table.

All services in this table use the TCP protocol.

All ports in this table are the default ports, and in most cases you can
configure each service to listen on a different port of your choice.

Ports that are indicated to be **Internal Only** need to be accessible by
components within Confluent Platform, not by users or clients of the platform.

When deploying Confluent Platform, ensure that your networking rules allow for the required
access to the various components and services.

| Component and Service        |   Default Port | Internal Only?   |
|------------------------------|----------------|------------------|
| **KRaft Controller**         |                |                  |
| - peer-to-peer communication |           9093 | Yes              |
| - Jolokia <sub>[\*]</sub>    |           7770 | No               |
| **Kafka Broker**             |                |                  |
| - Interbroker listener       |           9091 | Yes              |
| - External listener          |           9092 | No               |
| - Metadata Service (MDS)     |           8090 | No               |
| - Confluent Server REST API  |           8090 | No               |
| - Jolokia <sub>[\*]</sub>    |           7771 | No               |
| **(Standalone) REST Proxy**  |           8082 | No               |
| **Confluent Control Center** |           9021 | No               |
| **Kafka Connect**            |                |                  |
| - REST API                   |           8083 | No               |
| - Jolokia <sub>[\*]</sub>    |           7773 | No               |
| **ksqlDB Server**            |                |                  |
| - REST API                   |           8088 | No               |
| - Jolokia <sub>[\*]</sub>    |           7774 | No               |
| **Schema Registry**          |                |                  |
| - REST API                   |           8081 | No               |
| - Jolokia <sub>[\*]</sub>    |           7772 | No               |

<sub>[\*]</sub> Reserve the Jolokia ports only when you deploy Confluent Platform using Ansible.

<a id="time-sync"></a>

## Time synchronization requirement

Clock synchronization on each Kafka broker is required to ensure the full system functions
correctly. For example, secure network communication with the brokers that rely on
TLS certificate verification can fail if clocks are not synchronized. Clock synchronization
can be achieved using utilities like `ntpd` that implement the Network Time Protocol (NTP).

## Related content

- [Control Center System Requirements](/control-center/current/installation/overview.html#system-requirements)
- [Supported Versions and Interoperability for Confluent Platform](versions-interoperability.md#interoperability-versions)
