Обновление#

Corax поддерживает обновление без прерывания сервиса в случае корректной конфигурации.

Обновление без прерывания сервиса происходит путем последовательного перезапуска брокеров с обновлением исполняемых файлов, библиотек и, при необходимости, конфигурационных файлов.

Обновления можно разделить на два типа:

  • обновления с изменением версии ядра Kafka.

    Пример: при обновлении Corax с версии 7.272.x на версию 8.340.x версия ядра Kafka меняется с 2.7.2 на 3.4.0.

  • обновления без изменения версии ядра Kafka.

    Пример: при обновлении Corax с версии 5.272.x на версию 7.272.x версия ядра Kafka 2.7.2 не изменяется.

Таблица соответствия версий Corax и версий ядра Kafka:

Версия Corax

Версия ядра Kafka

5.272.0

2.7.2

7.272

2.7.2

7.272.2

2.7.2

8.340.0

3.4.0

8.340.1

3.4.0

9.340.0

3.4.0

10.340.0

3.4.0

11.340.0

3.4.0

12.381.0

3.8.1

12.381.1

3.8.1

13.391.0

3.9.1

14.391.0

3.9.1

13.391.0

3.9.1

14.391.0

3.9.1

14.391.1

3.9.1

15.392.0

3.9.2

При обновлении с изменением версии ядра Kafka требуется задать дополнительные параметры конфигурации: inter.broker.protocol.version и log.message.format.version. Порядок обновления приведен ниже.

Изменения в системных требованиях#

Обновлена версия ядра Kafka с 3.9.1 на 3.9.2.

Для Platform V SberLinux OS Server:

  • добавлена версия 9.7.0 и выше до потери обратной совместимости;

  • изменена версия 8.7 и выше на 8.10.4 и выше.

Изменена версия Platform V Monitor 6.0.200 и выше до потери обратной совместимости.

Добавлена поддержка OpenJDK 21, SberJDK 17 и 21. Компоненты Corax UI и Schema Registry переведены на Spring Boot 4+.

Изменения в параметрах настройки#

Конфигурационный файл

Параметр

Событие

Описание события

На что влияет

log4j.properties

log4j.appender.<аппендер для сжатия файлов>.maxFileSize

Добавлен

Добавлен новый параметр

Максимальный размер лог-файла. По достижению этого значения начинается ротация файла — текущий лог-файл переименовывается по шаблону: <имя лог-файла>.1, создается новый пустой файл для логирования

log4j.appender.<аппендер для сжатия файлов>.maxBackupIndex

Максимальное количество архивированных лог-файлов. Проверяется при создании gzip архива

org.apache.log4j.RollingFileAppender

Заменено значение в конфигурациях

Парамер заменен на ru.sbrf.kafka.log4j.RollingAndCompressFileAppender

Включение режима записи rolling update

server.properties

Добавлен

Добавлен новый параметр

timestamp.metadata.group.metrics.enabled

Включает или выключает сбор дополнительных метрик по времени старейшего непрочитанного сообщения в топиках. По умолчанию false.

timestamp.metadata.group.metrics.period

Период обновления метки времени старейшего непрочитанного сообщения группы в топике (в секундах). По умолчанию 300.

timestamp.metadata.group.metrics.whitelist

Регулярное выражение, задающее шаблон групп, для которых необходимо собирать метрику времени старейшего непрочитанного сообщения. По умолчанию не задано (собираются все группы, если не задан timestamp.metadata.group.metrics.blacklist).

timestamp.metadata.group.metrics.blacklist

Регулярное выражение, задающее шаблон групп, для которых не собирается метрика времени старейшего непрочитанного сообщения. По умолчанию не задано.

Требования к конфигурации кластера при обновлении#

Для обновления кластера должны быть установлены следующие значения в конфигурации кластера:

Параметр

Требуемое значение

Фактор репликации каждого топика

Не ниже min_insync_replicas+1

Фактор репликации смещений offsets.topic.replication.factor

Не ниже 2

Фактор репликации сведений о транзакциях transaction.state.log.replication.factor

Не ниже 2

Проверка фактора репликации каждого топика#

  1. Выполните команду получения списка текущих топиков кластера:

    KAFKA_DIR/bin/kafka-topics.sh --bootstrap-server host:port --list --command-config KAFKA_DIR/config/ssl.properties
    
  2. Для каждого топика, полученного из списка на предыдущем шаге, выполните команду проверки фактора репликации и параметра min.insync.replicas:

    KAFKA_DIR/bin/kafka-topics.sh --bootstrap-server host:port --describe --topic topicName --command-config KAFKA_DIR/config/ssl.properties
    

    Пример вывода команды:

    Topic: third_topic TopicId: 84yqCErzTG27J4wv44dkPQ PartitionCount: 4 ReplicationFactor: 3 Configs: min.insync.replicas=2, cleanup.policy=delete
    Topic: third_topic Partition: 0 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
    Topic: third_topic Partition: 1 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2
    Topic: third_topic Partition: 2 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
    Topic: third_topic Partition: 3 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
    

Также значение параметра min.insync.replicas можно посмотреть в файле KAFKA_DIR/config/server.properties. Если параметр отсутствует, используется значение по умолчанию 1.

Проверка фактора репликации смещений#

Проверьте в файле KAFKA_DIR/config/server.properties параметр offsets.topic.replication.factor. Если параметр отсутствует, используется значение по умолчанию 3.

Проверка фактора репликации сведений о транзакциях#

Проверьте в файле KAFKA_DIR/config/server.properties параметр transaction.state.log.replication.factor. Если параметр отсутствует, используется значение по умолчанию 3.

Порядок действий при обновлении с изменением версии ядра Kafka#

Шаги обновления#

Ниже приведен общий порядок действий при обновлении Corax с изменением версии ядра Kafka.

  1. Убедитесь, что выполнены требования, указанные в разделе «Требования к конфигурации кластера при обновлении» текущего документа.

  2. В конфигурационном файле server.properties каждого брокера задайте параметры inter.broker.protocol.version=<CURRENT_KAFKA_VERSION> и log.message.format.version=<CURRENT_MESSAGE_FORMAT_VERSION>.

    Где:

    • CURRENT_KAFKA_VERSION — версия ядра Kafka, с которой производится обновление (текущая). Указываются первые две цифры номера версии ядра, например, 2.7.

    • CURRENT_MESSAGE_FORMAT_VERSION — версия формата сообщений, используемая в настоящий момент (текущая). Указываются первые две цифры номера версии ядра, например, 2.7.

  3. Остановите работу одного из брокеров. Для этого:

    • если брокер ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:

      sudo systemctl stop kafka
      
    • если брокер НЕ ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:

      KAFKA_DIR/bin/kafka-server-stop.sh
      
  4. Замените все исполняемые файлы, находящиеся в каталоге KAFKA_DIR/bin, на файлы из новой версии Corax.

  5. Замените все файлы библиотек в папке KAFKA_DIR/libs на файлы из новой версии Corax.

  6. При необходимости замените конфигурационные файлы в каталоге KAFKA_DIR/config на файлы из новой версии Corax.

    Примечание

    Рекомендуется сохранить используемые (текущие) конфигурационные файлы для возможности восстановления конфигурации кластера.

  7. Запустите обновленный брокер и дождитесь окончания репликации (утилита kafka-topics не должна показывать ни одной не полностью реплицированной партиции).

    Для запуска брокера:

    • если брокер ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:

       sudo systemctl start kafka
      
    • если брокер НЕ ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:

      KAFKA_DIR/bin/kafka-server-start.sh KAFKA_DIR/config/server.properties
      

    Для проверки окончания репликации данных для каждого топика из списка, полученного при выполнении команды kafka-topics --list, выполните команду:

    KAFKA_DIR/bin/kafka-topics.sh --bootstrap-server host:port --describe --topic topicName --command-config KAFKA_DIR/config/ssl.properties
    

    В полученном выводе команды для каждой партиции топика:

    • в столбце Replicas должно быть перечислены столько id брокеров, сколько задано в значении фактора репликации;

    • в столбце ISR должно быть перечислены столько id брокеров, сколько задано в значении min.insync.replicas.

  8. Повторите шаги 3–7 для каждого последующего брокера кластера.

  9. В конфигурационном файле server.properties каждого брокера задайте параметр inter.broker.protocol.version=<NEW_KAFKA_VERSION>, где NEW_KAFKA_VERSION — новая версия ядра Kafka. Указываются первые две цифры номера версии, например 3.4.

  10. Перезагрузите последовательно каждый брокер, чтобы изменения вступили в силу:

    Для перезапуска (перезагрузки) брокера:

    • если брокер ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:

       sudo systemctl restart kafka
      
    • если брокер НЕ ЗАРЕГИСТРИРОВАН как сервис Linux, выполните последовательно команды остановки и запуска брокера, как описано на шагах 3 и 7.

  11. В конфигурационном файле server.properties каждого брокера задайте параметр log.message.format.version=<NEW_KAFKA_VERSION>, где NEW_KAFKA_VERSION — новая версия ядра Kafka. Указываются первые две цифры номера версии, например 3.4.

  12. Перезагрузите последовательно каждый брокер, чтобы изменения вступили в силу (перезагрузка брокера описана на шаге 10).

Проверка обновления#

Отсутствуют ошибки в логе.

Порядок действий при обновлении без изменения версии ядра Kafka#

Шаги обновления#

При обновлении Corax без изменения версии ядра Kafka выполните шаги 1, 3, 4, 5, 6, 7, 8 из раздела «Порядок действий при обновлении с изменением версии ядра Kafka».

Проверка обновления#

Отсутствуют ошибки в логе.

Обновление Corax Schema Registry c 12.X на 13.X#

Шаги обновления#

Шаги указаны в разделе Миграция на 13.391.0.

Проверка обновления#

Отсутствуют ошибки в логе.