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