Устранение неполадок¶
В данном разделе описаны некоторые часто встречающиеся проблемы, возникающие при эксплуатации кластера Picodata, и предложены способы их решения.
Не удается включить плагин¶
Пример ошибки
picodata> ALTER PLUGIN uroboros 0.2.10 ENABLE;
raft: proposal dropped
Причина
Raft не может обработать этот запрос. Например, в данный момент проходят перевыборы лидера кластера.
Решение
Повторить запрос через некоторое небольшое время (1–5 минут). Подробности о состоянии Raft можно посмотреть в консоли администратора Picodata:
\lua
box.space._raft_state:fselect()
\lua
box.space._raft_log:fselect()
\lua
pico.raft_status()
Если инстанс кластера работает со сбоями, то более подробную информацию можно получить в его выводе stdout.
Пользователь не может авторизоваться¶
Пример ошибки
Enter password for user:
server responded with error: PasswordMismatch: User not found or supplied credentials are invalid
Причина
- Для пользователя не был задан пароль (например, в новом кластере)
- Для авторизации используется неверный пароль
- Для авторизации используется неверный метод аутентификации
- Пользователь был ранее явно заблокирован другим пользователем
- Пользователь был ранее заблокирован из-за превышения попыток неудачного входа (например, пароль пользователя был изменен, но для авторизации по какой-то причине был несколько раз указан старый пароль)
Решение
- Если у пользователя нет пароля, то его нужно задать (пример для администратора)
- Использовать верный пароль
- Проверить, что для авторизации используется корректный
метод аутентификации. Например, для команды
picodata connect
предусмотрен параметр --auth-type, позволяющий явно указать метод аутентификации. Данный совет актуален в том случае, если ранее для пользователя этот метод был переопределен - Авторизоваться под другим пользователем с административным доступом (если его нет, то использовать файл 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