Часто встречающиеся проблемы и пути их устранения#
Проблемы, возникающие при работе в среде Kubernetes#
Проблема:
Не запускается или запускается с ошибкой pod.
Решение:
Проверьте статус pod в Kubernetes:
Если статус ContainerCreating, то:
Подождите, пока Node станет доступной.
Если статус Node не меняется, обратитесь к администратору кластера.
Если статус crashloopbackoff, то:
Проверьте логи Pod на наличие ошибок приложения.
Если используете хранилище секретов, подождите загрузку необходимого секрета.
Если статус imagepullbackoff, то:
Проверьте правильность адреса до образа в реестре Docker.
Посмотрите, создан ли секрет скачивания образов из разрешенного реестра Docker.
Проверьте, что все контейнеры перешли в статус готовности.
Посмотрите код состояния запросов на
readinessиliveness.
Медленная запись и чтение в Kafka#
Ошибки вида org.apache.kafka.common.errors.TimeoutException могут сигнализировать о нестабильном состоянии кластера Kafka. Обратитесь к администратору кластера.
При вставке данных из скрипта SQL данные не реплицируются#
Проблема:
После запуска скрипта SQL по вставке данных из вложения на БД источника репликация переходит в статус SPLIT.
Решение:
В Kafka максимальный размер отправляемых сообщений на производителе (Producer) по умолчанию 1 МБ, для отправки сообщений > 1 МБ, вставьте в опциях соединения Kafka параметр max.request.size = {ваше_значение_в_байтах}.
Репликация останавливается из-за слота или публикации#
Проблема:
В лог-записях pod возникает ошибка: ERROR: publication "{имя_публикации}" does not exist или ERROR: slot "{имя_слота}" does not exist.
Решение:
Удалить публикацию:
drop PUBLICATION {имя_публикации}.Создать публикацию:
create PUBLICATION {имя_публикации} FOR ALL TABLES.
Или:
Удалить слот:
select * from pg_drop_replication_slot('slot_ name').Создать слот:
select * FROM pg_create_logical_replication_slot('slot_name', 'pgoutput').Тип слота должен быть pgoutput.
Процессы не привязываются к воркерам#
Проблема:
Процессы не привязываются к воркерам. Ошибка запуска репликации.
Решение:
Остановите поды grdl-module в k8s.
Перейдите в БД:
в таблице grdl_worker_nodes, в поле worker_status укажите: DETACHED, в поле process ID установите значение: [NULL];
в таблице grdl_process, в поле status укажите: ABORTED;
в таблице grdl_module, в поле status укажите: VALID.
Включите поды grdl-module в k8s.
Нарушение работы модуля применения при нагрузке#
Проблема:
При репликации с высокой нагрузкой (около 60 KTPS) возникает ошибка в работе модуля применения. Сообщение об ошибке: It is not possible to collect messages in the correct order from different partitions.
Решение:
Увеличьте значение параметров
retention.msиdelete.retention.msв Kafka до 172800000 (2 суток).Установите параметр
retention.bytes = -1.
Отсутствие соединения с сервисом аудита#
Проблема:
В сервисе аудита отсутствуют сообщения от прикладных сервисов.
Решение:
Проверьте логи прикладных сервисов в DropApp.
Проверьте инфраструктурные логи DropApp.
Дождитесь восстановления соединения с сервисом аудита – события будут отправлены автоматически.
Kafka не отправляет подтверждение записи модулю Capture#
Проблема:
Kafka не отправляет подтверждение записи модулю Capture
Решение:
Настройте обработчик ошибок следующим образом:
DML_ERROR=ABORTПри остановке репликации из-за ошибки «Duplicate key value violates unique constraint» или иных ошибок, связанных с нарушением ограничений:
откройте топик error в Kakfa;
найдите grdl_id сообщения об ошибке;
запустите модуль Applier с позиции: в качестве типа позиции выберите «gradely», в поле Позиция укажите grdl_id из сообщения об ошибке +1.