Manual Install using Systemd on RHEL and CentOS
This topic provides instructions for installing a production-ready Confluent Platform configuration in a multi-node RHEL or CentOS
environment with a replicated ZooKeeper ensemble.
The YUM repositories provide packages for RHEL, CentOS, and Fedora-based distributions.
You must complete these steps for each node in your cluster.
- Before installing Confluent Platform, your environment must have the following software and hardware requirements.
Get the Software
The YUM repositories provide packages for RHEL, CentOS, and Fedora-based distributions. You can install individual Confluent Platform
packages or the entire platform. For a list of available packages, see the documentation
or you can search the repository (
yum search <package-name>).
sudo yum install curl which
Install the Confluent Platform public key. This key is used to sign packages in the YUM repository.
sudo rpm --import https://packages.confluent.io/rpm/6.1/archive.key
/etc/yum.repos.d/ and create a file named
confluent.repo with these contents. This adds the Confluent
repositories. You must have the entries for both repositories,
[Confluent], as shown below.
name=Confluent repository (dist)
Clear the YUM caches
and install Confluent Platform.
Configure Confluent Platform
Configure Confluent Platform with the individual component properties files. By default these are located in
You must minimally configure the following components.
These instructions assume you are running ZooKeeper in replicated mode. A minimum of three servers are required for replicated
mode, and you must have an odd number of servers for failover. For more information, see the
Navigate to the ZooKeeper properties file (
/etc/kafka/zookeeper.properties) file and modify as shown.
This configuration is for a three node ensemble. This configuration file should be identical across all nodes in the ensemble.
clientPort are all set to typical single server values. The
govern how long following ZooKeeper servers can take to initialize with the current leader and how long they can be out of sync
with the leader. In this configuration, a follower can take 10000 ms to initialize and can be out of sync for up to 4000 ms
based on the
tickTime being set to 2000ms.
server.* properties set the ensemble membership. The format is
myid is the server identification number. There are three servers that each have a different
3 respectively. The
myid is set by creating a file named
myid in the
that contains a single integer in human readable ASCII text. This value must match one of the
myid values from the
configuration file. You will see an error if another ensemble member is already started with a conflicting
leaderport is used by followers to connect to the active leader. This port should be open between all ZooKeeper
electionport is used to perform leader elections between ensemble members. This port should be open between all ZooKeeper
autopurge.purgeInterval have been set to purge all but three snapshots every 24 hours.
Navigate to the ZooKeeper log directory (e.g.,
/var/lib/zookeeper/) and create a file named
consists of a single line that contains the machine ID in the format
<machine-id>. When the ZooKeeper server starts up, it knows
which server it is by referencing the
myid file. For example, server 1 will have a
myid value of
In a production environment, multiple brokers are required. During startup brokers register themselves in ZooKeeper to become
a member of the cluster.
Navigate to the Apache Kafka® properties file (
/etc/kafka/server.properties) and customize the following:
Connect to the same ZooKeeper ensemble by setting the
zookeeper.connect in all nodes to the same value. Replace all
localhost to the hostname or FQDN (fully qualified domain name) of your node. For example, if your
Configure the broker IDs for each node in your cluster using one of these methods.
Configure how other brokers and clients communicate with the broker using
listeners, and optionally
listeners: Comma-separated list of URIs and listener names to listen on.
advertised.listeners: Comma-separated list of URIs and listener names for other brokers and clients to use.
advertised.listeners parameter ensures that the broker advertises an address that is accessible from both
local and external hosts.
For more information, see Production Configuration Options.
Configure security for your environment.
Navigate to the Control Center properties file (
and customize the following:
# host/port pairs to use for establishing the initial connection to the Kafka cluster
# location for Control Center data
# the Confluent license
# ZooKeeper connection string with host and port of a ZooKeeper servers
This configuration is for a three node multi-node cluster. For more information, see Control Center configuration details. For information about Confluent Platform licenses, see Managing Confluent Platform Licenses.
Navigate to the Kafka server configuration file (
/etc/kafka/server.properties) and enable Confluent Metrics Reporter.
##################### Confluent Metrics Reporter #######################
# Confluent Control Center and Confluent Auto Data Balancer integration
# Uncomment the following lines to publish monitoring data for
# Confluent Control Center and Confluent Auto Data Balancer
# If you are using a dedicated metrics cluster, also adjust the settings
# to point to your metrics Kafka cluster.
# Uncomment the following line if the metrics cluster has a single broker
Add these lines to the Kafka Connect properties file (
/etc/kafka/connect-distributed.properties) to add support for the
# Interceptor setup
Confluent REST Proxy
Navigate to the Confluent REST Proxy properties file (
/etc/kafka-rest/kafka-rest.properties) and customize the following:
Navigate to the Schema Registry properties file (
and specify the following properties:
# Specify the address the socket server listens on, e.g. listeners = PLAINTEXT://your.host.name:9092
# The host name advertised in ZooKeeper. This must be specified if your running Schema Registry
# with multiple nodes.
# List of Kafka brokers to connect to, e.g. PLAINTEXT://hostname:9092,SSL://hostname2:9092
This configuration is for a three node multi-node cluster. For more information, see Running Schema Registry in Production.
Start Confluent Platform
Start Confluent Platform and its components using systemd service unit files. You can start immediately by using the
systemctl start command or enable for automatic startup by using the
systemctl enable command. These instructions
use the syntax for immediate startup.
ZooKeeper, Kafka, and Schema Registry must be started in this specific order, and must be started before any other components.
sudo systemctl start confluent-zookeeper
Start Schema Registry.
sudo systemctl start confluent-schema-registry
Start other Confluent Platform components as desired.
sudo systemctl start confluent-control-center
sudo systemctl start confluent-kafka-connect
Confluent REST Proxy
sudo systemctl start confluent-kafka-rest
sudo systemctl start confluent-ksqldb
Run this command to remove Confluent Platform, where
<component-name> is either
(Confluent Platform) or
confluent-community-2.13 (Confluent Platform using only Confluent Community components).
sudo yum autoremove <component-name>
For example, run this command to remove Confluent Platform:
sudo yum autoremove confluent-platform