• Русский
  • Миграция с ZooKeeper на режим KRaft

    Начиная с Kafka 4.0, режим ZooKeeper больше не будет поддерживаться. Оператор также уберет поддержку режима ZooKeeper в будущих версиях. Рекомендуется как можно скорее мигрировать ваши экземпляры Kafka в режим KRaft.

    Важное замечание по версии
    • Оператор версии v4.2.x поддерживает только режим KRaft: режим ZooKeeper полностью удалён в версии v4.2.x.
    • Миграцию необходимо завершить до обновления на v4.2.x: если вы планируете обновиться до Alauda Streaming Service for Kafka v4.2.x, сначала необходимо мигрировать все ваши экземпляры в режим KRaft с помощью оператора версии v4.1.x.
    • v4.2.x не поддерживает миграцию: оператор версии v4.2.x не поддерживает режим ZooKeeper и не может выполнить миграцию с ZooKeeper на KRaft. Миграцию нужно завершить, пока вы используете версию v4.1.x.
    Особенности миграции
    • Прерывание сервиса: процесс миграции может вызвать временные перебои в работе сервиса.
    • Изменения в подключениях: после миграции изменятся имена pod и сервисов (svc), что может привести к изменению адресов подключения. Крайне важно своевременно обновить адреса доступа к вашим экземплярам после миграции. Если вы подключаетесь к Kafka через сервисы bootstrap или external-bootstrap, адреса доступа останутся без изменений, и обновления не потребуются.
    • Невозвратность: после миграции на KRaft откат к режиму ZooKeeper не поддерживается.

    Предварительные требования

    • Версия Kafka должна быть 3.8 или выше
    • Уведомьте потребителей и производителей о возможных временных перебоях
    • Убедитесь, что кластер Kafka здоров и полностью функционирует
    • Проверьте текущий режим ваших экземпляров Kafka:
      kubectl get rdskafka -A -o custom-columns="NAME:.metadata.name,NAMESPACE:.metadata.namespace,MODE:.spec.mode,PHASE:.status.phase"
      Это поможет определить, какие экземпляры всё ещё работают в режиме ZooKeeper и требуют миграции.

    Шаги миграции

    CLI
    1. Сначала проверьте текущий режим ваших экземпляров Kafka:
      kubectl get rdskafka -A -o custom-columns="NAME:.metadata.name,NAMESPACE:.metadata.namespace,MODE:.spec.mode,PHASE:.status.phase"
    2. Выполните патчинг экземпляра Kafka для переключения в режим KRaft:
      kubectl patch rdsKafka <name> -n <namespace> --type=merge -p '{"spec":{"mode":"KRaft"}}'
    3. Отслеживайте статус миграции:
      kubectl get rdsKafka <name> -n <namespace> -o jsonpath='{.status.phase}'
      Статус будет изменяться следующим образом:
      • Migrating: миграция в процессе
      • Active: миграция успешно завершена

    Шаги после миграции

    Особенности миграции

    Если ваши приложения не используют сервисы bootstrap или external-bootstrap (например, при внутреннем или внешнем доступе они используют IP-адреса и порты, связанные с <name>-kafka-<i>.<namespace>.svc.cluster.local), необходимо обновить их конфигурации подключения.

    1. Проверьте подключение клиентов и целостность данных:

      • Убедитесь, что все приложения-производители и потребители успешно подключаются к кластеру Kafka (проверьте логи на наличие ошибок подключения, таймаутов или проблем с аутентификацией).
      • Выполните тестовую отправку и получение сообщений: отправьте тестовые сообщения через производителей и подтвердите, что они корректно принимаются потребителями без потерь или повреждений данных.
      • Проверьте, что основные бизнес-топики доступны и содержат все данные, сохранённые до миграции.
    2. Мониторинг производительности:

      • Следите за производительностью контроллера
      • Мониторьте обработку партиций и операции с метаданными