.. _system-requirements: ============================= |cp| System Requirements ============================= This topic provides the hardware and software requirements for |cp|. .. include:: ../includes/cp-cta.rst Hardware ======== ----------- On-Premises ----------- The following machine recommendations are for installing individual |cp| components: ============================= ================= ====================================== ================ =========================== Component Nodes Storage Memory CPU ============================= ================= ====================================== ================ =========================== |c3-short|-|c3-normal-mode| 1 300 GB, preferably SSDs 32 GB RAM (JVM 12 cores or more default 6 GB) |c3-short|-|c3-reduced-infra| 1 128 GB, preferably SSDs 8 GB RAM (JVM 4 cores or more default 4 GB) Broker 3 - 12 X 1 TB disk. RAID 10 is optional 64 GB RAM Dual 12-core sockets - Separate OS disks from |ak-tm| storage |kraft| controller 3-5, 64 GB SSD 4 GB RAM 4 cores 3 recommended |kconnect| 2 Only required for installation 0.5 - 4 GB Typically not CPU-bound. heap size More cores is better than depending on faster cores. connectors |crep| Same as |kconnect| for nodes, storage, memory, and CPU. (See note below regarding AWS.) |ksqldb| 2 Use SSD. Sizing depends on the 20 GB RAM 4 cores number of concurrent queries and the aggregation performed. REST Proxy 2 Only required for installation 1 GB overhead 16 cores to handle HTTP plus 64 MB per requests in parallel and producer and 16 background threads for MB per consumer consumers and producers. |sr| 2 Only required for installation 1 GB heap size Typically not CPU-bound. More cores is better than faster cores. |zk| 3-5 - Transaction log: 512 GB 4 GB RAM 2-4 cores - Storage: 2 X 1 TB SATA, RAID 10 Each write to |zk| must be persisted in the transaction log before the client gets an ack. Using SSD reduces the |zk| write latency. ============================= ================= ====================================== ================ =========================== * In the above table, the recommended CPU resource is in CPU units which are the same in all platforms. For example, if we recommend 12 CPUs for non-Kubernetes environment, the recommendation for Kubernetes environment would be 12 CPU units, as well. * 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 |cp| on AWS VMs and :ref:`running Replicator as a connector `, be aware that VMs with burstable CPU types (T2, T3, T3a, and T4g) will not support high throughput streaming workloads. |crep| worker nodes running on these VMs experience throughput degradation due to credits expiring, making these VMs unsuitable for |cp| 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. ----- Cloud ----- For information on |ccloud| support, see :cloud:`Supported Features for Confluent Cloud|overview.html`. Software ======== .. _sys-req-os: ----------------- Operating Systems ----------------- .. _supported_os: .. include:: ../includes/os-support.rst :start-after: Operating system content :end-before: docker_start ---- Java ---- .. include:: ../includes/java-reqs.rst ------ Docker ------ .. include:: ../includes/os-support.rst :start-after: docker_start ------- Network ------- |c3-short| relies heavily on |ak|, so a fast and reliable network is important for performance. Modern datacenter networking speed of 1 GbE, 10 GbE should be sufficient. .. _sys-req-ports: ----- Ports ----- The table below lists the network services and ports exposed as part of |cp|. All services listed below use the TCP protocol. All ports listed below 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 |cp|, not by users or clients of the platform. When deploying |cp|, ensure that your networking rules allow for the required access to the various components and services. ============================== ============ ============== Component and Service Default Port Internal Only? ============================== ============ ============== |zk| - Peer-to-peer communication 2888 Yes - Peer-to-peer communication 3888 Yes - Client access 2181 No - Client access via TLS 2182 No - Jolokia :sup:`[*]` 7770 No |kraft| Controller - peer-to-peer communication 9093 Yes |ak| Broker - Interbroker listener 9091 Yes - External listener 9092 No - |mds-long| 8090 No - |cs| REST API 8090 No - Jolokia :sup:`[*]` 7771 No (Standalone) REST Proxy 8082 No |c3| 9021 No |kconnect-long| - REST API 8083 No - Jolokia :sup:`[*]` 7773 No |ksqldb| Server - REST API 8088 No - Jolokia :sup:`[*]` 7774 No |sr| - REST API 8081 No - Jolokia :sup:`[*]` 7772 No ============================== ============ ============== :sup:`[*]` Reserve the Jolokia ports only when you deploy |cp| using Ansible. .. _time-sync: ---------------- Synchronize time ---------------- Clock synchronization on each |ak| broker is required to ensure the full system functions correctly. For example, secure network communication with the brokers that rely on TLS certificate verification may fail if clocks are not synchronized. Clock synchronization can be achieved using utilities like ``ntpd`` that implement the Network Time Protocol (NTP).