Перейти к основному содержимому

Часто встречающиеся проблемы и пути их устранения

Проблемы, возникающие при работе в среде Kubernetes​

Проблема:

Не запускается или запускается с ошибкой pod.

Решение:

  1. Проверьте статус pod в Kubernetes:

    • Если статус ContainerCreating, то:

      1. Подождите, пока узел станет доступен.
      2. Если статус узла не меняется, обратитесь к администратору кластера.
    • Если статус crashloopbackoff, то:

      1. Проверьте логи Pod на наличие ошибок приложения.
      2. Если используете хранилище секретов, подождите загрузку необходимого секрета.
    • Если статус imagepullbackoff, то:

      1. Проверьте правильность адреса до образа в реестре Docker.
      2. Посмотрите, создан ли секрет скачивания образов из разрешенного реестра Docker.
  2. Проверьте, что все контейнеры перешли в статус готовности.

  3. Посмотрите код состояния запросов на 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.

Решение:

  1. Удалить публикацию: drop PUBLICATION <имя_публикации>.
  2. Создать публикацию: create PUBLICATION <имя_публикации> FOR ALL TABLES.

Или:

  1. Удалить слот: select * from pg_drop_replication_slot('<slot_name>').

  2. Создать слот: select * FROM pg_create_logical_replication_slot('<slot_name>', 'pgoutput').

    к сведению

    <slot_name> - имя слота на базе источнике. Тип слота должен быть pgoutput.

Процессы не привязываются к воркерам​

Проблема:

Процессы не привязываются к воркерам. Ошибка запуска репликации.

Решение:

  1. Остановите поды grdl-module в k8s.

  2. Перейдите в БД:

    • в таблице grdl_worker_nodes, в поле worker_status укажите: DETACHED, в поле process ID установите значение: [NULL];
    • в таблице grdl_process, в поле status укажите: ABORTED;
    • в таблице grdl_module, в поле status укажите: VALID.
  3. Включите поды grdl-module в k8s.

Нарушение работы модуля применения при нагрузке​

Проблема:

При репликации с высокой нагрузкой (около 60 KTPS) возникает ошибка в работе модуля применения. Сообщение об ошибке: It is not possible to collect messages in the correct order from different partitions.

Решение:

  1. Увеличьте значение параметров retention.ms и delete.retention.ms в Kafka до 172800000 (2 суток).
  2. Установите параметр retention.bytes = -1.

Отсутствие соединения с сервисом аудита​

Проблема:

В сервисе аудита отсутствуют сообщения от прикладных сервисов.

Решение:

  1. Проверьте логи прикладных сервисов в DropApp.
  2. Проверьте инфраструктурные логи DropApp.
  3. Дождитесь восстановления соединения с сервисом аудита – события будут отправлены автоматически.

Kafka не отправляет подтверждение записи модулю Capture​

Проблема:

Kafka не отправляет подтверждение записи модулю Capture

Решение:

  1. Настройте обработчик ошибок следующим образом:

    DML_ERROR=ABORT
  2. При остановке репликации из-за ошибки "Duplicate key value violates unique constraint" или иных ошибок, связанных с нарушением ограничений:

    • откройте топик error в Kakfa;
    • найдите grdl_id сообщения об ошибке;
    • запустите модуль Applier с позиции: в качестве типа позиции выберите "gradely", в поле Позиция укажите grdl_id из сообщения об ошибке +1.