Я обслуживаю 40 стационарных установленных терминалов (с сенсорным экраном, без мыши и клавиатуры) в окружении. На этих 40 ПК установлены уменьшенные версии Ubuntu и Chromium, поскольку их единственная цель - обслуживать веб-приложения в полноэкранном режиме.

Теперь вот проблема: несколько дней назад у нас произошел сбой питания, все терминалы отключились. Когда я перезапустил их все снова, ни один сенсорный экран не работал, я понятия не имею, почему. Тем не менее, переустановка системы с флешки CloneZilla, это решило проблему. Надо было много работы - подключить клавиатуру и флешку, изменить настройки BIOS для загрузки с флешки, переустановить все 40 терминалов.

Как это можно сделать лучше? Моим сценарием мечты было бы отменить одно изменение (скажем, мне бы хотелось, чтобы на каждом терминале также был небольшой сервер NodeJ, или настроить доступ по SSH). Я посмотрел на запуск серверов PXE, но это, очевидно, занимает ОЧЕНЬ много времени (образ 800 МБ x 40 занимает довольно много времени для загрузки).

У кого-нибудь есть лучшее решение о том, как эта установка может быть поддержана в лучшем виде?

2 ответа2

4

Ну, PXE не обязательно должен быть тем случаем, когда вы загружаете образ на каждый сервер во время загрузки. Фактически, более традиционное использование этого (по крайней мере, когда имело дело с системами UNIX) состояло в том, чтобы обеспечить бездисковую загрузку для систем, у которых их корневая файловая система была на NFS (или в наши дни, возможно, какая-то другая сетевая файловая система). Я не совсем уверен, насколько хорошо это может сработать для вас (он обменивает временные проблемы PXE на единственную точку отказа на сервере NFS), но, возможно, стоит посмотреть. Вы также можете делать подобные вещи с iSCSI или NBD, хотя их немного сложнее настроить.

Вы также можете посмотреть на возможность загрузки по цепочке, как это делает SystemRescueCD . При сетевой загрузке ему нужно только загрузить syslinux, ядро и начальный ram-диск по TFTP, а затем загрузить действительный образ системы по другому протоколу (например, там, где я работаю, мы делаем это по HTTP). TFTP - ужасно неэффективный протокол (он требует отдельного подтверждения каждого блока перед отправкой следующего блока и по умолчанию использует очень маленький размер блока), поэтому это может значительно ускорить процесс (у нас есть сеть, в которой я работаю установите netboot SystemRescueCD и загрузите образ системы по HTTP вместо TFTP, что сокращает время загрузки с почти 15 минут до примерно 3 в системах, на которых я тестировал его при настройке).

Учитывая, что вы используете что-то на основе Ubuntu, вы можете использовать комбинацию MAAS и Juju, так как это стандартный стек для таких вещей в Ubuntu.

Помимо всего этого, однако, если вы можете с уверенностью предположить, что массовые простои, подобные тому, что вы видели, редки (и, следовательно, вам вряд ли придется переустанавливать все 40 систем сразу), вы можете просто взглянуть на автоматизированный инструмент управления. Это не поможет при установке систем, но значительно упростит развертывание изменений в конфигурации или пакетах в системах. Мне особенно нравится Ansible для такого рода вещей, в основном из-за того, насколько просто его настроить (вам буквально просто нужен пароль без пароля SSH и один конкретный пакет python, установленный в системах, которыми вы собираетесь управлять), и тем, что что он использует декларативный (в основном) декларативный язык для выполнения задач, которые действительно легко выучить. Puppet, Chef и Salt - три других популярных варианта для такого рода вещей, но у меня никогда не было никакого личного опыта с ними, кроме простой оценки, поэтому я не могу дать какой-либо совет, какой из них может быть лучшим для ваше использование.

0

Я также рекомендую бездисковую загрузку PXE, но в качестве альтернативы вы можете легко сделать резервную копию одной системы, а затем просто восстановить ее на все 40 в этой ситуации. Это было бы быстрее, чем переустановка в 40 раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .