Часто встречающиеся проблемы и пути их устранения
Проблемы, возникающие при работе в среде Kubernetes
Проблема:
Не запускается или запускается с ошибкой pod.
Решение:
-
Проверьте статус pod в Kubernetes:
-
Если статус ContainerCreating, то:
- Подождите, пока узел станет доступен.
- Если статус узла не меняется, обратитесь к администратору кластера.
-
Если статус 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').к сведению<slot_name>- имя слота на базе источнике. Тип слота должен быть 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.