ASP NET, NET Framework, MONO, SQL, Visual Studio | Professional Programs | Программист Еремин В.В.
(Notes) Notes (2010 год)

Модернизация Web-сервера - долой платный софт и Hyper-V.

bike В жару 2010-го года жизнь в Москве полностью остановилась и я решил занятся модернизаций своих web-серверов. Цель модернизации я определил как повышение качества работы, новое железо и полное исключение платного софта с серверов.

Дело в том, что из-за спешки я в конце прошлого года влепил на свои Web-сервера виртуалки под Hyper-V. Это решение зарекомендовало себя крайне плохо. Дело даже не в том, что микрософтовский софт опасен для любого бизнеса - Осторожно Microsoft, а в том что недавно появившийся микрософтовский клон VmWare (под названием Hyper-V) еще не достиг качества даже первой бета версии вмвары десятилетней давности.

Во-первых возникали постоянные мелкие постоянные проблемы с Linux (например мышка не работает), но это еще ладно, главное - Web-сервера под Hyper-V постоянно зависали. Суть зависания такая - сеть на самой физ-машине есть, но коммуникация между физ-машиной и виртуалками пропадает - и внутри виртуалок сети нет. Причем это происходило на всех серверах под Hyper-V что я видел.

К сожалению эта проблема не лечится перегрузкой виртуалки. Надо перегружать всю физ-машину. Понятно что это нереально, предположим на одной из физмашин сидит служба helpdesk из 15 человек. Их всех выбросит из системы, плюс пока Oracle поднимется - пройдет еще минут 10. Понятно что перегрузка физмашины в таких условия нереальна.

В принципе я большой любитель VmWare (Основы работы с VmWare, но VmWare не всегда легко становится на специфические машины с хитрыми материнками со встроенные RAID-контроллерами. Какие-то контроллеры она подхватывает автоматически, например Дешевый RAID контроллер на чипе VIA VT6421L, но на каких-то зависает еще при инсталляции. Бороться с этим на бесплатной ESXi практически невозможно - а мои материнки как раз очень хитрые, на которые инсталяция VmWare виснет.

Я попробовал поставить на эти материнки Linux - но это не удалось - во-первых дравера были только под SLES и под OpenSuse не подхватились, а во-вторых я так и не победил установку VmWare на Linux.

Поэтому вариантов особо не осталось, как только ставить VmWare Server на виндузовую прокладку. Единственное, на что я обратил внимание - чтобы виндузня была легальная и бесплатная. Как это делается я описал здесь - Знакомство с Visual Studio 2010. Ну а Vmware Server 2 (как и VmWare ESXi 4) бесплатная.

Итак, ниже скрины этого процесса (который занял целый день и еще полдня на описание). Наблюдайте, ловкость рук - и никакого мошенничества.


Сначала я вставил в сервера новые процессоры и обнаружил такое замечательное сообщение. Придется перепрошить BIOS - как вы видите, до перепрошивки было 0306, после стало 0311.



Далее прогоняю установку бесплатной Windows:



Настраиваю сеть и выполняю активацию - как видите виндузня у меня на серверах полностью бесплатная и полностью легальная. Все обновления отлично стали.



На эту бесплатную версию виндузни можно поставить только Web-сервер, DNS-сервер и терминальный сервер. Ну а по идее от виндузни ничего больше и не надо. Я добавлю только возможность бекапирования дисков.



Далее я выполнил обычные элементарные настройки - доставил Фаерфокс, русский язык, убрал windump, устаревание пароля и прочее.



Драйвера для моей материнки подтянулсь из инета сами - за исключением драйвера RAID-контроллера.



Драйвер RAID-констроллера придется поставить вручную. Драйвера ASUS ставятся в основном через дискету, я использовал USB-дискетник.



И наконец, последний этап моего апгрейда web-сервера - собственно установка на эту виндузовую прокладку VmWare Server 2:



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



Итак оглянемся - поднят довольно мощный одноюнитовый web-сервер на экономичном процессоре Intel 9300 с 8-ю GB памяти и 2 ТB дисковой памяти (из них 1,4 TB на RAID5). Все поднято на абсолютно легальном и бесплатном софте. Осталось только поднять виртуалки - которые все тоже совершенно легальны и бесплатны.



Поскольку VmWare в данном случае устанавливается не на голую машину, а на прокладку из виндузни, то надо понять как смапировать сетевые интерфейсы самой VmWare Server 2 на сетевые интерфейсы виндузни, а потом дать виртуалкам доступ к сетевым интерфейсам вмвары.

В моем случае моя мамка имеет четыре сетевые карты (драйвера к которым подтянулись из инета сами) - на второй интерфейс физ-машины я завел инет. После установки вмвара сама автоматически попыталась привязаться к первому сетевому интерфесу, но у меня он пока отключен.



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



Теперь (когда сетевой интерфейс физмашины привязан к сетевому интерфейсу вмвары не автоматически, а правильно) - можно подать этот интерфейс вмвары VmNet0 на сетевую карту виртуалки.



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



В основном все виртуалки поднимаются конечно на Linux (общую инструкцию смотрите тут - Установка и начальное конфигурирование OpenSuse Linux). Если какая-то виртуалка предназначена не для себя, а для клиентов хостинга, то для клиентов надо организовать доступ (минуя VmWare). При наличии прямого сетевого роутинга в эту машину, это быстрее всего делается с помощью RealVNC, а при отсутствии прямого сетевого роутинга на фаерволе можно дать доступ к этой машине с помощью TeamViewer:




В момент, когда я писал эту заметку - я поставил на описанном Web-сервере средство коллективного доступа к коду Subversion (вместо какого-то ублюдочного Team Foundation Server, который когда-то стоял на этом сервере). Вот как это происходило - я доставил нужные пакеты, примонтировал новый диск (на котором разместил репозиторий SVN), доставил в апач два модуля, понимающие директивы Subversion, сконфигурировал виртуальную директорию Апача, в которой будет работать Subversion, создал каталоги на новом примонтированном диске и создал сервисом Subversion в нем новый репозиторий для своего нового проекта, cоздал SVN-юзера, расписал нужные права Апача на файл с паролями, создал собственно хеш пароля, проковырял дырочку в фаерволе, открыл свой новый проект в Visual Studio 2010 и зачекал свой новый проект в созданный репозиторий.



Многие важные сервера я уже успел описать существенно подробнее, чем в этом коротком скринкасте - например Поднимаем на хостинге MySQL и PostgreSQL сервера, Настройка HTTP и FTP-серверов в Linux (Apache/vsftpd), сервер коллективного доступа Subversion я уже описал подробнее здесь Избавляемся от Team Foundation Server), File Share тоже поднимается обычно на Linux (Настройка Samba File Server в OpenSuse). Web-сервер для .NET тоже можно поднять на Linux - (Low cost and platform independent ASP.NET - be free with MONO), но учитывая что Windows Web Server распространяется микрософтом бесплатно - можно для .NET в порядке исключения поднять одну виртуалку и на виндузне.

И последнее, что я хотел бы заметить по поводу серверов на хостинге - неоходимо тчательно контроллировать их как на предмет температуры (особенно тонкие сервера) и на предмет производительности. Подход здесь примерно такой как я описывал в заметке Настройка производительности SQL-сервера - необходимо хотя бы отбалансировать загрузку дисков при обычной работе пользователей. Хоть виндузня и не вмвара, но в ней тоже кое что можно увидеть. Вот в этом моем сервере у меня получилось 6 дисков, из них четыре в RAID5 (которые пишет втрое медленнее, но читает быстрее). Я посмотрел как обычно работают юзера (на среднем скрине), на левом скрине я зачекал проект в SVN, а на последнем рисунке я специально придавил диск адской операцией копирования - чтобы посмотреть до какого размера будут нарастать очереди на запись. Как видите диски просто захлебнулись - очередь запросов на запись выросла до ста, среднее время отклика операции записи до 0,4 секунды, а производительность диска до 114 Мегабайт в секунду. По итогам такого анализа надо принять решение о правильном размещении виртуалок на физических дисках (или о приобретениии более толстого сервера с бОльшим количеством дисков).



Повторюсь, я использовал здесь виндузню исключительно по той причине, что на указанный выше RAID-контроллер нет драйвера под OpenSuse и потому что VmWare виснет при инсталяции на этой материнке. Если VmWare идет на материнке сразу - то ни малейшего смысла в дополнительной Windows-прокладке под вмварой нет вообще. Ведь виндузня - самая убогая из широкодоступных операционных систем во всех смыслах. Например виндузня умеет работать только с одним шлюзом. Например у вас два провайдера (два роутера) и два их шлюза в сети: 192.168.0.1 и 192.168.1.1 - предположим что вы завели на один сетевой интерфейс физического кампутера одного провайдера с шлюзом 192.168.0.1 (например публичный вход), а на второй сетевой интерфейс того же кампутера завели второго провайдера со шлюзом 192.168.1.1 (например интерфейс администратора хостинга). VmWare будет работать в такой обычной и распространенной конфигурации превосходно - даже если половину виртуалок в ней вы сконфигурите на один шлюз, а половину на другой. А под виндузней работа в этой совершенно обычной конфигурации невозможна вообще и всем виртуалкам на кампе с VmWare 2 придется смотреть в тот же самый шлюз (в который смотрит виндузня физического кампутера). Но иногда (как в описанном тут моем случае) для оборудования тупо не существует драйверов под Linux или VmWare - именно в этом случае и нужна прокладка на оборудование из виндузни.



Комментарии к этой страничке ( )
ссылка на эту страничку: http://www.vb-net.ru/WebServer/index.htm
<На главную>  <В раздел ASP>  <В раздел NET>  <В раздел SQL>  <В раздел Разное>  <Написать автору>  < Поблагодарить>