<a id="migrate-confluent-server"></a>

# Migrate Confluent Platform to Confluent Server

<!-- also used in Ansible docs -->

Confluent Platform includes a commercial component named `confluent-server`. This includes a
Kafka broker and support for commercial features such as [RBAC](../security/authorization/rbac/overview.md#rbac-overview), [Tiered Storage](../clusters/tiered-storage.md#tiered-storage),
and [Confluent for Kubernetes](https://docs.confluent.io/operator/current/).
Confluent Platform also includes a version of `confluent-kafka`, which
is an open source Apache 2.0 licensed component. Both `confluent-community`
and `confluent-platform` packages have a dependency on `confluent-kafka`.
You can replace the `confluent-kafka` package with `confluent-server` to use
commercial features not available in `confluent-kafka`.  For more information
about the packages, see [Confluent Platform Packages](available_packages.md#available-packages).

To migrate a Confluent Platform cluster from the `confluent-kafka` package to the
`confluent-server` package, replace the package on each node, one
node at a time. In KRaft mode, migrate all controllers before
brokers. Configuration files are preserved during the procedure.

Confluent Server requires that the `confluent.license` property be set to a valid
license string in each broker properties file. Each broker checks the
license at start up. For more information, see [Manage Confluent Platform Licenses](license.md#cp-license-overview).

## Prerequisites

Before you install `confluent-server`, remove any installed
`confluent-kafka` packages. Use `yum autoremove` on RHEL or
`apt autoremove` on Ubuntu and Debian to remove dependencies pulled
in by the earlier install.

## Red Hat Enterprise Linux

If your cluster was installed on Red Hat Enterprise Linux (RHEL), you can migrate from
`confluent-kafka` to `confluent-server` or from `confluent-server` to
`confluent-kafka`.

### Migrating from confluent-kafka to confluent-server

Complete the following steps to migrate to `confluent-server` when using Red
Hat Enterprise Linux (RHEL).

#### Step 1: Install Confluent Platform

1. Install Confluent Platform. For more information, see [Install Confluent Platform using Systemd on RHEL, CentOS, and Fedora-based Linux](installing_cp/rhel-centos.md#systemd-rhel-centos-install).
2. Start your cluster and verify that it works as expected.

#### Step 2: Migrate the controllers

In KRaft mode, you must migrate all the controllers before you migrate the brokers.

1. Log in to and stop each KRaft controller.
   ```none
   sudo systemctl stop confluent-kafka
   ```
2. As a precaution, back up the configuration files:
   ```none
   sudo cp /etc/kafka/controller.properties /tmp
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf /tmp
   ```

   If running with Kerberos, you must back up your JAAS file:
   ```none
   sudo cp /etc/kafka/kafka_server_jaas.conf /tmp
   ```
3. Use `yum swap` to change to `confluent-server`:
   ```none
   yum swap confluent-kafka-8.3.1 confluent-server
   ```
4. Copy the configuration backup to the Kafka configuration directory:
   ```none
   sudo cp /tmp/controller.properties /etc/kafka/
   ```
5. Copy your override file using the following command:
   ```none
   sudo cp /tmp/override.conf /etc/systemd/system/confluent-server.service.d/
   ```
6. If you are running Kerberos, copy your JAAS file to the configuration directory:
   ```none
   sudo cp /tmp/kafka_server_jaas.conf /etc/kafka/
   ```
7. Start your Kafka controllers:
   ```none
   sudo systemctl start confluent-server
   ```

#### Step 3: Migrate the brokers

1. Log in to and stop each Kafka broker.
   ```none
   sudo systemctl stop confluent-kafka
   ```
2. As a precaution, back up the configuration files:
   ```none
   sudo cp /etc/kafka/broker.properties /tmp
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf /tmp
   ```

   If running with Kerberos, you must back up your JAAS file:
   ```none
   sudo cp /etc/kafka/kafka_server_jaas.conf /tmp
   ```

1. Use `yum swap` to change to `confluent-server`:
   ```none
   yum swap confluent-kafka-8.3.1 confluent-server
   ```

1. Copy your configuration files to the Kafka configuration directory:
   ```none
   sudo cp /tmp/broker.properties /etc/kafka/
   ```

   If you are running Kerberos, copy your JAAS file to the Kafka configuration directory:
   ```none
   sudo cp /tmp/kafka_server_jaas.conf /etc/kafka/
   ```

1. Copy your override file using the following command:
   ```none
   sudo cp /tmp/override.conf /etc/systemd/system/confluent-server.service.d/
   ```
2. Start your Kafka nodes.
   ```none
   sudo systemctl start confluent-server
   ```

<a id="migrate-cs-k"></a>

### Migrating from confluent-server to confluent-kafka

<!-- Complete the following steps to change from ``confluent-server`` back to
``confluent-kafka`` when using Red Hat Enterprise Linux (RHEL). -->

The `confluent-server` package is a superset of the `confluent-kafka` package.
It includes all of the functionality of `confluent-kafka`, but also includes
additional features.

If you are using Kafka in KRaft mode, you currently cannot migrate from `confluent-server` to `confluent-kafka`. For instructions, see [Migrate from Confluent Server to Confluent Kafka](migrate-confluent-kafka.md#migrate-confluent-kafka).

<!-- Step 1: Migrate the brokers
+++++++++++++++++++++++++++

   Migrate the brokers before you migrate the controllers in |kraft| mode.

   .. include:: includes/backup-broker.rst

   #. Use ``yum swap`` to change to ``confluent-kafka``:

      .. codewithvars::

         yum swap confluent-kafka-|release| confluent-kafka

   .. include:: includes/copy-broker.rst


   #. Start your |ak| nodes:

      ::

         sudo systemctl start confluent-kafka

   Step 2: Migrate the controllers
   ++++++++++++++++++++++++++++++++

      In |kraft| mode, you must migrate all of the controllers after you migrate the brokers.


      #. Log in to and stop each |ak| controller.

         ::

            sudo systemctl stop confluent-server

      #. As a precaution, back up the following configuration files:

         ::

            sudo cp /etc/kafka/controller.properties /tmp
            sudo cp /etc/systemd/system/confluent-server.service.d/override.conf /tmp

         If running with Kerberos, you must back up your JAAS file:

         ::

            sudo cp /etc/kafka/kafka_server_jaas.conf /tmp

      #. Use ``yum swap`` to change to ``confluent-kafka``:

         .. codewithvars::

            yum swap confluent-kafka-|release| confluent-kafka



      #. Start the controllers:

         ::

            sudo systemctl start confluent-kafka -->

## Ubuntu

If your cluster was installed on Ubuntu, you can migrate from `confluent-kafka` to
`confluent-server`.
.. or from `confluent-server` to `confluent-kafka`.

### Migrating from confluent-kafka to confluent-server

Complete the following steps to migrate to `confluent-server` when using Ubuntu.

#### Step 1: Install Confluent Platform

1. Install Confluent Platform. For more information, see [Install Confluent Platform using Systemd on Ubuntu and Debian](installing_cp/deb-ubuntu.md#systemd-ubuntu-debian-install).
2. Start your cluster and verify that it works as expected.

#### Step 2: Migrate the brokers

1. Log in to and stop each Kafka brokers.
   ```none
   sudo systemctl stop confluent-kafka
   ```

1. Log in to and stop each Kafka broker.
   ```none
   sudo systemctl stop confluent-kafka
   ```
2. As a precaution, back up the configuration files:
   ```none
   sudo cp /etc/kafka/broker.properties /tmp
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf /tmp
   ```

   If running with Kerberos, you must back up your JAAS file:
   ```none
   sudo cp /etc/kafka/kafka_server_jaas.conf /tmp
   ```

1. Remove `confluent-kafka` from your Kafka broker hosts.
   ```none
   sudo apt-get remove confluent-kafka-8.3.1
   ```
2. Install `confluent-server` on your Kafka broker hosts.
   ```none
   sudo apt-get install confluent-server
   ```
3. Select the default option to keep your configuration files in place.
   Get the backup configuration files (that you made earlier) if you accidentally replace the files.
4. Copy your override file using the following command:
   ```none
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf \
      /etc/systemd/system/confluent-server.service.d
   ```
5. Start the Kafka brokers.
   ```none
   sudo systemctl start confluent-server
   ```

#### Step 3: Migrate the controllers

In KRaft mode, you must migrate all of the controllers before you migrate the brokers.

1. Log in to and stop each KRaft controller.
   ```none
   sudo systemctl stop confluent-kafka
   ```
2. As a precaution, back up the following configuration files:
   ```none
   sudo cp /etc/kafka/controller.properties /tmp
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf /tmp
   ```

   If running with Kerberos, you must back up your JAAS file:
   ```none
   sudo cp /etc/kafka/kafka_server_jaas.conf /tmp
   ```
3. Remove `confluent-kafka` from your Kafka controller hosts.
   ```none
   sudo apt-get remove confluent-kafka-8.3.1
   ```
4. Install `confluent-server` on your Kafka controller hosts.
   ```none
   sudo apt-get install confluent-server
   ```
5. Select the default option to keep your configuration files in place.
   Get the backup configuration files (that you made earlier) if you accidentally replace the files.
6. Copy your override file using the following command:
   ```none
   sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf \
      /etc/systemd/system/confluent-server.service.d
   ```
7. Start the controllers.
   ```none
   sudo systemctl start confluent-server
   ```

### Migrating from confluent-server to confluent-kafka

The `confluent-server` package is a superset of the `confluent-kafka` package.
It includes all of the functionality of `confluent-kafka`, but also includes
additional features.

If you are using Kafka in KRaft mode, you currently cannot migrate from `confluent-server` to `confluent-kafka`. For instructions, see [Migrate from Confluent Server to Confluent Kafka](migrate-confluent-kafka.md#migrate-confluent-kafka).

<!-- ..
Step 1: Migrate the brokers
+++++++++++++++++++++++++++

   Migrate the brokers before you migrate the controllers in |kraft| mode.

   .. include:: includes/backup-broker.rst

   #. Use ``yum swap`` to change to ``confluent-kafka``:

      .. codewithvars::

         yum swap confluent-kafka-|release| confluent-kafka

   .. include:: includes/copy-broker.rst


   #. Start your |ak| nodes:

      ::

         sudo systemctl start confluent-kafka

   Step 2: Migrate the controllers
   ++++++++++++++++++++++++++++++++

   In |kraft| mode, you must migrate all of the controllers before you migrate the brokers.


   #. Log in to and stop each |kraft| controller.

      ::

         sudo systemctl stop confluent-server

   #. As a precaution, back up the following configuration files:

      ::

         sudo cp /etc/kafka/controller.properties /tmp
         sudo cp /etc/systemd/system/confluent-kafka.service.d/override.conf /tmp

      If running with Kerberos, you need to back up your JAAS file:

      ::

         sudo cp /etc/kafka/kafka_server_jaas.conf /tmp

   #. Remove ``confluent-server`` from your controller hosts.

      ::

         sudo apt-get remove confluent-server

   #. Install ``confluent-kafka`` on your controller hosts.

      .. codewithvars::

         sudo apt-get install confluent-kafka-|release|

   #. Select the default option to keep your configuration files in place. Get the backup configuration files (that you made earlier) if you accidentally replace the files.

   #. Start the controllers.

      ::

         sudo systemctl start confluent-kafka -->

### Related content

- [Migrate from Kafka to Confluent Platform](migrating.md#migrate-ak-cc)
- [Manage Confluent Platform Licenses](license.md#cp-license-overview)
