Перейти к содержанию

Решение типовых проблем

Страница нужна инженеру эксплуатации, который видит отказ при установке или работе S3R и ищет причину. Каждый раздел построен одинаково: признак, причина, что делать. Проблемы со входом в консоль разобраны отдельно, в разделе Решение проблем со входом.

Признак Раздел
плагин не включается, в сообщении две версии Несовпадение версий
инстанс не запускается, has N disks but no listener Нет слушателя
диск не переходит в состояние active или его нет в s3r_disk Диски не монтируются
группы размещения не создаются Группы не создаются
запись получает 503 ServiceUnavailable [Запись возвращает ServiceUnavailable
ALTER PLUGIN ... SET для s3r_storage отклоняется Команда отклоняется
после настройки TLS на слушателе s3r_storage плагин не загружается [TLS без ca_file
неясно, шифруется ли обмен фрагментами Проверка шифрования
растёт время ответа на малых объектах [Очереди s3r_meta
чтения возвращают устаревшие данные read_preference

Плагин не включается, в сообщении приведены две версии

Признак. Плагин не включается; в сообщении об ошибке указаны две версии.

Причина. Версия Picodata не совпадает с версией библиотеки picodata-plugin, с которой собран плагин.

Что делать. Проверьте, что установлено, и поставьте сборку плагина для своей версии Picodata (см. Соответствие версий S3R и Picodata):

SELECT name, version, enabled FROM _pico_plugin;
SELECT plugin, name, tiers FROM _pico_service WHERE plugin = 's3r';

Инстанс не запускается, сообщение has N disks but no listener

Признак. Инстанс не запускается; в сообщении есть has N disks but no listener.

Причина. На инстансе заданы диски и не задан слушатель s3r_storage в конфигурации Picodata. Отказ предусмотрен: без слушателя диски недоступны остальным узлам.

Что делать. Задайте слушатель s3r_storage в конфигурации инстанса (см. Слушатель s3r_storage).

Диски не монтируются

Признак. В журнале инстанса нет записи disk ... mounted; диск не в состоянии active либо отсутствует в таблице s3r_disk.

Что проверить.

  1. Запись disk ... mounted в журнале инстанса.
  2. Состояние диска в таблице s3r_disk.
  3. Шаг нового диска (step) и ошибку шага (step_error) в ответе GET /v2/disks.

Причина и что делать. Состояния и шаги диска описаны в разделе Идентификация диска.

Что видно Причина Что делать
состояние new, шаг mounting или formatting диск не открылся: директория недоступна, в окружении нет io_uring или O_DIRECT, либо новый накопитель слишком мал для того, что группы занимали на заменяемом причина записана в журнале и в поле step_error; устраните её
состояние blank, foreign или corrupt по пути диска нет его суперблока: файловая система не смонтирована, накопитель заменён или суперблок повреждён смонтируйте файловую систему либо переформатируйте диск (см. Действия с дисками)
шаг waiting for the tier's shape у яруса диска ещё нет записанной схемы схема яруса записывается при начальном формировании (см. Начальное формирование)
диска нет в s3r_disk список дисков инстанса отклонён при первом запуске. Список регистрируется только целиком, и один неоткрывшийся диск отклоняет его весь причина записана в столбце reason таблицы s3r_instance

Группы размещения не создаются

Признак. Группы размещения не создаются, запись объектов отклоняется.

Что делать.

  1. Проверьте ответ /-/ready.
  2. Если кластер ещё не сформирован, разберите причины по разделу Если установка не завершается.
  3. Если кластер сформирован, посмотрите поле reasons в ответе /-/debug/topology.

Причины в поле reasons.

Причина Что означает
no_disks в ярусе нет дисков
no_shape у яруса нет схемы
not_enough_domains, no_failure_domain, not_enough_instances описаны в разделе Раскладка группы
no_position для участника нет позиции, сохраняющей правила
wait позиция плана временно недоступна

Запись возвращает ServiceUnavailable

Признак. Запись получает ответ 503 ServiceUnavailable.

Что это значит. Ответ 503 означает ситуацию, которая может пройти, и клиент повторяет запрос (см. Ответы клиенту при отказе хранилища).

Причина и что делать.

Что видно Причина Что делать
сообщение the cluster is new (registering) либо the cluster is new (forming) кластер не прошёл начальное формирование см. Начальное формирование
сообщение this instance owns no placement group in tier ... у инстанса, принявшего запрос, нет дисков яруса этого объекта проверьте, какие диски этого яруса есть у инстанса (таблица s3r_disk)
отказ длится недолго группа только что создана, монтируется после перезапуска инстанса или ждёт, пока новый участник возьмёт её экстенты клиент повторяет запрос
в журнале инстанса строка tier <ярус> needs a group and none can be formed: <причина> группы инстанса приостановлены из-за недоступного участника или заполнены, а новую группу получить не удаётся. Запись отклоняется, даже если на других инстансах место есть устраните причину из раздела Раскладка группы

Команда ALTER PLUGIN ... SET для s3r_storage отклоняется

Признак. Команда ALTER PLUGIN ... SET с параметром сервиса s3r_storage завершается ошибкой.

Причина. Новое значение нарушает правило проверки конфигурации. В сообщении указано нарушенное правило и сказано, что сделать. Чаще всего отклоняются:

  • изменение s3r_storage.disks после регистрации дисков;
  • изменение схемы избыточности яруса, в котором уже есть группы.

Что делать. Диски меняйте действиями API управления. Схема избыточности яруса с группами не меняется (см. Что нельзя изменить после установки). Остальные правила перечислены в разделе Сервис s3r_storage.

Настроен TLS на слушателе s3r_storage, плагин не загружается

Признак. После настройки TLS на слушателе s3r_storage плагин не загружается.

Причина. Раздел tls задан без ca_file. Сертификат подтверждает право узла запрашивать фрагменты, поэтому цепочка без удостоверяющего центра не принимается.

Что делать. Укажите ca_file в разделе tls (см. Шифрование трафика).

Неясно, шифруется ли обмен фрагментами

Что делать. Найдите в журнале инстанса строку chunk endpoint serving on .... Её окончание отвечает на вопрос:

Окончание строки Что означает
over mutual TLS обмен шифруется
over plaintext; carry it over a trusted network обмен не шифруется

Растёт время ответа на малых объектах

Признак. Растёт время ответа на запросы к малым объектам.

Что проверить. Метрики s3r_bridge_wait_seconds и s3r_bridge_queue_depth по меткам pool. Они показывают очереди, в которых обращения к таблицам ждут транзакционного потока (см. Зачем нужен отдельный сервис для таблиц).

Что видно Причина Что делать
растёт очередь пулов pool="local" и pool="routed" транзакционный поток достиг предела пропускной способности. Рост глубины очереди виден раньше, чем рост задержки запросов время ожидания зависит от параметров bridge_queue и bridge_fibers сервиса s3r_meta. Их изменение вступает в силу только при следующем запуске сервиса (см. Сервис s3r_meta)
очередь к пулу catalog при пустых очередях local и routed задержка Raft в сформированном кластере запросы GetObject и PutObject она не задерживает

Ожидание в пулах catalog и background измеряется секундами и зависит прежде всего от скорости Raft. Число файберов пула background задаёт параметр bridge_fibers.

Во время начального формирования

Пока кластер формируется, очередь к пулу catalog задерживает и PutObject: запись, которой нужен новый экстент, ждёт, пока участник группы запишет число свободных экстентов через этот пул.

Чтения возвращают устаревшие данные

Признак. Только что записанный объект не находится или не виден в списке, удалённый объект ещё читается, отозванное разрешение ещё действует.

Причина. Параметр read_preference имеет значение any. Оно разрешает репликам обслуживать запросы GetObject, HeadObject, ListObjects, ListObjectsV2, ListObjectVersions, ListMultipartUploads и ListParts, и для этих запросов гарантии «чтение видит запись» нет. Реплика, которая ещё не применила изменение с мастера, отвечает по своей копии метаданных:

  • объект, записанный после последнего применённого изменения, не находится и не показывается в списке, а удалённый объект ещё находится;
  • список собирается по страницам, и каждая страница отражает копию, которая её обслужила. Ключи идут по порядку и не повторяются, но ключ из списка может вернуть NoSuchKey на запрос GetObject, который обслужила другая копия;
  • изменения ACL объекта, его тегов и условий политики по тегам начинают действовать на реплике только после того, как реплика их применит. До этого отозванное разрешение продолжает открывать доступ на чтение;
  • запрос GetObject объекта, удалённого на мастере, после повторного использования его места на дисках (через refill_after_s после удаления) возвращает внутреннюю ошибку или ответ 200 с укороченным телом. Данные другого объекта такой запрос не возвращает.

Задержка реплики не ограничена

Реплика, у которой остановилась репликация, продолжает отвечать по всё более устаревшей копии.

Запросы на изменение данных и чтения, по которым принимается решение о записи, всегда обслуживает мастер. К таким чтениям относятся чтение источника в CopyObject и UploadPartCopy, проверка пустоты бакета перед DeleteBucket и чтение частей при завершении составной загрузки.

Что делать.

  1. Проверьте значение параметра read_preference. При значении leader метаданные читаются с мастера (см. Сервис s3r_meta).
  2. Проверьте состояние репликации на реплике в box.info.replication: у каждого источника поле upstream.status должно иметь значение follow, а поле upstream.lag показывает задержку в секундах.