Jetpack

Jetpack требуется на каждом узле кластера. Он автоматически устанавливается Azure CycleCloud на каждой виртуальной машине, подготовленной для того, чтобы стать узлом в кластере. Jetpack предоставляет три main функции:

  • Конфигурация узла . CycleCloud использует скрипты и Chef для автоматизации настройки подготовленной виртуальной машины в рабочий узел кластера. Клиент Chef, а также необходимые ресурсы для настройки виртуальной машины внедряются в Jetpack.
  • Распределенная синхронизация — Jetpack управляет взаимодействием между узлом и сервером приложений CycleCloud. Это позволяет CycleCloud отслеживать состояние виртуальных машин подготовки и синхронизировать оркестрацию нескольких узлов в кластере.
  • HealthCheck — Jetpack использует HealthCheck для определения работоспособности виртуальных машин, чтобы можно было завершить работу неработоспособных виртуальных машин.

Установка Jetpack

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

Установщик Jetpack:

  • Распаковка файлов Jetpack в одно дерево каталогов:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Создает скрипты запуска системного инициализации, которые настраивают виртуальную машину в качестве узла кластера.
  • Устанавливает службу HealthCheck .
  • Устанавливает программу командной строки Jetpack для следующих способов:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Создание правил udev в Linux
  • Задает переменную среды CYCLECLOUD_HOME

Примечание

Если Jetpack был предварительно установлен в образе, расширение пользовательских скриптов не будет повторно устанавливать Jetpack. Вместо этого будет выполнен шаг инициализации, который проверит подключение узла к CycleCloud и запустит healthcheck службы и jetpackd , прежде чем продолжить настройку узла.

Подкаталоги Jetpack

Каталог Описание
bin Полезные двоичные файлы и скрипты.
config Определяемые пользователем и кластеризованные файлы конфигурации и скрипты.
logs Журналы, созданные путем объединения кластера и конвергенции узла, представляет особый интерес chef-client.log который содержит результаты конвергентных рецептов Chef.
run Файлы среды выполнения, созданные системой. Мы не рекомендуем обращаться к этим файлам напрямую.
system Внутренние файлы. Мы не рекомендуем напрямую использовать какие-либо файлы в этом каталоге, так как они могут значительно измениться от выпуска к выпуску.

Проверка работоспособности

Служба HealthCheck выполняет пользовательские скрипты, чтобы определить текущую жизнеспособность виртуальной машины в качестве узла кластера. Дополнительные сведения см. в документации по HealthCheck .

Программа командной строки Jetpack

Программа командной строки Jetpack предоставляет полезный набор подкомандов для управления текущей виртуальной машиной и взаимодействия с Azure CycleCloud.

Get-Help Описание
jetpack autoscale Автомасштабирование кластера, к которому принадлежит этот узел.
jetpack config Получение значения конфигурации.
jetpack converge Выполнение конвергенции Chef.
jetpack download Скачайте ресурс BLOB-объекта из проекта в службе хранилища Azure.
jetpack keepalive Задержка завершения работы системы службой HealthCheck.
jetpack log Зайдите в журнал сообщения в пользовательский интерфейс кластера CycleCloud.
jetpack run_on_shutdown Добавьте скрипт для вызова до завершения работы узла.
jetpack send Отправка произвольного сообщения AMQP на сервер CycleCloud.
jetpack shutdown Запросите завершение работы виртуальной машины с помощью CycleCloud.
jetpack test Выполнение тестов, связанных с проектами, назначенными виртуальной машине.
jetpack users Список пользователей, которыми CycleCloud будет управлять на этой виртуальной машине.
jetpack report_issue Архивация файлов журналов из виртуальной машины в службу хранилища Azure

автомасштабирование jetpack

jetpack autoscale задает целевые объекты автомасштабирования для кластера, к которому принадлежит узел. Кластеры можно масштабировать по ядрам, количеству экземпляров или пользовательским определениям.

Чтобы масштабировать до 100 ядер, выполните приведенные далее действия.

jetpack autoscale --corecount=100

Чтобы масштабировать узел GPU до 5 узлов, выполните следующие действия.

jetpack autoscale --instancecount 5 --name=gpu

Чтобы настроить автомасштабирование, на диск необходимо записать JSON-файл, содержащий определение nodearray, для масштабирования. Чтобы масштабировать 100 ядер, выполните приведенные далее действия.

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

jetpack config

jetpack config извлекает сведения, передаваемые в виртуальную машину с помощью CycleCloud. Он предоставляет:

  • все свойства системы, доступные через Ohai
  • подмножество метаданных Azure виртуальной машины;
  • сведения о родительском кластере CycleCloud.

jetpack converge

jetpack converge скачивает все проекты CycleCloud, связанные с узлом, и запускает процесс конвергенции Chef, который запускает все рецепты Chef и скрипты cluster-init для узла.

jetpack download

jetpack download скачивает большой двоичный объект, переданный вместе с проектом на узел. Необходимо указать проект, к которому принадлежит большой двоичный объект.

Чтобы скачать big-file.zip большого двоичного объекта, отправленного example-project в рамках проекта в текущий каталог, выполните следующие действия.

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive взаимодействует со службой HealthCheck, чтобы отложить завершение работы виртуальной машины из-за сбоя HealthCheck. Прекращение может быть отложено на фиксированный период или на неопределенный срок. По умолчанию завершение откладывается на один час.

Чтобы отложить завершение работы системы на один час, выполните приведенные далее действия.

jetpack keepalive

Чтобы отложить завершение работы системы на шесть часов:

jetpack keepalive 6h

Чтобы полностью отключить службу HealthCheck, т. е. задержать завершение на неопределенный срок, выполните следующие действия.

jetpack keepalive forever

Примечание

На виртуальных машинах forever Windows доступен только параметр HealthCheck.

журнал jetpack

jetpack log отправляет сообщение журнала обратно в CycleCloud. Сообщение появится в журнале сервера приложений (обычно /opt/cycle_server/cycle_server.log), журнале событий main и на странице пользовательского интерфейса кластера.

Каждое сообщение имеет два свойства: уровень и приоритет.

Свойство level указывает тип сообщения. Допустимые уровни: info, warn и error. Уровень не указывает на важность данного сообщения. Например, некоторые ошибки являются тривиальными, а некоторые информационные сообщения критически важными.

Приоритет указывает на важность сообщения. Допустимые значения приоритета : "низкий", "средний" и "высокий". На странице пользовательского интерфейса кластера отображаются только сообщения с приоритетом среднего или выше, чтобы избежать переполнения страницы сообщениями с низким приоритетом.

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

jetpack log 'system is now ready'

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

jetpack log 'system is now ready' --priority low

По умолчанию сообщения с уровнем ошибки имеют высокий приоритет. Чтобы отправить сообщение об ошибке, выполните следующее:

jetpack log 'the machine cannot process jobs' --level error

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

jetpack log 'the machine cannot process jobs' --level error --priority low

jetpack run_on_shutdown

jetpack run_on_shutdown регистрирует скрипт Bash для вызова до завершения работы узла.

Команда принимает абсолютный путь к скрипту в качестве аргумента.

При завершении работы узла в Azure, если включены уведомления о завершении , Jetpack будет уведомлен о завершении работы и попытается запустить скрипт до завершения работы узла.

Узлы должны включить уведомления о завершении , чтобы включить run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Эта команда не поддерживается для узлов Windows.

jetpack send

jetpack send отправляет сообщение AMQP в CycleCloud. Это расширенная команда, которая не рекомендуется, если вы не разрабатываете подключаемые модули для CycleCloud.

Вы можете отправлять произвольные строки или файлы с указанными ключами маршрутизации AMQP.

завершение работы jetpack

jetpack shutdown запрашивает завершение работы узла в CycleCloud. В команду можно передать параметры, чтобы указать причину запроса на завершение работы (простой и неработоспособный), а также способ завершения работы узла (завершение и освобождение).

Чтобы завершить работу неработоспособного узла, выполните приведенные далее действия.

jetpack shutdown --unhealthy

Чтобы освободить узел, выполните следующие действия.

jetpack shutdown --deallocate

Тест jetpack

jetpack test выполняет все тесты, включенные в проекты , назначенные узлу, и выводит результаты в stdout.

пользователи jetpack

jetpack users список пользователей, которыми CycleCloud будет управлять на узле. Этот список может меняться со временем по мере назначения и удаления пользователей в кластере.

Чтобы получить удобную для пользователя печать пользователей, назначенных узлу, выполните следующие действия:

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

Чтобы получить понятные для скрипта выходные данные JSON, выполните следующие действия:

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue архивирует каталоги журналов с виртуальной машины, при необходимости отправляя их в службу хранилища Azure и создавая подписанный URL-адрес для внешнего доступа. Журналы будут отправляться в учетную запись хранения Azure, на которую ссылается Locker узла. При подписании архива в службе хранилища Azure полученный маркер SAS будет иметь доступ только для чтения в течение 30 дней.

Использование:

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

Чтобы архивировать, отправьте и подпишите журналы Jetpack по умолчанию ($JETPACK_HOME/logs):

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

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

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

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

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip