Обновление#

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

16.392.0

3.9.2

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

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

Для версии 16.392.0 программного продукта отсутствуют изменения в ПО.

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

Для версии 16.392.0 отсутствуют различия в настройке по сравнению с предыдущей версией.

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

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

Параметр

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

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

Не ниже 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.

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

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