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

Устранение неполадок

В данном разделе описаны некоторые часто встречающиеся проблемы, возникающие при эксплуатации кластера Picodata, и предложены способы их решения.

Не удается включить плагин

Пример ошибки

picodata> ALTER PLUGIN uroboros 0.2.10 ENABLE;
raft: proposal dropped

Причина

Raft не может обработать этот запрос. Например, в данный момент проходят перевыборы лидера кластера.

Решение

Повторить запрос через некоторое небольшое время (1–5 минут). Подробности о состоянии Raft можно посмотреть в консоли администратора Picodata:

Состояние Raft
\lua
box.space._raft_state:fselect()
Журнал Raft
\lua
box.space._raft_log:fselect()
Данные о main_loop, лидере Raft-группы, терме и т.д.
\lua
pico.raft_status()

Если инстанс кластера работает со сбоями, то более подробную информацию можно получить в его выводе stdout.

Пользователь не может авторизоваться

Пример ошибки

Enter password for user:
server responded with error: PasswordMismatch: User not found or supplied credentials are invalid

Причина

  1. Для пользователя не был задан пароль (например, в новом кластере)
  2. Для авторизации используется неверный пароль
  3. Для авторизации используется неверный метод аутентификации
  4. Пользователь был ранее явно заблокирован другим пользователем
  5. Пользователь был ранее заблокирован из-за превышения попыток неудачного входа (например, пароль пользователя был изменен, но для авторизации по какой-то причине был несколько раз указан старый пароль)

Решение

  1. Если у пользователя нет пароля, то его нужно задать (пример для администратора)
  2. Использовать верный пароль
  3. Проверить, что для авторизации используется корректный метод аутентификации. Например, для команды picodata connect предусмотрен параметр --auth-type, позволяющий явно указать метод аутентификации. Данный совет актуален в том случае, если ранее для пользователя этот метод был переопределен
  4. Авторизоваться под другим пользователем с административным доступом (если его нет, то использовать файл admin.sock) и разблокировать пользователя:
ALTER USER user LOGIN;

Невозможно подключиться к инстансу

Пример ошибки

Connection refused. Is the server running on that host and accepting TCP/IP connections?
pgbench: error: could not create connection for client 192

или

{ code: 24, kind: Uncategorized, message: "Too many open files" }

Причина

Причины, по которым подключение к инстансу завершается ошибкой, разнообразны. Одна из них связана с тем, что при большом количестве подключений на стороне сервера (инстанса Picodata) может быть исчерпан лимит на файловые дескрипторы.

Решение

Увеличить лимит на файловые дескрипторы.

На уровне системы:

sudo sysctl -w fs.file-max=1048576

На уровне процесса:

sudo sysctl -w fs.nr_open=999999

Для персистентного хранения новых значений отредактируйте файл /etc/sysctl.conf, вписав в него указанные параметры, и затем примените изменения:

sudo sysctl -p

В ряде случаев может потребоваться увеличить ограничение, накладываемое на ОС со стороны Systemd. Для этого отредактируйте файл /etc/systemd/system.conf, вписав туда нужное значение параметра DefaultLimitNOFILE.

Внимание!

Увеличение количества дескрипторов увеличит потребление системных ресурсов

Выпадение инстанса из кластера

Описание

Инстанс в какой-то момент выходит из состава кластера: находится в состоянии Offline. Перезапуск инстанса не помогает.

Причина

Инстанс содержит устаревшие данные, не позволяющие ему в текущем виде присоединиться к кластеру

Решение

  • остановить проблемный инстанс
  • узнать его UUID, например, с помощью команды picodata status --peer <любой работающий инстанс>
  • исключить проблемный инстанс из кластера: picodata expel <UUID> --peer <любой работающий инстанс> --cluster-name <имя кластера>
  • удалить snap- и xlog-файлы проблемного инстанса
  • запустить проблемный инстанс

Примечание

Если инстанс управляется службой Systemd, то для остановки/запуска следует использовать соответствующие варианты команды systemctl