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

Траблшутинг

Установка зависла, и нет явной ошибки в логах

  1. Зафиксировать имя сервиса, на котором зависла установка (далее «целевой сервис»)

    Найти такой сервис можно, например, в веб-интерфейсе установщика, посмотрев, установка какого сервиса находится в статусе in progress.

    Также определить, на каком шаге зависла установка, можно по логам установщика. Для просмотра логов используйте следующую команду:

    sudo journalctl -fu deployer
    
  2. Проверить, какие сервисы еще не запустились и могут препятствовать установке целевого сервиса:

    sudo systemctl | grep onprem | grep -v running
    
  3. Проверить, какие сервисы необходимы для установки целевого сервиса. Убедиться, что незапущенные сервисы с предыдущего шага препятствуют установке:

    sudo cat /etc/systemd/system/<целевой сервис> | grep <незапущенный сервис>
    Wants=<название незапущенного сервиса>
    After=<название незапущенного сервиса>
    
  4. Устранить причину сбоя незапущенного сервиса.

Ниже приведен пример для случая, когда зависла установка сервиса pub1:

sudo systemctl | grep onprem | grep -v running
onpremise-container-mailapi1.service loaded activating auto-restart Mail.Ru onpremise mailapi1 service
# видим, что не запустился сервис mailapi1

sudo cat /etc/systemd/system/onpremise-container-pub1.service  | grep mailapi
# проверяем, что для продолжения установки pub1 должна завершить установка mailapi1
Wants=onpremise-container-mailapi1.service
After=onpremise-container-mailapi1.service

Если деплоер зависает на этапе запуска data-compose файла, то может помочь принудительное удаление data-container'ов на виртуальной машине:

sudo docker rm $(docker ps -a | grep data-container | awk {'print $1'})

Не завершается установка обновлений

Процесс установки обновления доходит до определенного этапа, после чего останавливается. Перезапуск автоматической установки, отдельный запуск шага, отмеченного красным цветом в веб-интерфейсе установщика, не дают результата.

ошибка установки обновления

Один из самых распространенных сценариев — проблемы на шаге генерации контейнеров. В 99% случаев не запускаются какие-то из уже установленных контейнеров. Соответственно, следует начать с их починки и запуска.

Для просмотра логов установщика используется команда:

sudo journalctl -fu deployer

Что исследовать?

  1. Получить список всех не запущенных контейнеров:

    sudo systemctl | grep onpremise | grep -v running
    
  2. Найти контейнеры со статусом auto-restrating.

    У этих контейнеров, как правило, более высокий приоритет на запуск, поэтому они тормозят запуск всех остальных контейнеров.

  3. Посмотреть логи конкретного контейнера

    sudo journalctl -eu 'имя контейнера'
    

Один из вариантов решения — удалить контейнер, чтобы systemd его пересоздал.

sudo docker rm имя контейнера

Error 1290: The MySQL server is running with the --read-only option

Примечание

В командах ниже используется директория /home/deployer/. Но если при установке Почты вы распаковали архив с дистрибутивом в другую директорию, корректно укажите ее в командах.

При установке обновлений в логах установщика:

deployer[377192]: [mirage1][add_profile_keys] add prfoile key <ParentEmail> fail: cant insert into 'mPOP.profile_keys': 
[Error 1290: The MySQL server is running with the --read-only option so it cannot execute this statement]

В веб-интерфейсе установщика красным подсвечен контейнер mirage1.

Последовательность действия для устранения ошибки:

  1. Проверить какие БД в read_only (проверяем по master)

    cat /home/deployer/main.yaml | egrep "mysql.*db:$" -A 5 | grep master | awk -F ":" '{print $NF}' | xargs -I % sh -c "echo DB=%; docker exec % mysql -uroot -e 'SELECT @@global.read_only;'"
    
  2. Снять read_only на master

    cat /home/deployer/main.yaml | egrep "mysql.*db:$" -A 5 | grep master | awk -F ":" '{print $NF}' | xargs -I % sh -c "echo DB=%; docker exec % mysql -uroot -e 'UNLOCK TABLES; SET GLOBAL read_only=OFF;’"
    

Ошибки с кодом 500

Не открывается веб-интерфейс Почты

Симптомы

  1. Веб-интерфес деплоера открывается
  2. Панель администратора открывается
  3. Почтовые ящики не открываются с ошибкой 500

Что исследовать?

Посмотреть состояние и логи контейнеров mpop и mailapi.

Последовательность действий

  1. Запустить просмотр логов контейнера
journalctl -fu onpremise-container-mailapi1
  1. Перезагрузить страницу почты в браузере.
  2. Проверить, какая информация запишется в логи.

Ошибка 500 при входе в Почту, и в логах сервиса swa есть ошибка типа Connection refused

Симптомы

В логах сервиса swa отображается информация, аналогичная приведенной ниже:

Sep 15 21:23:34 gpuat-front-02.novalocal onpremise-container-swa2[2445500]:
2023/09/15 18:23:34 [error] 22#0: *166 connect() failed (111: Connection refused) while connecting to upstream, client:
172.20.84.196, server: account.gpuat-mail.dev.onprem.ru, request: "GET /favicon.ico HTTP/1.0", upstream:
"http://127.0.0.1:8845/oldaccount", host: "account.gpuat-mail.dev.onprem.ru", 
referrer: "https://account.gpuat-mail.dev.onprem.ru/login?page=https%3A%2F%2Fe.gpuat-mail.dev.onprem.ru%2Finbox&allow_external=1&from=octavius"

Что делать?

Удалить контейнеры swa-sota и перезапустить их:

for sota_container in $(docker container ls --filter name=swa-sota* | awk -F '[[:space:]][[:space:]]+' 'NR>1 {print $6}'); do

  echo "Stopping container $sota_container"
  docker container stop $sota_container

  echo "Removing container $sota_container"
  docker rm $sota_container

  echo "Restarting service onpremise-container-$sota_container"
  systemctl restart "onpremise-container-$sota_container"

done

Почта не доходит до сервера

Проверить состояние и логи контейнера pub-mx.

Запущенный на машине Postfix – одна из возможных причин, почему контейнер pub-mx не стартует. Соответственно, Postfix нужно остановить и отключить.

systemctl disable postfix
systemctl stop postfix
systemctl mask --now postfix

Пользователи загружены, но адресная книга пустая

Проверить tarantool'ы в abookpdd-tar

docker exec -it abookpdd-tar1 bash
tarantool -a 3303
lua box.space[0]:len()
lua for k, v in box.space[0]:pairs() do print(v) end

Не создается документ в VK WorkDisk, и в меню «Создать» не хватает кнопок

не хватает кнопок

  1. В интерфейсе установщика перейти на вкладку AdminPanel.
  2. Найти в списке контейнеров mailetcd и нажать на значок шестеренки справа от названия контейнера.
  3. Выполнить шаг lightning_etcd_settings.
  4. Найти следующие контейнеры и выполнить для каждого из них команду up_container:

    • fcloud
    • beaver
    • lightning1
  5. Найти в списке контейнеров cld-docs и нажать на значок шестеренки справа от названия контейнера.

  6. Выполнить шаг upload_file_templates.