Новая книга Андрея Маркелова

Андрей, в прошлом известный преподаватель по RedHat. На данный момент, работающий в народном хозяйстве Швеции в компании Ericsson. Написал новую книгу Введение в технологии контейнеров и Kubernetes. Книга доступна как в печатном виде, так и в формате pdf. Рекомендую.

З.Ы. Регулярно покупаю его книги по OpenStack.

З.З.Ы. Попробовал воспроизвести почти все примеры, которые Андрей описал в книге. Всё работает. Но есть небольшие нюансы, которые в книге не учтены.

При конфигурации кубернетес, в разделе «Подготовка операционной системы» необходимо добавить, что требуется явная загрузка модуля ядра br_netfilter.

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

vim /etc/modules-load.d/k8s.conf
  br_netfilter

и сразу руками загрузить его, что бы не делать перезагрузку системы.

modprobe br_netfilter

Иначе у вас не сработает запись единицы в файл /proc/sys/net/bridge/bridge-nf-call-iptables

И соответственно будет ругаться kubeadm init, при инициализации управляющей ноды.

З.З.З.Ы. Проблема PDF версии книги: символы тире в примерах yaml файлов — это типографские широкие тире. Простой копи-паст не получится.

Странное rancher/docker vs LXC

Решил попробовать модный в кругах девопсов кубернейт/docker. Самое простое развертывание кластера, как мне показалось — использовать rancher, который ставит кубернейт из «коробки». Да и сам запускается в контейнере docker.

Поставил на двух виртуальных машинах. Собрал, запустил. Запустил внутри приложение WordPress (nginx, php, mariadb). Немного удивился, сколько ресурсов съела эта связка. Давно у меня машинка swap на 100% не кушала. Конечно я еще не настолько влез во внутренности. Но всё же. Последний раз такой жор ресурсов с приложением по умолчанию я видел у 1С ERP 🙂

При этом, на той же самой виртуалке LXC контейнер со всем этим добром работает не напрягаясь. В общем буду разбираться. Придётся еще 16 гигов памяти прикупить 🙂

lxc, xfs и sguid bit

Забавно получилось. Оказывается если разворачивать контейнеры lxc на файловой системе xfs, внутри контейнера перестаёт работать SGID бит. Хорошо, что заметили на этапе тестирования.

Эмуляторы из Android studio и AMD Ryzen 2400G процессор

Решил тут с андроидом побаловаться. Поставил Андроид студио на Win10 и… у меня отказались работать все входящие в комплект поставки эмуляторы.

Стал разбираться в проблеме. Из заголовка понятно, что у меня не Intel процессор 🙂 Я от них отказался, после того как все мои Intel машины начали дико тормозить после патчей с исправлением проблем безопасности данных устройств. Купил не дорогой комплект на AMD Ryzen 2400G. Производительность для разработки и администрирования отличная. На нем даже играть можно без особых проблем. Во всяком случае мой игровой ноутбук на i5 gforce 760 тихо скулит в стороне.

Понятно, что х86 эмуляторы, требующие драйвера от компании Intel, работать не будут. Так-как этот драйвер на AMD не устанавливается. Но и эмуляторы arm не заработали! Крутил, вертел, так и не запустились. Пришлось железный телефон подключать.

Вот так и живем со шнурком в компутере 🙁

Как сэкономить 10 миллионов при размещении рабочих мест пользователей в облаке.

У нас есть большое количество пользователей, которым по различным причинам необходимы административные права на своём рабочем компьютере. И это является жесточайшей головной болью IT отдела. Рабочие места в основном стандартные: 1С, офис, браузер, почтовый клиент и некоторый специфичный софт (из-за которого и приходиться давать админ права).
После очередной массовой перезаливки компьютеров возник вопрос: доколе администраторы будут терпеть такое издевательство над своей нервной системой? Посидели, подумали, прикинули возможности персонала, финансовые возможности компании, риски, писки пользователей и решили перенести рабочие станции пользователей в виртуальные машины. А что? Удобно. Сделал снапшот, пользователь накосячил – восстановил из снапшота. Ляпота.

Первый вариант. Ставим виртуальную машину прямо на компьютер пользователя.

Да, это можно сделать. Ставим основной ОС Linux. Зачем покупать ещё одну лицензию Windows? Пользователю Linux не нужны права админа. У него на рабочем столе две иконки: браузер и клиент виртуальной машины. Сама виртуалка запускается как сервис при старте системы.
Вроде нормально, удаленно подключился к машинке, поигрался с снапшотами, все довольны.
Но есть большая проблема: для этой схемы нужно адекватное железо. А у многих наших пользователей стоит дешманский вариант железа. Есть даже машины с XP. Там родная ОС еле ворочается, а уж если её засунуть в виртуалку – всё сдохнет.
Покупать адекватное железо? Тут финансовый отдел мозг вынесет.

Второй вариант. Облако.

Размещать свои машины в облачных сервисах Амазон, Гугл и прочее – не наш метод. Есть множество причин, почему нам это не подходит. Поэтому надо делать свое облако.
Большой плюс: у пользователей можно оставить старое железо с Linux и двумя иконками. Лицензия Windows в большинстве случаев коробочная (так исторически сложилось), поэтому её можно без проблем перенести в виртуалки. Для новых пользователей в качестве рабочих станций можно покупать хоть Расбери ПиАй :).
Минус: надо покупать новые сервера и софт для управления всем этим хозяйством.
Второе решение нам понравилось больше.

Поиск технологии.

В качестве технологии выбрали модное ныне направление гиперконвергентной (во слово то какое выдумали!) виртуализации. У гипер есть много плюсов, расписывать их не буду.
Первоначально рассматривали решение Nutanix, поскольку оно вылазит во всех запросам по поводу гипер, да и после того, как постепенно вникли в тему – прониклись идеями Nutanix. Опять же, судя по блогам и твиттеру Nutanix новым клиентам предоставляет вкусные скидки, дает попробовать оборудование. У них есть решения для мелкого бизнеса. В общем – ляпота. (Забегая вперед скажу – все это маркетинговая шелуха.)
В итоге пришли к такой постановке задачи:
  •         Нужна система с начальной емкостью 50 виртуальных машин по 2 ядра процессора и 4-6 гигов RAM на гостевую систему.
  •         Система будет наращиваться по 10 рабочих машин.
  •         Живая миграция не нужна (но приветствуется).
  •         Лицензии нужно купить сразу или по мере расширения, и никаких новомодных ежегодных подписок.
  •         Система должна занимать минимум места в стойке.

С таким первоначальным запросом обратились к двум официальным дилерам Nutanix: в Москве и Подмосковье.
И… мы не получили от них никакого ответа! Месяц нас кормили завтраками, а потом мы поняли, что нас просто сливают. Наш заказ слишком мелкий? Эй! Nutanix ваши дилеры портят вам бизнес и репутацию!
Тогда мы решили забить на Nutanix и их официальных дилеров и обратиться к крупному интегратору. Тут было совсем другое отношение к клиенту: ответы молниеносные, развернутые с описанием на уровне «покажи руководству – они это смогут понять». Прелестно.
Правда вместо Nutanix нам предложили решение на HPE SimpliVity. (Эй! Nutanix с вами не хотят связываться даже интеграторы). Учитывая наши задачи, мы никогда не достигнем ограничений, которые есть у SimpliVity.

Цена вопроса.

В итоге нампосчитали конфигурацию: 2 сервера SimpliVity, VMw Horizon, Windows Server Datacenter Edition, SQL Server.

Почему Windows Server? Потому что если в виртуалки засовывать Windows 10 и подключаться к ним по RDP нам ежегодно придется покупать соответствующие CAL лицензии для работы с виртуальной машиной. А так одинраз купил CAL лицензию доступа к серверу и не морочишь себе голову.
В стойке такое решение занимает 9U: 2 сервера по 3U и три коммутатора по 1U.
Первоначальные затраты 50 рабочих мест: около 10 000 000 (цены на конец 2017 года). На 200 пользователей (планка к которой мы хотели прийти в результате): 15 500 000 рублей. Без учета стоимости услуг интегратора.
Итого одно рабочее место: 75500 рублей.

И тут мы решили включить мозг!

Цена за рабочее место оказалась гораздо выше стоимости покупки новой машины для пользователя! Первоначальное вложение в систему просто огромное. С такими цифрами к начальству не пойдешь. Ну нет никакого экономического эффекта от внедрения новой технологии. Да и 10 лямов сразу никто никогда нам не даст! Это же целый 600-й мерин в дешманской комплектации! А итоговая система – это почти Майбах! И никак не получиться вливать деньги малыми порциями.
Проще потихоньку покупать новые компьютеры, потихоньку меняя парк устаревших машин. Начальству все равно, что админы загибаются и портят нервы. По его (начальства) мнению – нервы админа входят в получаемую ими заработную плату.
И тут мы решили включить мозги! Интегратор – это хорошо, но они продают выгодные им решения и я это прекрасно понимаю и никаких претензий не предъявляю. А нам надо убрать нашу головную боль так, что бы и боль прошла и начальство не напрягалось.
Первое – нам не нужно большинство фишек, которые предоставляет VMw Horizon. Значит вмваре в топку.
Второе – два мощных сервера. Они были нужны для оптимизации закупки Windows Server. Дешевле получалось купить два очень мощных сервера, чем 10 не очень мощных. Поэтому в топку пошли Windows Server и мощные сервера. Ну и заодно CAL лицензии и SQL Server.
И с чем мы остались? А ни с чем. Поэтому решили плясать от наших потребностей.

Железо.

Нам нужна система с большим количеством не очень навороченных серверов с 20-22 ядрами на борту. Из расчета – 1 сервер на 10 виртуалок. С минимум дискового пространства. Все файлы пользователей хранятся на файловом сервере.
20 серверов по 1U – это дофига места в стойке. Значит, простые сервера нам не походят.
А давайте посмотрим в сторону блейд серверов. SuperMicro: MicroBlade или SuperBlade.
Выбрали двух процессорное лезвие, корзину со встроенным коммутатором и получили вот такую табличку (напоминаю, цены на конец 2017 года).



Лезвий:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Вм на лезвие:
10
Micro Blade
Итого:
429 556
630 556
831 556
1 032 556
1 233 556
1 434 556
1 635 556
1 836 556
2 037 556
2 238 556
2 439 556
2 640 556
2 841 556
3 042 556
шасси
228 556
Кол-во вм.:
10
20
30
40
50
60
70
80
90
100
110
120
130
140
лезвие
201 000
За вм.:
42 956
31 528
27 719
25 814
24 671
23 909
23 365
22 957
22 640
22 386
22 178
22 005
21 858
21 733
Вм на лезвие:
10
Super Blade
Итого:
450 896
665 178
879 460
1 093 742
1 308 024
1 522 306
1 736 588
1 950 870
2 165 152
2 379 434
2 593 716
2 807 998
3 022 280
3 236 562
шасси
236 614
Кол-во вм.:
10
20
30
40
50
60
70
80
90
100
110
120
130
140
лазвие
214 282
За вм.:
45 090
33 259
29 315
27 344
26 160
25 372
24 808
24 386
24 057
23 794
23 579
23 400
23 248
23 118



Итого: первоначальное вложение на железо на 10 рабочих мест: 429 556 рублей.
Дельта вложений для увеличения количества рабочих мест: 201 000 рублей.
Максимальная ёмкость 140 рабочих мест (на самом деле больше, одно лезвие может тянуть 12-14 виртуалок), итоговая цена вопроса: 3 042 556 рублей.

Цена рабочего места при полной комплектации: 21 733 рублей.

О! Это уже гуд. Эти цифры можно показывать руководству.

Софт.

Напоминаю, нам надо:
  •         По возможности быстро развернуть новое рабочее место.
  •         Снапшоты.
  •         Бекапы рабочих мест.
  •         Удобство для админов.
  •         Вируализировать простые рабочие станции обычных пользователей, без тяжелого софта.

Без всего остального можно обойтись.
Учитываю околонулевые знания Linux нашими админами, родные линуксовые системы виртуализации не подходят. Что же делать? Учить их Linux или рассмотреть что то ещё?
И тут я вспомнил про VirtualBox. Эй, не надо кидаться тухлыми яйцами. Вас бы поставить в наши условия вы бы со страху написали свой гипервизор :).
Ну а если серьезно у VirtualBox есть очень много преимуществ, учитывая наши конкретные запросы.
Во первых, бокс реализует все наши запросы кроме удобства для админов. Все равно надо по sshзаходить на сервер и в командной строке создавать машины, работать со снапшотами и делать прочие административные действия. Но это можно обойти. Как? Напишу ниже.
Во вторых, и это одно из ключевых его преимуществ! Бокс избавляет нас от покупки CAL лицензий для подключения по RDP к гостевой машине! Да, Вы будете подключаться к гостевой машине по RDP, но Вы будете подключаться не к RDP сервису, работающему в Windows, а к RDP сервису, работающему в VirtualBox. А для этого лицензии не надо.
В третьих, в виртуалке можно крутить любые версии Windows. Хоть Windows 10 Home, у Вас все равно будет к ней доступ по RDP.
В четвёртых, к этому сеансу могут одновременно подключаться и пользователь и админ. Причем они получают доступ с самого старта системы. Это позволяет сэкономить на софте типа radmin и его производных.
Ну и еще несколько приятных вещей.

Удобство администрирования.

Разумеется, данное решение не предоставляет всех удобств вмваре и другого коммерческого софта. Но имея в компании программиста (разумеется не 1С :)), Вы можете за 3 недели написать свой софт для управления фермой ВиртуалБоксов.

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

Всё пропало шеф.

Ну и печалька. После всех приготовлений, тестов, по не зависящим от нас обстоятельствам, внедрение системы отложили.
Вот так мы сэкономили компании 15 лямов, ничего не внедрив. А вы так можете? 🙂

VirtualBox Создание машины из командной строки.

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

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

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

# создаём виртуальную машину 
VBoxManage createvm —name «BaseOS» —register

# Определяем параметры виртуальной машины
VBoxManage modifyvm «BaseOS» —ostype RedHat_64 —cpus 2 —memory 6144 —description «Базовая машина» —boot1 dvd —audio none —vrde on —vrdeproperty «TCP/Ports=3395»

VBoxManage modifyvm «BaseOS» —vram 32 —acpi on —ioapic on

# Узнаём название интерфейса, на котором будем делать бридж
VBoxManage list bridgedifs

# Получаем, что то типа:
# Name:            Realtek PCIe GBE Family Controller
# GUID:            7acd035c-f2b6-4b03-863c-a4fb311ae5f3
# Нам нужно имя (Name)

# Подключим Ethernet адаптер
VBoxManage modifyvm «BaseOS» —nic1 bridged —bridgeadapter1 «Realtek PCIe GBE Family Controller»

# Создаём диск виртуальной машины
VBoxManage createmedium —filename /home/VMs/BaseOS/BaseOS.vdi —size 10000

# Добавляем контроллер к машине
VBoxManage storagectl «BaseOS» —name SATA —add sata 

# Присоединяем жесткий диск к контроллеру
VBoxManage storageattach «BaseOS» —storagectl SATA —port 0 —type hdd —medium /home/VMs/BaseOS/BaseOS.vdi

# Добавляем IDE контроллер, к которому можно будет присоединять образ DVD
VBoxManage storagectl «BaseOS» —name IDE —add ide

# Присоединяем dvd образ
VBoxManage storageattach «BaseOS» —storagectl IDE —port 1 —device 0 —type dvddrive —medium /home/VMs/CentOS-7-x86_64-DVD-1611.iso

Осталось только запустить машину 🙂 Можно из интерфейса, можно из командной строки

VBoxManage startvm «BaseOS»—type headless

VirtualBox API

Накидал на java скелет системы управления виртуальными машинами VirtualBox. Странно, но все работает 🙂  Буду потихоньку облагораживать и наращивать возможности.

Заодно воскресил в своей памяти JavaFX.

64bit+64bit — no win3002R2

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

Потребовалось мне установить в витуалки парочку вин 2003 серверов.

База: Xeon + CentOS 5.4 (64 bit) + Vmware Server 2.0.2 (64 bit)

Линукс в виртуалки ставился без проблем, работал тоже позитивно. Но при попытке установить туда вин 2003, в самом конце установки (по их хрономерту 3 минуты до конца установки) виртуальная машина вылетает нафиг.

И ведь как обидно! В самом конце установки! Учитывая что винда ставится, мягко говоря, не быстро 🙂

Ну думаю, vmware чето накрутила в новом серваке. Решил попробовать встроенный qemu-kvm. Прикольно, но точно так же, валит винда виртуалку в корку 🙂 Вообщем не понятно.

Убил на разные эксперименты три дня. Все лечится переходом на 32-битные версии CentOS и Vmware. Пришлось опять ехать к заказчику и переустанваливать базу.

Однако, очень странно это, учитывая, что 2008 туда становится нормально.

З.Ы. Но лучше из всего что я видел на данный момент — это как Fedora работает в виртуалке в Fedore 🙂 Просто песТня!

Vmware Server 2

Наконец то дошли руки до vmware server 2. Прикольная штука.
На выходных поменяю VM на своих машинах на 2-ю версию.

Из явных (для меня) плюсов, нет надобности ставить отдельный клиент на машинах слушателей.

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