Обновление#

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

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

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

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

Параметр

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

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

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