Troubleshooting¶
Failed to connect to bus: No such file or directory¶
Ошибка может возникнуть при исполнении команд Start / Stop / Restart или в процессе развертывания на аналогичных шагах. Связана с невозможностью пользователя управлять systemd-сервисами.
Возможные причины:
Не выполнена команда
loginctl enable-linger tarantoolМожно проверить наличием файла
/var/lib/systemd/linger/tarantool.
Отсутствуют файлы в
/runдиректории пользователяtarantool:/run/user/$(id -u tarantool)/systemdПопробовать заново вызвать команду
loginctl enable-linger tarantool, но это помогает не всегда.Пересоздать пользователя
tarantoolс тем же UID и GID.Создать файлы по аналогии.
Failure during daemon-reload: Failed to connect to bus: Operation not permitted¶
Возникает при запуске сервисов на RHEL 8, AstraLinux, RedOS.
Failed to connect to socket \”<>.control\”: [Errno 13] Permission denied¶
Ошибка может возникнуть на этапах конфигурации кластера. Например, сценарий Settings. Связана с некорректным запуском процесса Tarantool.
Проверьте наличие параметров
User=tarantoolиGroup=tarantoolв unit-файлеsystemd.
Ошибки вида: “Address already in use”¶
Известно о трех ошибках:
CartridgeCfgError: Socket bind error (
/udp): Address already in use HttpInitError: <…> Can’t create tcp_server: Address already in use
RemoteControlError: Can’t start server on
: : Address already in use
Эти ошибки можно заметить только в логах Tarantool.
Проблема вызвана тем, что при старте не может быть использован бинарный (например, 3301) или HTTP (например, 8081) порт. В результате экземпляр Tarantool не сможет сконфигурироваться и упадет с ошибкой.
Из текста ошибки определите, какой порт занят.
С помощью unix-команды
lsofопределите, какое приложение в данный момент использует данный порт.sudo lsof -i :<port>
Без sudo-прав можно посмотреть только процессы текущего пользователя.
Определите тип подключения.
# Исходящее подключение на порту 50858 TCP 192.168.100.17:50858->google.com:https (ESTABLISHED) # Ожидание входящих запросов на порту 3301 TCP localhost:3301 (LISTEN)
Дальнейшие действия зависят от найденного приложения и типа подключения.
Это исходящее подключение:
Настройте параметр сети, отвечающий за пул исходящих портов. Например, так:
echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range /etc/rc.d/init.d/network restart
Это входящее подключение:
Для Google Chrome /
etcd/nginx/ любого другого приложения определите, можно ли изменить параметры, чтобы освободить этот порт.Для Tarantool – скорее всего, у вас неверная топология кластера или запущено несколько кластеров одновременно. Обратитесь в техподдержку Tarantool за консультацией.
Failed to restart <…>: Unit not found¶
Ошибка возникает при запуске экземпляров Tarantool с помощью systemd. Как правило, на RHEL 7.
Проверьте, что на всех серверах создан
systemdсервис-файл в директории/etc/systemd/system.
sudo: timed out reading password¶
Ошибка возникает при запуске экземпляров Tarantool, nginx или etcd с помощью systemd.
Убедитесь, что корректно выставлены sudoers-права для администраторов. Права должны предусматривать запуск команд без пароля, то есть должно быть ключевое слово
NOPASSWD.Проверьте название приложения,
cartridge_app_name. Переменная используется для формирования имени сервис-файла в формате< cartridge_app_name >@.service. Если название файла не совпадает с переменной в файле-инвентареhosts.yml, исправьте это.
Failed to connect to the host via ssh: <…>: Permission denied (…)¶
Ошибка подключения к серверу по SSH. Возникает в начале исполнения сценариев, требующих подключения.
Возможные причины:
На SSH-ключе установлен пароль (passphrase). Инсталлятор на текущий момент не поддерживает интерактивный ввод пароля.
Создайте новый ключ без использования passphrase.
Публичная часть ключа не была добавлена на сервер как доверенная.
Скопируйте публичную часть на все сервера с помощью команды
ssh-copy-id.
ssh-copy-id -i ~/.ssh/mykey user@host
Другой вариант – добавить вручную в файл
~/.ssh/authorized_keysдля пользователя администратора.
Job for service <…>.service failed because the control process exited with error code¶
Возникает в процессе запуска экземпляра Tarantool.
Возможные причины:
Процесс не может создать рабочие директории.
Проверьте корректность путей в сервис-файле
systemd.Проверьте корректность всех путей из переменных в инвентаре.
Подключение через jumphost из Docker контейнера¶
Вариант 1: Конфигурационный файл SSH
Создайте конфигурационный файл и укажите необходимые значения для jumphost IP, jumphost user, IP/FQDN сервера(ов) под Tarantool, super user.
Host jump
User <jumphost user>
HostName <jumphost IP>
UserKnownHostsFile /dev/null
IdentityFile /ansible/.ssh/id_private_key
StrictHostKeyChecking no
Host <IP/FQDN>
User <super user>
ProxyJump jump
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Добавьте к команде запуска ATE подключение конфигурации с помощью опции -v (volume):
-v ${SSH_CONFIG_FILE}:/root/.ssh/config:Z
Например:
docker run --network host -it --rm \
-v ${SSH_CONFIG_FILE}:/root/.ssh/config:Z \
-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
-e SUPER_USER_NAME=${SUPER_USER_NAME} \
ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
ansible-playbook -i /ansible/inventories/hosts.yml \
--extra-vars '{
"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
"super_user":"'${SUPER_USER_NAME}'",
"tarantool_shared_become_user":"tarantool",
"tarantool_configure_logrotate":"true"
}' \
playbooks/logrotate.yml
Вариант 2: Опция ProxyCommand
Добавьте опцию ProxyCommand к переменной инвентаря ansible_ssh_common_args.
Подставьте свои значения <jumhost user> и <jumhost IP>.
ansible_ssh_common_args: -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null
-o StrictHostKeyChecking=no -o ProxyCommand="ssh -W %h:%p <jumhost user>@<jumhost IP> -i /ansible/.ssh/id_private_key
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
Команды docker run будут работать без дополнительных изменений.