Сервер на XEN для небольшой организации.

Данная схема успешно внедрена в двух организациях мной и ещё одним весьма умным человеком, моим коллегой – Шершавиным Виталием.
—-
Имеем:
Организация в 10 человек
Сервер:
CPU: AMD Phenom™ II X4 955 Processor
RAM: 8Gb
RAID: Adaptec AAC-RAID (4 диска в RADI-10)
2 гигабитные сетевые карты.
Свитч: D-Link dgs1261t
NAS: Tsunamu S-3500 (тут хранить бэкапы будем)
Лимит на железки: 50тыр.
Сроки: неделя на покупку, установку, внедрение.
—-
Чего хочется:
Хочется переносимости и независимости от компов на рабочих местах, быстрой работы офисного и бухгалтерского ПО и 1С в частности. Так же хочется удалённый доступ ко всему этому безобразию.
—-
Почему не всеми любимую vmware? Да потому что оно не умеет прокидывать usb в гостей. Да и не люблю я эту слишком умно-привередливую штуку.
—-
Ставим на сервер линукс (я взял debian lenny), на него xen.
Внутри xen городим такой огород:
Dom0 [0] – linux, LVM, XEN :-)
DomU [1] – linux – здесь роутер, прокся, dhcp, dns
DomU [2] – linux – здесь openvz, внутри которого будут внутренние линуксовые сервисы
DomU [3] – Win2k3 – здесь терминальный сервер и файлохранилище для профилей.
DomU [4] – Win2k3 – здесь AD, dns.

Конфиги DomU:
[1]:
memory = 1024
name = "xen0gw"
vcpus = 1
vif = ['bridge=xenbr0, mac=00:16:3e:54:50:61', 'bridge=xenbr1, mac=00:16:3e:54:50:62', 'bridge=xenbr2, mac=00:16:3e:54:50:63']
disk = [ 'phy:/dev/mapper/vg0-gw,ioemu:hda,w' ]

[2]:
memory = 1024
name = "xen0ovz"
vcpus = 2
vif = ['bridge=xenbr1, mac=00:16:3e:54:51:64']
disk = [ 'phy:/dev/mapper/vg0-ovz,ioemu:hda,w' ]

[3]:
kernel = '/usr/lib/xen-3.2-1/boot/hvmloader'
builder = 'hvm'
memory = '4096'
device_model='/usr/lib/xen-3.2-1/bin/qemu-dm'
disk = ['phy:/dev/mapper/vg0-win2k3system,ioemu:hda,w',
'phy:/dev/mapper/vg0-win2k3data,ioemu:hdb,w']
name = 'win2k3term'
vif = ['bridge=xenbr2, mac=00:16:3e:7a:17:0f']
boot='c'
vnc=1
vnclisten='1.2.3.4'
vncpasswd='password'
sdl=0
usb=1
usbdevice='host:0529:0001'
vcpus=1
pae=1
acpi=1
apic=1
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
localtime='+3'

usbdevice=‘host:0529:0001’ – это HASP от 1С

[4]:
kernel = '/usr/lib/xen-3.2-1/boot/hvmloader'
builder = 'hvm'
memory = '512'
device_model='/usr/lib/xen-3.2-1/bin/qemu-dm'
disk = ['phy:/dev/mapper/vg0-win2k3adsys,ioemu:hda,w']
name = 'win2k3ad'
vif = ['bridge=xenbr2, mac=00:16:3e:7a:17:1f']
boot='c'
vnc=1
vnclisten='1.2.3.4'
vncpasswd='password'
usb=0
vcpus=1
pae=0
acpi=1
apic=0
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'destroy'
localtime='+3'

Теперь немного пояснений.
[1] – здесь чистый линукс debian. На нём squd3 прозрачный, пробросы портов, nat, dhcp, рекурсивный dns. К squid прикручены havp и adzaper. По желанию туда же крутится трафикосчиталка, шейпинг, отчёты о том, кто куда ходил. Здесь мы ещё и блокируем всякие вредные сайты типа соцсетей опять же по желанию руководства. Разносить всё по разным контейнерам считаю лишним. Одно без другого работать не будет, или будет неполноценно.

[2] – здесь линукс с openvz-ядром. Внутри openvz почтовый сервер (smtp/imap4/webmail) в одной VE-шке и jabber (xmpp) в другой. Если вдруг ВНЕЗАПНО появится какой-то ещё нужный\интересный сервис – без проблем – поднимаем, тестируем, оставляем или убиваем. Остальные сервисы продолжают работать без риска захламить систему экспериментами. Я считаю что разбивка по сервисам это правильно и удобно.

[3] – здесь винда в роли терминального сервера. На терминальном сервере стоят оба офисных монстра – MS Office и OOo3, стоит 1С, браузер (FireFox), почтовка (ThunderBird), антивирус выбран корпоративный NOD32. Если выделять более чем один проц и ставить свободные GPLPV дравера – получаем BSOD при попытке перезагрузить гостя. И ещё кучку неприятных вещей. А без GPLPV я как-то не пробовал производительность и без них некорректно работает выключение/перезагрузка из Dom0. Решено было оставить один проц. Так оно стабильно и довольно быстро работает.
На этой винде хранятся файлы от 1С и переносимые виндовые профили пользователей.

[4] – здесь винда в роли контроллера домена (а значит что и dns-сервера). На этот DNS-сервер пересылаются все запросы относительно локальных имён с рекурсивного сервера. Сервером-аплинком поставлен рекурсивный сервер. Обратка для локалки крутится на нём же. Про проц я писал уже выше.

В Dom0 вот настройки сети:
auto lo
iface lo inet loopback

auto xenbr0
iface xenbr0 inet static
address 10.2.1.4
netmask 255.255.255.0
gateway 10.2.1.254
bridge_ports eth0

auto xenbr1
iface xenbr1 inet manual
up brctl addbr xenbr1 || true; ip a a 172.17.1.66/26 dev xenbr1 || true; ip l s xenbr1 up || true; ip r a 172.17.1.0/24 via 172.17.1.65 || true
down ip a d 172.17.1.66/26 dev xenbr1 || true; ip l s xenbr1 down|| true; brctl delbr xenbr1 || true

auto xenbr2
iface xenbr2 inet manual
up ip l s xenbr2 up
down ip l s xenbr2 down
bridge_ports eth1

xenbr0 – смотрит к прову.
xenbr1 – в сеть с openvz
xenbr2 – в локальную сеть

Маленькая заметка – если не выключить всякие управления потоком (flow-control) и прочие навороты в свойствах сетевой карты в винде – сеть на отдачу УЖАСНО медленно работет. ~800М мне обещали копировать 107минут. На выяснение этого хака я потратил почти целый рабочий день.
DomU -> DomU – быстро
внешняя машина -> DomU – быстро
DomU -> внешняя машина – медленно
Вот такая магия.

На клиентских компах если винда – подключаем в домен со всеми вытекающими, если линукс – выделяем место на сервере, которое будем отдавать по nfs. Там будут лежать хомдиры. Пароли храним тоже на сервере. Если кому-то вдруг нужно с линуксом поработать в программе, которая напрочь отказывается запускаться под wine – настраиваем rdp. Хотя большинство софта довольно хорошо и стабильно работает под wine@eterosoft.
Удалённый доступ можно организовать как через openvpn (ставим на шлюзовой DomU) так и через проброс портов с помощью ssh. Авторизацию по паролям выклчюаем и просим фаервол банить IP на минуту если было больше 3 подключений к ssh за 10 секунд – привет ботам :)

Коротко – вроде всё.

| опубликовано: Фев 27, 02:43

  Помощь по Textile