Скрипт и поясняющее видео сборки гипервизора контейнеров LXD из исходных кодов (мастер-ветка)


Виртуализация серверов и рабочих станций в Windows и Linux - Hiperv, KVM, VMWare
aptitude criu golang linux lxc lxd python ubuntu видео
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 3 недели, 5 дней)

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

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

Сборка гипервизора контейнеров LXC (LXD) из исходных кодов и настройка окружения разработчика

Управление дисковыми хранилищами LXD из консоли

Установка языка программирования Go версии 1.8 в Ubuntu Linux

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

 

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

#!/bin/sh

## Подготовка необходимой для сборки LXD версии интерпретатора GO
add-apt-repository -y ppa:longsleep/golang-backports
apt-get update
apt-get install -y golang-1.8
apt-get install -y golang-1.6
rm /usr/bin/go
update-alternatives --quiet --remove-all go
update-alternatives --quiet --install /usr/bin/go go  /usr/lib/go-1.6/bin/go 0
update-alternatives --quiet --install /usr/bin/go go  /usr/lib/go-1.8/bin/go 10
update-alternatives --set go  /usr/lib/go-1.8/bin/go

## Устанавливаем необходимые для сборки LXC/LXD и CRIU пакеты
apt-get install -y acl dnsmasq-base git golang libacl1-dev make pkg-config rsync 
apt-get install -y squashfs-tools tar xz-utils lvm2 thin-provisioning-tools btrfs-tools curl gettext
apt-get install -y jq sqlite3 uuid-runtime bzr m4 automake autoconf
apt-get install -y protobuf-c-compiler libnet1-dev libaio-dev asciidoc libcap-dev 
apt-get install -y libnl-3-dev python-protobuf golang-gogoprotobuf-dev libprotobuf-dev apparmor-utils
apt-get install -y libcgmanager-dev libseccomp-dev docbook libtool

## Удаляем все потенциально установленные в системе пакеты (LXC/LXD/CRIU)
aptitude purge -y liblxc0 liblxc1 lxc lxcfs lxctl
aptitude purge -y lxd lxd-client lxd-tools

## Производим сборку LXC/LXD и CRIU из исходных кодов
## == Build LXC
cd /usr/src
rm -rf ./lxc/
git clone https://github.com/lxc/lxc.git
cd ./lxc/
./autogen.sh
./configure
make && make install
grep -qF -- "/usr/local/lib" /etc/ld.so.conf || echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

##== Build CRIU
cd /usr/src/
rm -rf ./criu/ 
git clone https://github.com/checkpoint-restore/criu.git
cd ./criu/
make && make install

#== Build LXD
cd /usr/src
mkdir /usr/src/go
export GOPATH=/usr/src/go
cd $GOPATH
rm -rf ./lxd/
git clone --recursive https://github.com/lxc/lxd.git
cd ./lxd
make
cd $GOPATH/src/github.com/lxc/lxd
make
cp -rf /usr/src/go/bin/* /usr/local/bin/

#== Clean Space
apt-get clean
rm -rf /usr/src/criu/
rm -rf /usr/src/go/
rm -rf /usr/src/lxc/
Моя официальная страница на FaceBook
Мой микроблог в твиттер

Сборка гипервизора контейнеров LXC (LXD) из исходных кодов и настройка окружения разработчика

Сборка гипервизора контейнеров LXC (LXD) из исходных кодов и настройка окружения разработчика

Данная статья родилась в процессе работ над проектом по тестировнию функционала горячей миграции контейнеров LXC. Мы провели сборку LXD из git-репозитария и описали шаги для повторения этих манипипуляций в дальнейшем. Дополнительно мы подготовили инструкцию по созданию окружения для наших разработчиков.


Управление дисковыми хранилищами LXD из консоли

Управление дисковыми хранилищами LXD из консоли

В предыдущей статье про базовую настройку окружения разработчика мы получили много вопросов по поводу управления дисковыми пулами и по результатам обсуждения статьи мы подготовили небольшую статью HOW-TO по управлению виртуальными дисками (и хранилищами) системы контейнерной изоляции LXD.


OpenVPN-сеть для LXD-кластера без назначения адресов клиентов (использование стороннего DHCP для управления клиентами VPN-сети)

OpenVPN-сеть для LXD-кластера без назначения адресов клиентов (использование стороннего DHCP для управления клиентами VPN-сети)

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


Набор скриптов для управления LXD-фермой

Набор скриптов для управления LXD-фермой

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


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


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .