День добрый.
Люди, имеющие опыт поднятия виртуалок, на различных системах, подскажите:
Какую систему виртуализации (из opensource) поставить на сервер, с учетом, что гостевые системы преимущественно будут заниматься роутингом?
У нас на фирме сейчас зоопарк серверов (обычные PC-шки), которые занимаются всем — от роутинга пакетов, до FTP-серверов. Всё это жрет электричество, требует охлаждения, и замены деталей по мере старения.
Ввод в строй нового сервера например на замену старому требует покупки железа, установки и настройки.
Потом нужно держать оба сервера включенными какое-то время, чтобы в случае если на новом какие-то проблемы (не донастроили, столкнулись с неожиданным глюком) быстренько переключить всё на старый.
Решение видится в затаскиванию всех этих железных монстров внутрь одной машины.
Т.к. большинство наших «серверов» по мощности остались далеко позади одного современного компа на базе Core 2 Duo или Core 2 Quad — то в расчетах мы исходили из того, что на компьютер на базе Core 2 Duo E6400 @ 3GHz / 4096 RAM удасться затащить хотя бы 4 реальных машины.
В качестве кандидатов к переносу выбраны были самые важные серверы: VPN (около 500 одновременных сессий), пару софтовых Linux-роутеров, radius-сервер, и пару серверов, отоброжающих админский web-интерфейс.
Дальше начался подбор систем виртуализации. Из кандидатов были:
-OpenVZ
-KVM
-Xen
-VMWare ESXi
В результате отбора получилось следущее:
-OpenVZ. Опыт работы с ним уже был. Он вообще фактически не разграничивает системы между собой, и работает чисто на уровне эмуляции вызовов ядра. Кроме того, он не позволяет поднимать новые сетевые интерфейсы внутри системы, а значит VPN сервер на нем уже не получится. Для web-хостинга еще пойдет. Для роутеров — нет
-VMWare ESXi не смогли запустить ни на одном из доступных нам компов. Установщик либо просто не запускался, либо система после установки банально не грузилась.
-Xen — отпал потому, что в каждой гостевой машине должно быть то же ядро, что и на хост-машине. Кроме того. Собственно заставить его работать мне вообще не удалось. Может быть виной мои кривые ручки. Поэтому мы перешли к последнему кандидату…
-KVM — ему без разницы, какая гостевая машина запускается внутри хост-машины. Хоть с Виндой, хоть c OS/2. По сути полная изоляция машин друг от друга. Подкупило и то, что RedHat делает ставку именно на эту систему, и советует ее для Enterprise применений. Соответственно всем нашим требованиям оно соответствовало.
Поставили KVM. Быстро разобрались как ставить внутри системы, наладили сетку и маршрутизацию между виртуалками.
Схема была такая. У хост-машины 2 сетевых карты, внутри они связаны в следующую систему:
eth0-хост-машины — виртуальный br0 — [eth0-гостевой-машины-1 — eth1-гостевой-машины-1] — виртуальный br1 — [eth0-гостевой-машины-2 — eth1-гостевой-машины-2] — виртуальный br2 — eth1-хост-машины
Стали тестить. В тестах такая схема вела себя замечательно. Нагрузки почти никакой. Работает стабильно.
Поставили в продакшн. И тут БАЦ! Нагрузка возросла в разы.
Выяснилось, что при потоке трафика через виртуалку около 15Мбит, она жрёт 40% процессора (согласно top) на хост машине. Соответственно уже 2 машины сжирают почти всю процессорную мощность на хост-машине. При этом внутри виртуалок загрузка 1-2%.
Прочитали, что нормальные люди без virtio не живут. Это такие специальные драйвера, которые напрямую пробрасывают физическое железо в виртуалку, без эмуляции его. Собственно это уменьшает нагрузку на хост-машину.
Попробовали. И столкнулись с двумя непонятными вещами:
1) При включении virtio гостевая машина может просто упасть без объяснения причин через 3-8 часов работы
2) Нагрузка на хост-машине не уменьшилась, а осталась на прежнем уровне.
На хост-машине система Gentoo, с ядром 2.6.30, собранным вручную. Всё, что нужно для виртуализации в нее уже вкомпилено.
На гостевых машинах пробовали Ubuntu и ArchLinux. Разницы нет. Падают все.
Пробовали обновлять ядро на хост-машине, обновлять KVM, обновлять гостевую машину… пока это ничего не дало. Все работает без virtio и порой оказывается перегружено
Сейчас продолжаю эксперименты с KVM на другой машине, но уже закралась мысль опробовать Xen… и вообще, может быть я что-то делаю неправильно?
Например чтобы работало virtio, нельзя объединять интерфейс виртуалки с реальной сетевушкой в софтовый бридж… А может все правильно делаю, и так и должно быть? Такая нагрузка, такие проблемы…
В общем нужна помощь компетентных людей.
P/S: Огромная просьба, не давать советы вроде «замени всё на Cisco», «линукс фигня, ставьте фряху». Если вы немного подумаете, то поймете почему эти советы довольно далеки от реальности.
Люди, имеющие опыт поднятия виртуалок, на различных системах, подскажите:
Какую систему виртуализации (из opensource) поставить на сервер, с учетом, что гостевые системы преимущественно будут заниматься роутингом?
У нас на фирме сейчас зоопарк серверов (обычные PC-шки), которые занимаются всем — от роутинга пакетов, до FTP-серверов. Всё это жрет электричество, требует охлаждения, и замены деталей по мере старения.
Ввод в строй нового сервера например на замену старому требует покупки железа, установки и настройки.
Потом нужно держать оба сервера включенными какое-то время, чтобы в случае если на новом какие-то проблемы (не донастроили, столкнулись с неожиданным глюком) быстренько переключить всё на старый.
Решение видится в затаскиванию всех этих железных монстров внутрь одной машины.
Т.к. большинство наших «серверов» по мощности остались далеко позади одного современного компа на базе Core 2 Duo или Core 2 Quad — то в расчетах мы исходили из того, что на компьютер на базе Core 2 Duo E6400 @ 3GHz / 4096 RAM удасться затащить хотя бы 4 реальных машины.
В качестве кандидатов к переносу выбраны были самые важные серверы: VPN (около 500 одновременных сессий), пару софтовых Linux-роутеров, radius-сервер, и пару серверов, отоброжающих админский web-интерфейс.
Дальше начался подбор систем виртуализации. Из кандидатов были:
-OpenVZ
-KVM
-Xen
-VMWare ESXi
В результате отбора получилось следущее:
-OpenVZ. Опыт работы с ним уже был. Он вообще фактически не разграничивает системы между собой, и работает чисто на уровне эмуляции вызовов ядра. Кроме того, он не позволяет поднимать новые сетевые интерфейсы внутри системы, а значит VPN сервер на нем уже не получится. Для web-хостинга еще пойдет. Для роутеров — нет
-VMWare ESXi не смогли запустить ни на одном из доступных нам компов. Установщик либо просто не запускался, либо система после установки банально не грузилась.
-Xen — отпал потому, что в каждой гостевой машине должно быть то же ядро, что и на хост-машине. Кроме того. Собственно заставить его работать мне вообще не удалось. Может быть виной мои кривые ручки. Поэтому мы перешли к последнему кандидату…
-KVM — ему без разницы, какая гостевая машина запускается внутри хост-машины. Хоть с Виндой, хоть c OS/2. По сути полная изоляция машин друг от друга. Подкупило и то, что RedHat делает ставку именно на эту систему, и советует ее для Enterprise применений. Соответственно всем нашим требованиям оно соответствовало.
Поставили KVM. Быстро разобрались как ставить внутри системы, наладили сетку и маршрутизацию между виртуалками.
Схема была такая. У хост-машины 2 сетевых карты, внутри они связаны в следующую систему:
eth0-хост-машины — виртуальный br0 — [eth0-гостевой-машины-1 — eth1-гостевой-машины-1] — виртуальный br1 — [eth0-гостевой-машины-2 — eth1-гостевой-машины-2] — виртуальный br2 — eth1-хост-машины
Стали тестить. В тестах такая схема вела себя замечательно. Нагрузки почти никакой. Работает стабильно.
Поставили в продакшн. И тут БАЦ! Нагрузка возросла в разы.
Выяснилось, что при потоке трафика через виртуалку около 15Мбит, она жрёт 40% процессора (согласно top) на хост машине. Соответственно уже 2 машины сжирают почти всю процессорную мощность на хост-машине. При этом внутри виртуалок загрузка 1-2%.
Прочитали, что нормальные люди без virtio не живут. Это такие специальные драйвера, которые напрямую пробрасывают физическое железо в виртуалку, без эмуляции его. Собственно это уменьшает нагрузку на хост-машину.
Попробовали. И столкнулись с двумя непонятными вещами:
1) При включении virtio гостевая машина может просто упасть без объяснения причин через 3-8 часов работы
2) Нагрузка на хост-машине не уменьшилась, а осталась на прежнем уровне.
На хост-машине система Gentoo, с ядром 2.6.30, собранным вручную. Всё, что нужно для виртуализации в нее уже вкомпилено.
На гостевых машинах пробовали Ubuntu и ArchLinux. Разницы нет. Падают все.
Пробовали обновлять ядро на хост-машине, обновлять KVM, обновлять гостевую машину… пока это ничего не дало. Все работает без virtio и порой оказывается перегружено
Сейчас продолжаю эксперименты с KVM на другой машине, но уже закралась мысль опробовать Xen… и вообще, может быть я что-то делаю неправильно?
Например чтобы работало virtio, нельзя объединять интерфейс виртуалки с реальной сетевушкой в софтовый бридж… А может все правильно делаю, и так и должно быть? Такая нагрузка, такие проблемы…
В общем нужна помощь компетентных людей.
P/S: Огромная просьба, не давать советы вроде «замени всё на Cisco», «линукс фигня, ставьте фряху». Если вы немного подумаете, то поймете почему эти советы довольно далеки от реальности.