Встречайте, Calculate LXC Container Desktop!

Представьте себе типичную организацию небольшого офиса на 4-5 рабочих мест. Вокруг кабинета проложен кабель канал, подведены компьютерные и электрические розетки к каждому столу. Роутер с пучком проводов спрятан за дверью. Системные блоки ПК пылятся на полу с торчащими проводами. Сервер стоит где-то на полке или вообще отсутствует для экономии, а файлы лежат в шаре одного из ПК. Бесперебойники - непозволительная роскошь, потому что с электричеством перебои бывают редко. Добавляем второй кабинет и получаем всё то же самое помноженное на два.

Сравним с организацией офиса на базе lxc-desktop. В офисе нет кабель канала по периметру, отсутствуют сетевые и электрические розетки на стенах возле каждого рабочего места. Столы сгруппированы в центре кабинета, вокруг рабочих мест нет хвостов из проводов. Все провода проходят под столешницей. На полке возле стола стоит ПК с несколькими видеокартами, к которым подключены мониторы.

Все системы рабочих мест работают внутри этого ПК. Скорость доступа к данным равняется скорости чтения с диска. Информация хранится на рейде, что исключает простой в случае выхода из строя жесткого диска. Там же в отдельных контейнерах работает несколько серверов - почтовый, телефония, jabber, файловый и проч. Компьютер запитан от UPS-а, что исключает простой при краткосрочном отключении электричества. Компания расширяется и арендует второй кабинет. Два ПК связаны сетью. Информация на втором продублирована.

lxc-desktop.jpg

В начале ноября мы провели два опроса Насколько вам интересна поддержка организации нескольких рабочих мест на базе одного ПК? и Каким образом лучше организовать работу нескольких пользователей за ПК? чтобы узнать интерес готового решения “из коробки” среди пользователей Calculate Linux. Одновременно мы начали вести работу в этом направлении.

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

Всё шло как по маслу. Добавляя второе рабочее место к существующим ПК проседания по производительности практически не наблюдалось. Для организации 3-4 рабочих столов достаточно было немного нарастить производительность железа. Благодаря многоядерным процессорам, отсутствию постоянной нагрузки на CPU во время работы, возможности использования различных инструментов, таких например как UKSM, использование нескольких рабочих столов показало в работе себя очень эффективно. Управлять lxc-десктопами было намного проще и безопасней, чем полноценными системами. Особенно важно то, что вы можете абсолютно безопасно обновлять системы находясь на расстоянии.

Мы начали внедрять и планировать новые кабинеты с учётом распределения рабочих мест вокруг одного системного блока (см. фото).

Внезапно выявилось одно непреодолимое препятствие на пути перевода машин на систему состоящую из Calculate Linux Container + Calculate Container Desktop Xfce. Во время работы rdesktop или freerdp с терминальными Windows приложениями, последние через случайный промежуток времени (от 15 мин. до 6 часов) закрывались. Закрывались так же просто запущенные в Windows приложения при открытии рабочего стола. Падал даже “Блокнот”. Мы потратили 3 месяца на изучение проблемы, но так и не нашли какого-либо решения.

В итоге пришлось откатить установленные системы на CLDX и вернуть недостающие системные блоки. Установщик, который мы планировали написать мы разрабатывать не стали. Вместо этого подготовили руководство по установке lxc-desktop посредством утилит lxc. Немного сложнее, но ничем не хуже. С прошлого года регулярно выходят сборка как Calculate Linux Container (хост-машины), так и Calculate Container Desktop Xfce (lxc-desktop). Если вам не приходится работать с терминальными Windows приложениями, вы можете установить использовать такое решение. Мы надеемся, что возможно с вашей помощью мы рано или поздно найдём решение проблемы работы RDP клиента. Используйте телеграм-чат для обратной связи.

Руководство по установке Calculate LXC Container Desktop »

Очень интересно… а другие дистрибутивы также легко запустить в контейнере, как и lxc-desktop (CCDX)? Или надо как-то их подготавливать?

Для установки в LXC подготовлены две системы: Calculate Container Scratch и Calculate Container Desktop Xfce. Если такое решение будет востребовано, мы можем начать собирать системы с другими рабочими столами, например с KDE.

Я имел ввиду, например Devuan или Slackware… не просто запустить в контейнере для сервера, а как полноценную рабочую станцию, с видео, играми и тд… ведь расходы на контейнеры значительно меньше, чем при полной виртуализации…

А контейнер Calculate интересно было бы сделать так: минимальный хост типа CSS, и в нём контейнер с Calculate Xfce. Насколько проще всё обновлять будет, делаешь просто два контейнера, один обновляешь, а второй нет… смотришь что сломалось и тд…

Я имел ввиду, например Devuan или Slackware… не просто запустить в контейнере для сервера, а как полноценную рабочую станцию, с видео, играми и тд… ведь расходы на контейнеры значительно меньше, чем при полной виртуализации…

Конечно меньше расходы, причём в разы. Я у себя могу запустить 4-5 виртуалок прежде чем комп зависнет, контейнеры же я могу запустить десятками. Другие дистрибутивы не поддерживаются, для этого нет ни ресурсов ни желания ни потребности.

А контейнер Calculate интересно было бы сделать так: минимальный хост типа CSS, и в нём контейнер с Calculate Xfce. Насколько проще всё обновлять будет, делаешь просто два контейнера, один обновляешь, а второй нет… смотришь что сломалось и тд…

Так оно и работает сейчас!

Это просто отлично. Я имел ввиду не то, что вы будете поддерживать другие дистрибутивы, а то, что в принципе это возможно для LXC?

Мы запускали Debian 9 с кальковским ядром. Значит скорей всего он будет без проблем работать даже в LXC контейнере хост-машины кальки. Вопрос в том что сам дистрибутив желательно подготовить для установки, убрать весь лишний софт (ядро, загрузчик, системные утилиты). Для CCDX добавлены дополнительные шаблоны настроек, чтобы упростить документацию.

Ну наверное где-то есть готовые дистрибутивы для lxc? Или такое есть только для docker? В любом случае, большое спасибо, это похоже именно то, что надо… я бы вообще, на вашем месте все дистрибутивы Calculate перевёл на контейнеры, а установочный дистрибутив сделал минимальным, всё упаковал бы в iso и так давал бы скачивать.

Тогда при установке минимального CСS, в настройках спрашивалось бы, какой контейнер нужно установить и всё… а дальше всё автоматом скачивалось и человек работал бы уже в контейнере, настраивал и тд… Но тогда, наверное нужно как-то будет совместить это с утилитами Calculate…

Но и так замечательно, спасибо за подробный мануал по установке… Великолепная идея и превосходное исполнение…

Добавлено: Кстати, а что насчёт этого: https://www.calculate-linux.ru/blogs/ru/649/show
Не проще ли было всё сделать в LXD?

Установка ccs в контейнере proxmox пройдёт только если изменить в архиве rootfs.tar.xz, в файле /etc/gentoo-release, существующую строку на “Gentoo Base System release 2.4.1

Я в самом proxmox правил детект дистра - так удобнее. Вот только не очень понятно с самим CCS , в том что выложен подозрительно мало профилей есть:

[35] calculate:default/amd64/18/desktop (stable)
[36] calculate:default/amd64/18/server (stable)
[37] container:CCS/amd64 (dev) *
[38] container:CCDX/amd64 (dev)

да и те DEV.

Профиль Calculate Linux включает в том числе шаблоны определяющие список пакетов. В контейнере он несколько урезан. Для разделения обычных профилей и контейнерных используются разные оверлеи. У обычных систем подключен оверлей distros, у контейнерных container. Dev поправим.

Понятно. Еще вопрос - а есть ли где документация разработчика , описывающая основные тонкости calculate? На вики вроде только по шаблонам. Хотел зделать вариант дистра типа CLC , (только полностью для запуска на сервере и доступом по RDP/SPICE) , CLC не устроил тем что всеже много всего лишнего включено и нет некоторых нужных вещей… Пока поступил традиционно - собрал на Gentoo. Но может кому пригодился бы такой вариант (сильно подробного руководства не надо - стаж с gentoo > 15 лет :slight_smile: . Тоесть только calculate - specific , где что лежит , шаблоны (уже есть) , подключаемые оверлеи (в каких случаях) , система сборки дистра , бинарные пакеты - специфичны ли для каждого варианта или одинаковы (одни USE флаги). Ну и что еще есть особенного.)

Под CLC вы имеете ввиду контейнер или хостовый образ? Просто для этого проекта к сожалению ни установочный образ ни контейнер уже не собираются. Оставлен CSS на содержащий минимальный набор ПО.

По документации есть только все что на вики и на старом сайте. По поводу оверлеев, сейчас подключаются container либо distros, calculate и portage. Вынос distros и container в отдельный оврелей был сделан для того, чтобы проще было форкнуть и заменить своим оверлеем, сформировать состав пакетов и все необходимые настройки начиная от USE флагов и масок и заканчивая переменными, настройками утилит и шаблонами.

Бинарный репозиторий единый и содержит пакеты собранные с разными USE флагами в основном отличающимися сборкой для calculate:desktop и calculate:server. Сборка дистрибутива выполняется утилитами cl-builder*. Пример можно посмотреть в видео https://www.youtube.com/watch?v=zYg_jeME1Nc

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