Давайте я еще дам немного теории, а потом перейду уже к "лабораторным работам".
Итак, как я расписал в посте про железо нам для шлюзов нужны компьютеры с процессорами Intel Xeon. Что же в них такого нужного нам? А нужное это то, что во-первых эти процессоры имеют достаточное количество ядер и потоков, те. "процессоров внутри процессора" и умеют в аппаратную виртуализацию. Вот про последнюю сейчас и поговорим.
Виртуальные машины was ist das? Это программная система позволяющая запускать "гостевые системы" на базе хоста. Хост обычно включает в себя какую-либо операционную систему и гипервизор. Например можно поставить Linux или NetBSD, настроить гипервизор XEN или KVM и уже "внутри него" запускать например Microsoft Windows. Т.е. гипервизор будет эмулировать аппаратное обеспечение таким образом, что Windows будет думать, что она работает на отдельно стоящем компьютере. А можно наоборот, установить серверный вариант Windows с гипервизором Hyper-V и уже под ним запустить какой-нибудь дистрибутив Linux.
В принципе Java также является виртуальной машиной, но она эмулирует не аппаратное обеспечение, а выполняет виртуализацию приложений.
Гипервизоров существует большое количество, со своими плюсами и минусами. Но есть еще такая вещь как Linux контейнеры - LXC. От гипервизоров они отличаются тем, что гостевые системы могут быть только Linux, тк. используют ядро хост-системы. Но при этом "накладные расходы" сведены к минимуму или даже к 0, тк. гипервизору не нужно ничего эмулировать, контейнер обращается непосредственно к ядру, как на отдельностоящем компьютере, но при этом он никаким образом не "мешает" любому другому контейнеру, работающему на этой же самой гостевой системе, тк. работает в своем собственном пространстве процессов. Вообще-то он может мешать если на одном сервере поселить 100500 виртуалок, но тк. сервера наши собственные, а не дядины из ДЦ, то и жадничать мы не будем.
И вот теперь перешли непосредственно к "шлюзам". Тк. все ноды работают под Debian GNU/Linux, использовать "полноценный" гипервизор не имеет никакого смысла. Хватит и LXC. Но чтобы настраивать их было просто и удобно на помощь возмем такое ПО, как Proxmox Virtual Enviroment. Это разработка из Германии, бывает в двух вариантах. Первый платный с возможностью поддержки от разработчиков, и некоторыми дополнительными репозитариями и второй абсолютно бесплатный, но все сам, сам. Форум правда есть и там коммьюнити отвечает на все вопросы, ну и разработчики тоже. Также у Proxmox есть свое ПО для сервера бэкапов, которое, внезапно, очень хорошо завязано на Virtual Enviroment. Это по сути является одной большой сюитой, размазанной по разным серверам. Ну и наконец, в бесплатной реализации существует, правда ограничена на количество, но не функционалом, возможность связать все хосты с VE в единый кластер и рулить этим всем с одной страницы в браузере.
Какие еще ништяки дает нам Proxmox VE, кроме того что позволяет запускать на одном физическом сервере несколько копий разных линуксов? При наличии кластера либо без оного, но через BackUp Server возможно переносить уже готовые виртуалки с сервера на сервер. Те. есть тестовый сервер, на нем поднимаем виртуалку, допустим для ноды Голоса, собираем, настраиваем и когда уже все готово, просто выключаем ее и готовым образом переносим на другой сервер. Там соответственно запускаем и вуаля, все работает уже на другом железе. А на тестовом настраиваем и отлаживаем следущую.
У меня после того, как я разобрался со всем этим, было просто предоргазменное состояние. Насколько это все просто, быстро и удобно. И главное абсолютно бесплатно :)
И вот теперь уже переходим непосредственно к шлюзам на голосе, как и что нужно сделать чтобы это все зажило. Следущий пост будет про установку Proxmox Virtual Enviroment на тестовый сервер. Я дам всю конфигурацию тестового сервера (надеюсь отвертку из введения вы еще не выкинули?) и со скриншотами покажу весь процесс установки и обновления на новую версию. Почему так? Просто все уже существующие у меня работают на предыдущей, а ее поддержка заканчивается в этом месяце. И мне надо будет вначале попробовать как пройдет обновление, и если все нормально, то обновить все существующие.