Обновление#
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. Порядок обновления приведен ниже.
Требования к конфигурации кластера при обновлении#
Для обновления кластера должны быть установлены следующие значения в конфигурации кластера:
Параметр |
Требуемое значение |
|---|---|
Фактор репликации каждого топика |
Не ниже ( |
Фактор репликации смещений |
Не ниже |
Фактор репликации сведений о транзакциях |
Не ниже |
Проверка фактора репликации каждого топика#
Выполните команду получения списка текущих топиков кластера:
KAFKA_DIR/bin/kafka-topics.sh --bootstrap-server host:port --list --command-config KAFKA_DIR/config/ssl.propertiesДля каждого топика, полученного из списка на предыдущем шаге, выполните команду проверки фактора репликации и параметра
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.
Убедитесь, что выполнены требования, указанные в разделе «Требования к конфигурации кластера при обновлении» текущего документа.
В конфигурационном файле
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.
Остановите работу одного из брокеров. Для этого:
если брокер ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:
sudo systemctl stop kafkaесли брокер НЕ ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:
KAFKA_DIR/bin/kafka-server-stop.sh
Замените все исполняемые файлы, находящиеся в каталоге
KAFKA_DIR/bin, на файлы из новой версии Corax.Замените все файлы библиотек в папке
KAFKA_DIR/libsна файлы из новой версии Corax.При необходимости замените конфигурационные файлы в каталоге
KAFKA_DIR/configна файлы из новой версии Corax.Примечание
Рекомендуется сохранить используемые (текущие) конфигурационные файлы для возможности восстановления конфигурации кластера.
Запустите обновленный брокер и дождитесь окончания репликации (утилита
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.
Повторите шаги 3–7 для каждого последующего брокера кластера.
В конфигурационном файле
server.propertiesкаждого брокера задайте параметрinter.broker.protocol.version=<NEW_KAFKA_VERSION>, гдеNEW_KAFKA_VERSION— новая версия ядра Kafka. Указываются первые две цифры номера версии, например3.4.Перезагрузите последовательно каждый брокер, чтобы изменения вступили в силу:
Для перезапуска (перезагрузки) брокера:
если брокер ЗАРЕГИСТРИРОВАН как сервис Linux, выполните команду:
sudo systemctl restart kafkaесли брокер НЕ ЗАРЕГИСТРИРОВАН как сервис Linux, выполните последовательно команды остановки и запуска брокера, как описано на шагах 3 и 7.
В конфигурационном файле
server.propertiesкаждого брокера задайте параметрlog.message.format.version=<NEW_KAFKA_VERSION>, гдеNEW_KAFKA_VERSION— новая версия ядра Kafka. Указываются первые две цифры номера версии, например3.4.Перезагрузите последовательно каждый брокер, чтобы изменения вступили в силу (перезагрузка брокера описана на шаге 10).
Порядок действий при обновлении без изменения версии ядра Kafka#
При обновлении Corax без изменения версии ядра Kafka выполните шаги 1, 3, 4, 5, 6, 7, 8 из раздела «Порядок действий при обновлении с изменением версии ядра Kafka».