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

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

Чтобы определить причину неполадки, изучите логи Docker, служебных компонентов и установочного скрипта.

Предположим, некоторый контейнер Docker обслуживает один из компонентов Private Cloud. Чтобы получить лог такого контейнера, следует выполнить команду следующего вида:

docker logs %имя компонента%

Кроме того, рабочие журналы компонентов Private Сloud можно найти в веб-интерфейсе частного облака на панели администратора.

Некоторые проблемы могут быть вызваны клиентской стороной интерфейса (далее фронтенд) — в этом случае для диагностики можно воспользоваться консолью браузера.

Если вы столкнулись с проблемой при администрировании Private Cloud и информация из этого раздела не помогла ее решить, пожалуйста, свяжитесь с нашим отделом поддержки: support@anylogic.com.

В этом разделе

Timeout: Socket is not established

Эта ошибка может появиться в журнале компонента controller в связи со следующими причинами:

Чтобы идентифицировать проблему:

  1. Откройте терминал Linux.
  2. Проверьте, что все необходимые порты открыты и доступны:
    22, 80, 5000, 5432, 5672, 9000, 9042, 9050, 9080, 9101, 9102, 9103, 9200, 9201, 9202
    Для этого воспользуйтесь одной из этих команд:
    sudo lsof -i -P -n | grep LISTEN
    sudo netstat -tulpn | grep LISTEN
    sudo nmap -sTU -O <%IP-адрес Private Cloud%>
    Так, в выводе команде lsof содержится таблица; строки этой таблицы выглядят примерно так:
    sshd 9406 root 4u IPv6 10473818 0t0 TCP *:22 (LISTEN)
    sshd — это имя приложения, 22 — порт, а 9406 — номер процесса. Запись LISTEN означает, что порт открыт и доступен для новых подключений.
  3. Чтобы проверить настройки iptables, выполните следующую команду:
    iptables -L -v -n
    Если в записи об IP-адресе Private Cloud в качестве target указано DROP, это означает отказ в подключении по SSH — из-за этого компонент controller не может развернуть частное облако.

Runtime error: Out of memory

Чаще всего причиной этой ошибки является нехватка процессоров или оперативной памяти на главном узле, обслуживающем Private Cloud.

Для решения проблемы попробуйте увеличить объем доступных ресурсов в соответствии с системными требованиями Private Cloud.

Несколько служебных компонентов (balancer, executor, executor-multirun) постоянно перезапускаются

Чтобы определить причину неисправности, откройте логи контейнера Docker, обслуживающего компонент executor. Для этого выполните следующую команду:

docker logs executor

В выводе команды должно появиться такое сообщение: evaluation period has expired.

Вы можете запросить новый ключ и ввести его в интерфейсе сервера лицензий или повторно скачать пробный экземпляр Private Cloud и установить его с нуля.

Сообщение «Evaluation period has expired»

Сообщение Evaluation period has expired может появиться при заходе на частное облако Private Cloud через браузер:

Private Cloud: Evaluation period has expired

Если вы уверены, что настроили и активировали лицензию правильно, то такое поведение сигнализирует о неисправности.

  1. Проверьте соединение между частным облаком и сервером лицензий. Если сервер лицензий не запускается вновь при перезагрузке обслуживающего его узла и в логах появляется сообщение address is already in use, убедитесь, что сервер запускается не от имени root-пользователя.
  2. Найдите файл alc/controller/teamlicense-server.conf в директории, в которую установлено частное облако Private Cloud (по умолчанию — home/alcadm).
    Проверьте, что в этом файле указан адрес сервера лицензий в правильном формате: %IP-адрес сервера лицензий%:8443.
    Если содержимое файла потребовалось изменить, выполните команду перезагрузки контейнера: docker restart controller.
  3. Откройте страницу настройки сервера лицензий в браузере (находится по адресу%IP-адрес сервера лицензий%: 8080) и убедитесь, что IP-адрес вашего частного облака Private Cloud отображается в поле Private Cloud Lite Server IP.
  4. Осуществив предложенные проверки, выполните команду перезагрузки в терминале главного узла Private Cloud: docker restart rest. Подождите пару минут.

Если предложенные варианты решения не помогли, проверьте соединение между сервером лицензий и контейнерами Cloud. Это можно сделать с помощью утилит netcat (nc) и telnet. Такая команда, к примеру, может выглядеть так:

docker exec -it controller /bin/sh
nc %IP-адрес сервера% 8443
%сообщение%

Если команда возвращает P, то сервер лицензий доступен для подключения.

Проблема сохраняется? Свяжитесь с нашим отделом поддержки по адресу support@anylogic.com.

При перезагрузке компонента rest другие компоненты не запускаются автоматически

Эта проблема встречается на серверах Private Cloud, работающих на операционных системах RedHat. Признаки неисправности:

Дополнительные сведения об ошибках можно найти в журналах Docker. Чтобы ознакомиться с ними, выполните следующую команду:

journalctl -u docker

Чтобы исправить неполадку

  1. Отключите IPv6:
    sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sysctl -w net.ipv6.conf.default.disable_ipv6=1
  2. Остановите работу всех контейнеров Docker:
    docker stop $(docker ps -q)
    Важно: Выполнение данной команды остановит все контейнеры Docker, включая не связанные с работой Private Cloud. Используйте с осторожностью.
  3. Остановите служебные процессы Docker:
    systemctl docker stop
  4. Перезапустите Docker:
    systemctl docker start
  5. Перезапустите контейнер Docker, обслуживающий служебный компонент controller:
    docker start controller
    Остальные контейнеры с компонентами Private Cloud запустятся автоматически.

Компонент frontend не запускается из-за ошибки аутентификации

Эту ошибку можно обнаружить в логах контейнера, обслуживающего компонент controller. Чтобы получить к ним доступ, выполните следующую команду: docker logs controller. Если проблема появилась из-за ошибки SSH-аутентификации, вы можете попробовать запустить компонент frontend вручную:

docker start frontend

Компонент controller не запускает другие компоненты автоматически

Иногда компонент controller не запускает другие компоненты после перезагрузки, вызывая ошибки: например, Access Denied или Authentication Required. Вместе с тем ручной запуск компонентов с помощью команды docker start отрабатывает корректно.

Такое поведение может быть спровоцировано неполадками с SSH-подключением и аутентификацией. Чтобы избежать его:

Проблема с выгрузкой образов Docker

Если сервер, обслуживающий Private Cloud, соединяется с сетью через прокси, подключения к реестру Docker и локальному реестру Private Cloud могут обрабатываться некорректно.

Чтобы избежать этого, необходимо настроить Docker (англ.) таким образом, чтобы прокси-сервер, работающий по протоколу HTTP или HTTPS, использовался при подключении к URL-адресу registry-1.docker.io. В то же время, соединение с локальным реестром Private Cloud должно производиться без прокси — для этого можно использовать флаг NO_PROXY:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"
Environment="HTTPS_PROXY=http://proxy.example.com:80/"
"NO_PROXY=localhost,127.0.0.1,local.cloud.registry"

При изменении имени хоста Private Cloud сбрасывается активация

Чтобы удостовериться, что проблема не была вызвана неверной настройкой адресов, проверьте файлы /alc/controller/conf/public.json и /opt/anylogic-team-license-server/conf/serv.properties — они хранятся в установочной директории Private Cloud. Кроме того, проверьте веб-интерфейс сервера лицензий. Во всех перечисленных местах должен быть указан один и тот же адрес хоста (главного узла) Private Cloud.

Чтобы правильно настроить адреса и перезапустить компоненты:

  1. Остановите сервер лицензий, выполнив следующую команду (не от имени root-пользователя):
    sudo service anylogic-tls stop
  2. Укажите правильное имя хоста Private Cloud в файле /alc/controller/conf/public.json, находящемся внутри директории установки Private Cloud.
  3. Укажите правильное имя хоста Private Cloud в файле /opt/anylogic-team-license-server/conf/serv.properties, находящемся внутри директории установки Private Cloud.
  4. Сохраните все внесенные изменения.
  5. Запустите сервер лицензий, выполнив следующую команду (не от имени root-пользователя):
    sudo service anylogic-tls start
  6. Последовательно выполните следующие команды:
    docker stop controller
    docker stop rest
    docker start controller

Модели не загружаются в Private Cloud из-за ошибки подключения

Примечание: Эта проблема встречается в Private Cloud 2.1.2 и более ранних версиях.

Чтобы осуществить диагностику проблемы, выполните следующую команду:

telnet %IP-адрес вашего частного облака Private Cloud% 9050

Если в выводе этой команды появляется сообщение Connection closed by foreign host, убедитесь, что порт 9050 открыт и доступен для подключений как на главном узле Private Cloud, так и на компьютере с запущенным AnyLogic.

Кроме того, проверьте наличие роутеров со встроенным файрволом, систем DPI и другого оборудования для фильтрации трафика, — возможно, именно эти устройства блокируют порт.

Лог компонента controller сообщает об ошибке после обновления

Эта проблема может возникнуть после обновления частного облака Private Cloud. Ошибка миграции в компоненте controller приводит к постоянной перезагрузке компонента rest. Чтобы однозначно определить, что неполадку вызывает ошибка миграции, проверьте лог контейнера Docker, обслуживающего controller, c помощью следующей команды:

docker logs controller

В выводе команды должна появиться ошибка следующего вида:

2021-04-16 13:11:56:453 ERROR CONTROLLER - 2021-04-16T13:11:56.453 - migration REST: com.anylogic.cloud.migration.MigrationException: liquibase.exception.LockException: Could not acquire change log lock. Currently locked by 9ac02ab910d0 (172.17.0.8) since 4/8/21 11:02 PM

Кроме того, в логе контейнера, обслуживающего rest (вызывается командой docker logs rest), можно найти другую ошибку:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
[main] ERROR org.springframework.boot.SpringApplication - Application startup failed

Наиболее вероятной причиной данной неполадки является критическая неисправность (например, отключение электроэнергии), возникшая в ходе выполнения скрипта обновления.

Чтобы почистить поврежденные файлы и решить проблему:

  1. Очистите databasechangeloglock у компонента, обслуживающего компонент postgres:
    docker exec -ti -u postgres postgres psql anylogic_cloud -c 'truncate databasechangeloglock;'
  2. Перезапустите controller.
    docker restart controller

См. также

AnyLogic Private Cloud

AnyLogic Cloud

Варианты использования AnyLogic Cloud