Подключение, миграция и устранение проблем

Подключите облачный Mac к существующему рабочему процессу

Сначала проверьте данные узла и подключения в консоли, затем установите первую сессию по SSH или VNC. При проблемах с миграцией, сборкой или MLX последовательно сужайте область поиска.

3 этапа
Подключение, миграция, интеграция
2 способа подключения
SSH и VNC
365 дней
Узел работает стабильно
Руководство по первому подключению VMKeep / CONNECT
Требует проверки
01
Аккаунт и заказ

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

Консоль
02
Данные подключения

Скопируйте адрес хоста, имя пользователя и временные данные доступа; не пересылайте их посторонним.

SSH / VNC
03
Обновление данных доступа

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

Обязательно
04
Проверка базовой конфигурации

Зафиксируйте версии macOS и Xcode, свободное место на диске и результат проверки сети.

Рекомендуется
Сохраните вывод команд и время возникновения проблемы перед отправкой тикета RUNBOOK-04
Путь первого подключения

Сначала создайте воспроизводимую базовую конфигурацию подключения

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

  1. 01 Проверка аккаунта

    Проверьте данные в консоли

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

    • Зафиксируйте номер заказа и регион узла
    • Проверьте имя машины и срок аренды
    • Получайте данные подключения только из консоли
  2. 02 Установите сессию

    Выберите SSH или VNC

    Для настройки через командную строку, автоматизации и проверки журналов используйте SSH; для графического интерфейса, настроек Xcode и работы с рабочим столом — VNC. При первом подключении рекомендуется проверить оба способа.

    • Проверьте отпечаток хоста и имя пользователя по SSH
    • Проверьте адрес и разрешение экрана в VNC
    • Зафиксируйте сеть, через которую подключение прошло успешно
  3. 03 Обновите данные доступа

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

    Сразу после входа на машину смените временный пароль и добавьте одобренный командой SSH-публичный ключ в список авторизованных. Используйте отдельные ключи для каждого участника и отзывайте их при выходе из проекта.

    • Используйте отдельный достаточно длинный пароль
    • Храните отдельный публичный ключ для каждого участника
    • Ограничьте распространение приватных ключей и данных подключения
  4. 04 Зафиксируйте базовую конфигурацию

    Проверьте состояние системы и диска

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

    • sw_vers Показать версию системы
    • xcode-select -p Показать путь к toolchain
    • df -h Показать свободное место на диске
Путь миграции

Перенос с локального Mac в облачный Mac за три этапа

Порядок миграции определяет стоимость диагностики. Сначала перенесите проверяемые данные, затем восстановите фиксированные версии toolchain и только после этого подключайте CI или self-hosted runner.

01
Синхронизация данных

Переносите только необходимые файлы

Сначала клонируйте репозиторий через Git. Большие модели, кэш сборки и артефакты синхронизируйте отдельно, а после передачи проверьте размер файлов или контрольные суммы.

Входные данные
Репозиторий, файлы моделей, скрипты, необходимые настройки
Проверка
Права каталогов, правила игнорирования, свободное место на диске
Результат
Рабочая копия проекта, которую можно проверять отдельно
02
Восстановление toolchain

Зафиксируйте версии Xcode и зависимостей

Проверьте требуемые проектом версии Xcode, инструментов командной строки, Ruby, Node.js и CocoaPods. Сначала выполните минимальную сборку, затем восстановите полный кэш зависимостей.

Входные данные
Список версий, lock-файлы, скрипт установки
Проверка
Версия Xcode по умолчанию, SDK, runtime и PATH
Результат
Локальная команда сборки, выполняемая воспроизводимо
03
Подключение автоматизации

Зарегистрируйте runner и наблюдайте первый запуск

Разделите рабочий, кэш- и журнальный каталоги runner. Не запускайте первую задачу параллельно: сначала проверьте вывод этапов получения исходников, сборки, тестирования и архивации.

Входные данные
Данные регистрации runner и метки задач
Проверка
Пользователь запуска, права каталогов, код завершения при ошибке
Результат
Задача с воспроизводимым запуском и отслеживаемыми журналами
История выполнения команд

Проверьте SSH, сборку и архивацию по кратчайшему сценарию

Ниже показан порядок диагностики без проектных данных доступа. Сначала проверьте удалённую сессию, затем выполните сборку Xcode и убедитесь, что средство автоматизации вернуло успешный статус.

Сессия сборки VMKeep · zsh SESSION 01
09:14:02 $ ssh vmkeep@203.0.113.24
хост vmkeep-m4-plus регион JP оболочка /bin/zsh
09:14:18 $ xcodebuild -workspace Client.xcworkspace -scheme Client -configuration Release build

[1/4] Разрешение зависимостей пакетов

[2/4] Компиляция исходников и ресурсов

[3/4] Запуск модульных тестов

[4/4] Архивация результатов сборки

09:22:41 $ bundle exec fastlane ios build
Сборка выполнена успешно
exit=0 · archive=Client.xcarchive · duration=08m23s

Если этап завершился ошибкой, сохраните минимум 30 строк вывода до и после команды, код завершения, версию Xcode и время события. Перед отправкой тикета удалите токены, приватные ключи и исходные материалы подписи.

Интеграция CI/CD

Разделяйте runner, рабочий каталог и кэш

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

A1

Зарегистрируйте runner

Зарегистрируйте self-hosted runner под отдельным пользователем и задайте понятные метки для типов сборок. Убедитесь, что после перезапуска службы runner автоматически возвращается в сеть.

Идентичность и метки
A2

Спланируйте рабочие каталоги

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

Права и очистка
A3

Определите границы кэша

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

Версии и попадания в кэш
A4

Храните материалы подписи

Файлы подписи, пароли и токены добавляйте только на время выполнения задачи; не сохраняйте их в репозитории, обычных журналах или общих каталогах. После завершения удаляйте временные копии.

Минимальная область доступа
A5

Определите повторные попытки

Сначала разделите ошибки загрузки по сети, разрешения зависимостей, компиляции и тестов. Автоматически повторяйте этап только после проверки идемпотентности задачи.

Коды завершения и журналы
Типовые этапы CI/CD и пункты проверки
Этап Проверить в первую очередь Сохранить результат Не включать в журнал
Получение исходного кода Права репозитория, удалённый адрес, разрешение имён Хэш коммита, ветка, команда с ошибкой Исходный текст токена доступа
Установка зависимостей Lock-файл, настройки зеркала, ключ кэша Версии инструментов, вывод разрешения зависимостей Исходный текст приватных данных доступа
Сборка Xcode scheme, SDK, конфигурация сборки, целевая платформа Полная команда, код завершения, ключевые ошибки Пароль подписи
Тестирование и архивация Цель тестирования, тайм-аут, каталог артефактов Отчёт о тестах, путь архива, длительность задачи Исходные файлы материалов подписи
Диагностика сервиса MLX

От локального вывода модели к удалённому API

Сначала докажите, что модель выполняет запрос локально на машине, затем проверьте адрес прослушивания и доступность порта. Не начинайте с удалённого клиента, пока модель не загрузилась.

  1. 01

    Проверьте путь к модели

    Проверьте каталог модели, файл весов и права чтения в конфигурации. Относительные пути должны отсчитываться от фактического рабочего каталога сервиса.

    test -r /srv/models/model && echo readable
  2. 02

    Проверьте использование памяти

    Сначала загрузите модель одним запросом и зафиксируйте изменение памяти. При завершении процесса проверьте системный журнал и код выхода приложения.

    ps -o pid,rss,command -p <PID>
  3. 03

    Проверьте локальное прослушивание

    Убедитесь в адресе и порте, к которым привязан сервис. При прослушивании только loopback удалённый клиент не сможет подключиться напрямую.

    lsof -nP -iTCP:<PORT> -sTCP:LISTEN
  4. 04

    Выполните локальный запрос

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

    curl -sS http://127.0.0.1:<PORT>/health
  5. 05

    Затем проверьте удалённый API

    После успешного локального запроса проверьте удалённый доступ с авторизованного клиента. Сопоставьте время клиента, журнал сервиса и идентификатор запроса.

    curl -sS https://<YOUR-ENDPOINT>/health
Совместимость модели

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

Оценка производительности

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

Данные для тикета

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

Краткий словарь терминов

Восемь распространённых терминов подключения и диагностики

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

Физический узел
Устройство Apple Silicon, на котором фактически работают macOS и задачи, а не абстрактный вычислительный экземпляр.
Выделенный
Один заказ соответствует одной отдельной физической машине; ресурсы экземпляра не разделяются с другими клиентами.
Не виртуальная машина
Система и задачи работают непосредственно на выделенном физическом устройстве, без общей виртуализированной среды.
VNC
Удалённый способ доступа к графическому интерфейсу macOS, подходящий для настройки Xcode и работы с рабочим столом.
SSH
Защищённый удалённый канал для управления через командную строку, передачи файлов, проверки журналов и автоматизации.
self-hosted runner
Самостоятельно размещённый runner, зарегистрированный в CI-системе команды и выполняющий сборки на этом облачном Mac.
MLX
Фреймворк машинного обучения для Apple Silicon, предназначенный для преобразования, квантования, инференса и упаковки моделей в сервис.
Кэш сборки
Промежуточные файлы, сохраняемые для сокращения повторных загрузок и компиляции; неполный ключ кэша может вернуть старый результат.
Распространённые проблемы подключения

Проверяйте по симптомам, не пропуская базовые пункты

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

Не удаётся войти по SSH или VNC

Порядок проверки:Проверьте заказ и данные узла, заново скопируйте адрес хоста и имя пользователя, проверьте раскладку и символы пароля, сверьте отпечаток SSH-хоста или адрес VNC, затем повторите тест из заведомо рабочей сети.

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

Соединение часто обрывается после установления

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

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

Задержка или рывки изображения в VNC

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

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

Недостаточно места на диске или каталог сборки постоянно растёт

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

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

Локальная сборка проходит, но задача runner завершается ошибкой

Порядок проверки:Сравните пользователя запуска, переменные окружения, рабочий каталог, версию Xcode, lock-файл зависимостей и ключ кэша. Вручную выполните ту же команду от имени runner и найдите первое расхождение.

Данные для тикета:Полная команда сборки, версия Xcode, метки runner, код завершения с ошибкой, обезличенный журнал и различия между ручным запуском и автоматической задачей.

Каналы поддержки

Сначала соберите подтверждения, затем выберите способ связи

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

Список данных для тикета

Сведения, с которыми можно сразу начать диагностику

5 ЭЛЕМЕНТОВ
Номер заказа

Помогает найти нужную машину и срок аренды; не отправляйте пароль аккаунта.

Регион узла

Укажите Сингапур, Японию (Токио), Южную Корею (Сеул), Гонконг или восток США.

Время события

Укажите диапазон времени с часовым поясом, чтобы сопоставить его с подключениями и задачами.

Вывод команд

Сохраните код завершения и контекст до и после ошибки, удалив токены и конфиденциальные данные доступа.

Шаги воспроизведения

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

Существующий заказ

Отправить тикет через консоль

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

Войти в консоль и отправить тикет
До заказа и развёртывания

Подготовить письмо через страницу контактов

Подходит для вопросов о конфигурации, масштабе командного развёртывания, целевом узле и сроке аренды. Единый адрес: support@vmkeep.com.

Перейти к связи с командой поддержки
Следующий шаг

Сначала выберите конфигурацию, затем создайте базовую конфигурацию подключения

Все три конфигурации выделенных физических машин Apple Silicon работают без виртуализации; аренда доступна посуточно, понедельно, помесячно или поквартально. Актуальную доступность узлов проверяйте в консоли.