
Привет, ковбои и ковбойши,
Если у меня есть виртуальная машина (KVM или ESXi), обслуживающая статический контент на Apache, и веб-приложение для потоковой передачи видео на Tomcat, есть ли логика в запуске нескольких экземпляров на одной и той же виртуальной машине на одном и том же оборудовании и балансировке нагрузки между ними? Мне это кажется концептуально бессмысленным, так как при приеме одних и тех же входящих веб-запросов они будут просто делить ресурсы, которые в противном случае были бы выделены одному экземпляру, однако я могу представить себе сценарии, в которых можно использовать более высокую емкость, используя 2, 3 или более идентичных виртуальных машин, возможно, в соответствии с производительностью потоковой передачи в tomcat или чем-то подобным, однако любая причина, о которой я думаю, подразумевает плохое кодирование и обходной путь, а не наилучшую практику проектирования. Примером оборудования здесь является довольно производительная коробка, такая как HP DL380 с 8 или 12 ядрами и 64 ГБ ОЗУ, обслуживающая около 4000 одновременных медиаподключений, так или иначе.
Обновление: Что касается других преимуществ, таких как избыточность и исправление, то это не проблема, поскольку этот сценарий, скорее всего, будет воспроизведен на 100 физических машинах, все с балансировкой нагрузки.
Обновление 2: У меня также есть опасения по поводу возможности балансировки нагрузки нескольких идентичных служб из внешнего LB. Если вы отслеживаете задержку соединения и т. п. из LB, то должно быть так, что 2 виртуальные машины — одна с 5 соединениями, одна с 500долженна самом деле, похоже, что они функционируют одинаково, поскольку оба извлекают ресурсы из одного и того же пула (без закрепления ЦП виртуальной машины и т. д.). Удар по одному ящику также парализует другой, тихий, поэтому распределение соединений становится действительно ненормальным и запутанным.
Спасибо
Крис
решение1
Единственной причиной сделать это может быть, если (a) вы получаете эксплуатационные преимущества в плане исправления и т. п., или (b) вы можете обнаружить какую-то неспособность вашего гипервизора сопоставлять vCPU с реальными CPU линейно (т. е. 2 x 4 vCPU гостевых системы получают лучшую пропускную способность, чем 1 x 8 vCPU гостевой системы). Однако вы можете доказать это только через стресс или реальную производственную нагрузку.
решение2
Учитывая, что виртуальная машина может иметь лишь ограниченное количество ресурсов (4–8 виртуальных ЦП в зависимости от платформы), если вы хотите, чтобы веб-серверы имели доступ ко всем ресурсам оборудования хоста, то да, вам придется запустить несколько гостевых ОС.
Кроме того, если у вас несколько гостевых систем, вы можете отключить их для установки исправлений, не прерывая обслуживание конечных пользователей.