Решение типовых проблем¶
Страница нужна инженеру эксплуатации, который видит отказ при установке или работе 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.
Что проверить.
- Запись
disk ... mountedв журнале инстанса. - Состояние диска в таблице
s3r_disk. - Шаг нового диска (
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 |
Группы размещения не создаются¶
Признак. Группы размещения не создаются, запись объектов отклоняется.
Что делать.
- Проверьте ответ
/-/ready. - Если кластер ещё не сформирован, разберите причины по разделу Если установка не завершается.
- Если кластер сформирован, посмотрите поле
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 и чтение частей при завершении составной загрузки.
Что делать.
- Проверьте значение параметра
read_preference. При значенииleaderметаданные читаются с мастера (см. Сервис s3r_meta). - Проверьте состояние репликации на реплике в
box.info.replication: у каждого источника полеupstream.statusдолжно иметь значениеfollow, а полеupstream.lagпоказывает задержку в секундах.