Файлы конфигурации configuration files

Установочный пакет Private Cloud создает профиль администратора и размещает несколько файлов конфигурации внутри директории этого профиля. Путь до этих файлов (если для профиля администратора задано имя по умолчанию — alcadm) выглядит так:

/home/alcadm/alc

Помимо файлов конфигурации, в этой директории также хранятся данные Cloud.

Внутри директории alc имеются такие подразделы:

Файлы конфигурации controller

Внутри директории controller находятся несколько файлов конфигурации в формате JSON. Примеры содержимого внизу содержат комментарии, описывающие назначение каждого из полей JSON.

applications.json

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

Каждый служебный компонент представлен в виде отдельного объекта JSON, имеющего следующий формат:

{
  "deployOrder" : 55, // Место этого приложения в очереди запуска, выполняемого controller.
  "name" : "rest", // Имя приложения.
  "image" : "com.anylogic.cloud/rest:2.2.0", // Образ Docker, используемый для создания приложения.
  "cmdArgs" : "", // Аргументы, добавляемые к концу команды запуска, выполняемой Docker.
  "volume" : null, // Том Docker, привязываемый к контейнеру приложения.
  "envVars" : [ ], // Переменные окружения, задаваемые аргументом -e в Docker. Пример: "envVars" : [ "var1=xx", "var2=yy" ]
  "portMappings" : [ { // Массив портов, который будет перенаправлен в контейнер — присваивается аргументом -p в Docker.
    "host" : 9101, // Номер порта, который будет открыт на узле (сервере, выполняющем установленное приложение).
    "container" : 9101, // Номер порта внутри контейнера.
    "protocol" : null // Используемый протокол — допускаются значения tcp или udp. Чтобы использовать оба протокола, задайте null.
  } ],
  "stateEndpoint" : null, // Если у приложения имеется конечная точка REST, с помощью которой можно узнать состояние этого приложения, укажите ее в этом поле. Пример: "/state".
  "javaArgs" : [ ] // Массив аргументов виртуальной машины Java, которые будут добавлены к команде запуска Java, выполняемой внутри контейнера. Пример: "javaArgs" : [ "-Xmx256M", "-Xms128M" ].
  "dockerArgs" : [ ] // Массив аргументов Docker, которые вы хотите передать вместе с командой запуска контейнера. Пример: "dockerArgs" : [ "--cidfile=/tmp/rest-cid", "--net=host" ].
}

Примечание: Несмотря на то, что controller присутствует в списке приложений, эта запись используется лишь из соображений согласованности и для обработки запросов на перезапуск этого компонента. Любые значения, заданные в полях описания объекта controller внутри applications.json, игнорируются.

nodes.json

В этом файле хранится массив объектов JSON, описывающих узлы — серверы, на которых размещены служебные компоненты Cloud. Каждый такой объект дополнительно содержит список компонентов, обслуживаемых описываемым сервером.

Формат объекта, описывающего узел, выглядит так:

[ {
  "host" : "10.0.103.66", // DNS-имя или IP-адрес сервера.
  "sshAccess" : {
    "method" : "PRIVATE_KEY", // Метод, используемый для подключения к SSH-интерфейсу сервера. Возможные варианты: PRIVATE_KEY, PASSWORD. Значение по умолчанию: PRIVATE_KEY — рекомендуем использовать именно эту опцию.
    "user" : "alcadm", // Имя пользователя, используемое при подключении к серверу.
    "key" : "id_rsa" // Если в method указано значение "PRIVATE_KEY", в этом поле следует указать имя файла ключа, используемого при подключении к серверу. Файл ключа можно найти внутри директории keys directory. Если в method указано значение "PASSWORD", в этом поле следует указать пароль, используемый при подключении к серверу, в формате обычного текста.
  },
  "volumeRoot" : "/home/alcadm/alc/cache", // Директория, в которой хранятся тома контейнера.
// Массив имен приложений, обслуживаемых этим узлом:
  "labels" : [ "controller", "rest", "balancer", "fileserver", "cassandra", "experiment-results", "executor", "executor-multi-run", "dynproxy", "rabbitmq", "postgres", "frontend", "statistics" ],
  "stoppable" : false, // Private Cloud игнорирует эту опцию.
  "manageable" : true // Это значение определяет, должен ли controller следить за этим узлом и запускать на нем служебные компоненты. Мы не рекомендуем изменять это значение.
} ]

secrets.json

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

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

{
  "postgres": "%случайная строка%",
  "minioAccess": "%случайная строка%",
  "minioSecret": "%случайная строка%"
}

controller.json

Главный файл конфигурации компонента controller.

Файл имеет следующий формат:

{
  "registry" : "local.cloud.registry:5000", // Сервер реестра Docker. Компонент controller получает с него данные о Docker-образах Cloud. По умолчанию, значение local.cloud.registry в файле /etc/hosts указывает на адрес 127.0.0.1.
  "environment" : "private", // Не изменяйте это значение, если используете Private Cloud.
  "controllerAddress" : { // Адрес узла, обслуживающего компонент controller, и порт. Эти значения передаются другим компонентам Cloud в виде переменных окружения.
    "host" : "10.0.103.66",
    "port" : 9000
  },
  "logServiceAddress" : { // Адрес сервера с журналами RabbitMQ.
    "host" : "-", // Если в качестве значения поля host задан символ -, то Cloud не использует отдельный сервер для хранения журналов. В этом случае для получения журналов необходимо выполнить команду Docker: logs.
    "port" : 0   },   "nodeCheck" : { // Интервал, с которым выполняются периодические проверки состояния компонентов.
    "period" : 10, // С этим интервалом компонент controller будет подключаться к узлам по протоколу SSH и проверять, какие компоненты следует запустить.
    "unit" : "SECONDS"
  },
  "nodesMonitorCheck" : { // Интервал, с которым выполняются периодические проверки состояния узлов.
    "period" : 5, // Не используется Private Cloud.
    "unit" : "SECONDS"
  }
}

Подразделы controller

Внутри директории controller хранятся следующие подразделы:

Файлы конфигурации компонентов

Эти файлы конфигурации хранятся в директории с данными controller. По умолчанию вы можете найти их по следующему пути:

/home/alcadm/alc/controller/conf

Каждый из этих файлов может использоваться несколькими служебными компонентами.

Примечание: Чтобы изменения, вносимые в эти файлы, отразились в системе, необходимо перезагрузить компонент controller. Для этого воспользуйтесь следующей командой:
sudo docker restart controller

balancer.json

Файл используется компонентом balancer. В нем хранятся очереди RabbitMQ, состоящие из задач запуска «прогонов» моделей — эти задачи затем передаются служебным компонентам executor, которые и запускают модели.

Если компонент executor не может немедленно забрать на исполнение задачу, такая задача переходит в очередь. Например, такое может произойти, когда все узлы заняты выполнением других задач.

В зависимости от причины отказа, задача может перейти в очередь «мягкого» или «жесткого» отказа.

Файл конфигурации указывает, сколько задач следует извлекать из каждой очереди — а также определяет период «простоя» между каждым таким извлечением.

{
  "softRejected" : {
  "pullTasksCount" : 10,
  "pullPeriod" : {
    "period" : 5,
    "unit" : "SECONDS"
    }
  },
  "hardRejected" : {
  "pullTasksCount" : 2,
  "pullPeriod" : {
    "period" : 15,
    "unit" : "SECONDS"
    }
  }
}

default-policy-groups.json

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

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

{
  "experimentRunLimits": "experimentRunLimits:privateCloud",
  "sandboxing": "sandboxing:soft",
  "accountType": "accountType:free",
  "experimentRunMaxMemoryMB": "experimentRunMaxMemoryMB:privateCloud"
}

email.json

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

{
  "smtpServer" : "", // IP-адрес или FQDN SMTP-сервера.
  "supportMailbox" : "", // Адрес электронной почты, на которой будут отправляться сообщения с запросами поддержки из веб-интерфейса частного облака.
  "internalNotificationsMailbox" : "" // Адрес электронной почты администратора сервера.
}

file-storage.json

В этом файле хранится конфигурация программно-аппаратной части частного облака, располагаемой в хранилище S3. Для S3 Private Cloud использует сервер MinIO — контейнер для Docker, являющийся также и файловым сервером.

Обычно нет необходимости редактировать этот файл. Ключ доступа и секретный ключ генерируются случайным образом в ходе установки Cloud.

Любые изменения в этом файле отключат Cloud от MinIO и повредят его нормальной работе.

{
  "provider" : "MINIO",
  "s3Configuration" : {
    "bucket" : "",
    "root" : "",
    "amazonConfiguration" : {
      "region" : "",
      "accessKey" : "",
      "secretKey" : ""
    }
  },
  "minioConfiguration" : {
    "bucket" : "anylogic-cloud",
    "accessKey" : "NS7GKSEk",
    "secretKey" : "Y8wdZ7hm0SiEgTuH"
  }
}

highlighted-user.json

В этом файле хранятся UUID и имя (опционально) избранного пользователя: модели, загруженные этим пользователем, будут появляться в разделе Selected Models («Избранные модели») стартового экрана Cloud.

Если на странице профиля такого пользователя не задано уникальное имя, будут отображаться значения полей First name и Last name с той же страницы (имя и фамилия).

public.json

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

Корректный адрес частного облака Cloud должен начинаться с явного указания протокола — http:// или https://. В настоящий момент возможности изменить используемый протокол без переустановки Cloud нет — соответственно, мы не рекомендуем изменять значение в этом файле.

Вы можете указать нестандартный порт для Cloud: для этого напишите его в конце адреса. Если порт не указан, используется стандартный — 80 для HTTP, 443 для HTTPS.

{
  "gatewayHost" : "http://10.0.0.1:8080"
}

registration.json

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

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

{
  "enabled" : true
}

statistics-db.json и rest.json

В этих файлах ссодержатся ссылки на SQL-базы данных Cloud: имена и реквизиты для авторизации.

По умолчанию Cloud использует две базы данных: anylogic_cloud хранит мета-данные (то есть информацию о пользователях, моделях, настройках, комментариях и так далее), а anylogic_cloud_statistics служит хранилищем для результатов «прогонов» моделей, авторизаций и сведений о работе узлов.

Не вносите никаких изменений в файл rest.json — так вы фатальным образом нарушите работу Cloud.

Вы можете редактировать файл statistics-db.json, если уверены в результате своих действий.

{
  "dbname" : "anylogic_cloud_statistics",
  "username" : "postgres",
  "password" : "JuP7spIzL3im7VGN"
}

multi-run.json

В этом файле хранится конфигурация служебного компонента executor-multi-run.

{
  "maxTasks": 1024, // Максимальное количество задач, обрабатываемых компонентом multi-run-executor единовременно. При превышении этого лимита будет произведена повторная попытка выполнения задачи.
  "maxSingleRunsInMultiRun": 65534 // Максимальное количество одиночных «прогонов» в рамках одного эксперимента, требующего многократных запусков одной модели.
}

См. также

AnyLogic Private Cloud

AnyLogic Cloud

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