пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Так как многие используют у себя в качестве платформы виртуализации Hyper-V, сегодня мы решили немного рассказать о том, как "правильно" использовать данную платформу – в плане сохранения ресурсов и просто с точки зрения логики. Рекомендации описанные ниже вполне смогут сохранить вам немного драгоценных вычислительных ресурсов. Поэтому ниже вы найдете 14 хинтов, которые могут помочь сохранить ресурсы.
Не плодите виртуальные сущности!
Первый хинт, и достаточно очевидный -не создавайте ненужных виртуальных машин и не оставляйте их запущенными! Процесс VMMS.exe постоянно проверяет статус всех виртуальных машин, в том числе и без каких-либо активных процессов, помимо ОС запущенных на них. Таким образом, на данный процесс тратятся дорогие ресурсы.
Далее, задумайтесь, сколько виртуальных коммутаторов у вас создано – подумайте, в каком случае вы можете просто использовать VLAN или другие механизмы сегментирования для логического разделения сети между виртуальными машинами. Причина такая же как и в предыдущем случае – VMMS.exe постоянно проверяет состояние виртуальных свитчей и тратит ресурсы!
Настройте антивирус так, чтобы он не проверял Hyper-V процессы и директории, так как такое ПО как антивирус постоянно производит I/O операции для файлов, и, соответственно, может отобрать ресурс у процессов, выполняемых между виртуальными машинами. То есть:
Процессы Hyper-V - VMMS.exe и VMWP.exe
Папки с виртуальными машинами - файлы с виртуальными жесткими дисками и файлы конфигурации
Папки со снэпшотами-V - снэпшоты и чекпоинты
Используйте официально поддерживаемы гостевые ОС – будет быстрее!
Старайтесь использовать только те гостевые системы, на которые возможно установить Integration Services – дополнения, которые включают в себя VMBUS и VSP/VSC компоненты, используется для значительного улучшения связи между Windows, на котором установлен Hyper-V и виртуальными машинами. Список поддерживаемых систем можно найти по ссылке: https://docs.microsoft.com
Кроме того, старайтесь хранить виртуальные машины, которые не поддерживают установку Integration Services на отдельном сервере Hyper-V. Если это невозможно – используйте отдельный виртуальный свитч. Дело в том, что они используют совершенно разные механизмы общения с оригинальной системой – коммуникации через VMBUS и коммуникации через эмуляцию. Эмуляция быстрее, но возможна только при установленных Integration Services.
Старайтесь использовать виртуальные машины Generation Type 2 (второго поколения), которые загружаются с помощью SCSI контроллера, вместо IDE (SCSI быстрее). Кроме того, машины второго поколения используют VMBUS и VSP/VSC архитектуру на boot уровне, что улучшает общую производительность.
Внимательнее относитесь к расположению виртуальных машин!
Не храните виртуальные машины на одном жестком диске вместе с системными файлами и файлами гипервизора – опять же из-за того, что ОС занимает свою долю в операциях ввода-ввывода, и у жесткого диска легко не может хватить производительности для задач, выполняемых на виртуальных машинах. Соответственно, всегда изменяйте папку хранения виртуальных машин по умолчанию на что-то иное. Изначально, путь выглядит так:C:ProgramDataWindowsHyper-VVirtual Machines
Если возможно – используйте для каждой виртуальной машины разные тома. Наличие нескольких виртуальных машин на одном логическом томе также повышает количество производимых I/O операций.
Регулярно дефрагментируйте жесткий диск перед созданием виртуального жесткого диска и просто проводите дефрагментацию разделов, где хранятся виртуальные машины.
Старайтесь использовать SCSi контроллеры для виртуальных жестких дисков – выиграйте по скорости. Для приложений вроде SQL лучше хранить логи и сами данные на разных SCSi разделах
При создании виртуальной машины лучше используйте виртуальные жесткие диски фиксированного размера – это так же даст прирост производительности.
В общем о ресурсах
В то же время, рекомендуется использовать динамически аллоцируемую оперативную память. Однако, для некоторых приложений также лучше будет использовать изначально большой объем фиксированной ОЗУ – но это применимо только к узкому ряду приложений, вроде Sharepoint.
Старайтесь использовать Windows Server Core Operating System, так как там нет графической оболочки, система потребляет меньше ресурсов.
Если же вы используете обычный Windows с обычным, всем очень хорошо знакомым GUI всегда закрывайте другие окна, приложения и так далее – все, что хотя бы теоретически может повлиять на производительность.
Виртуализация часто применяется для поиска более простого способа решения некоторых проблем, отмеченных в начальных статьях этой темы, таких как разделение трафика. Как и все в мире сетевой инженерии, здесь есть компромиссы. На самом деле, если вы не нашли компромисс, вы плохо искали. В этом разделе будут рассмотрены некоторые (хотя, конечно, не все) различные компромиссы сложности в области виртуализации сети. Основой этого обсуждения будет триада компромиссов сложности:
Состояние: количество состояний и скорость, с которой изменяется состояние в сети (особенно в плоскости управления).
Оптимизация: оптимальное использование сетевых ресурсов, включая такие вещи, как трафик, следующий по кратчайшему пути через сеть.
Поверхность: количество слоев, глубина их взаимодействия и широта взаимодействия.
Поверхности взаимодействия и группы связей общих рисков
Каждая система виртуализации, когда-либо задуманная, реализованная и развернутая, создает в некотором роде общий риск. Например, рассмотрим одну линию, по которой передается несколько виртуальных каналов, каждый из которых передает трафик. Должно быть очевидным (на самом деле тривиальным) наблюдение, что в случае отказа одного физического канала произойдет сбой всех виртуальных каналов. Конечно, вы можете просто перенаправить виртуальные каналы на другой физический канал. Правильно? Может быть, а может и нет. Рисунок 1 иллюстрирует это.
С точки зрения A и D, есть две линии, доступные через B и C, каждая из которых обеспечивает независимое соединение между хостом и сервером. В действительности, однако, и провайдер 1, и провайдер 2 приобрели виртуальные каналы через единственное соединение у провайдера 3. Когда единственное соединение в сети провайдера 3 выходит из строя, трафик может быть перенаправлен с основного пути через провайдера 1 на путь через провайдера. 2, но поскольку оба канала используют одну и ту же физическую инфраструктуру, ни одна из них не сможет передавать трафик.
Говорят, что эти два звена в этой ситуации разделяют одну общую судьбу, потому что они являются частью Shared Risk Link Group (SRLG). Можно найти и обойти SRLG или ситуации с shared fate, но это усложняет плоскость управления и/или управление сетью. Например, невозможно обнаружить эти shared fate без ручного тестирования различных ситуаций отказа на физическом уровне или изучения сетевых карт, чтобы найти места, где несколько виртуальных каналов проходят по одному и тому же физическому каналу. В ситуации, описанной на рисунке 1, найти ситуацию с shared fate было бы почти невозможно, поскольку ни один из провайдеров, скорее всего, не скажет вам, что использует линию от второго провайдера, показанного на рисунке как провайдер 3, для предоставления услуг.
Как только эти ситуации с shared fate обнаружены, необходимо предпринять некоторые действия, чтобы избежать серьезного сбоя в работе сети. Обычно для этого требуется либо вводить информацию в процесс проектирования, либо усложнять дизайн, либо вводить информацию в плоскость управления (см. RFC8001 в качестве примера типа сигнализации, необходимой для управления группами SRLG в плоскости управления, спроектированной трафиком). По сути, проблема сводится к следующему набору утверждений:
Виртуализация - это форма абстракции.
Абстракция удаляет информацию о состоянии сети с целью снижения сложности или предоставления услуг за счет реализации политики.
Любое нетривиальное сокращение информации о состоянии сети так или иначе снизит оптимальное использование ресурсов.
Единственным противодействием конечному состоянию из этих трех, является протекание информации через абстракцию, поэтому можно восстановить оптимальное использование ресурсов - в этом случае отказ одного канала не вызывает полного отказа потока трафика через сеть. Единственное решение, таким образом, - сделать абстракцию сквозной абстракцией, что снизит эффективность абстракции при контроле области действия состояния и реализации политики.
Поверхности взаимодействия и наложенные плоскости управления
В сетевой инженерии принято накладывать друг на друга два протокола маршрутизации или две плоскости управления. Хотя это не часто рассматривается как форма виртуализации, на самом деле это просто разделение состояния между двумя различными плоскостями управления для контроля количества состояний и скорости изменения состояний, чтобы уменьшить сложность обеих плоскостей управления. Это также часто встречается при запуске виртуальных наложений в сети, поскольку между головным и хвостовым узлами туннеля будет существовать нижележащая плоскость управления, обеспечивающая достижимость, и плоскость управления наложением, обеспечивающая достижимость в виртуальной топологии. Две наложенные друг на друга плоскости управления будут взаимодействовать иногда неожиданным образом. Для иллюстрации используется рисунок 2.
На рисунке 2:
Каждый маршрутизатор в сети, включая B, C, D и E, использует две плоскости управления (или, если это проще, протоколы маршрутизации, отсюда протокол 1 и протокол 2 на рисунке).
Протокол 1 (оверлей) зависит от протокола 2 (базовый) для обеспечения доступности между маршрутизаторами, на которых работает протокол 1.
Протокол 2 не содержит информации о подключенных устройствах, таких как A и F; вся эта информация передается в протоколе 1.
Протокол 1 требует гораздо больше времени для схождения, чем протокол 2.
Более простой путь от B к E проходит через C, а не через D.
Учитывая этот набор протоколов, предположим, что C на рисунке 2 удален из сети, двум управляющим плоскостям разрешено сходиться, а затем C снова подключается к сети. Каков будет результат? Произойдет следующее:
После удаления C сеть снова объединится с двумя путями в локальной таблице маршрутизации в B:
F доступен через E.
E доступен через D.
После повторного подключения C к сети протокол 2 быстро сойдется.
После повторной конвергенции протокола 2 лучший путь к E с точки зрения B будет через C.
Следовательно, у B теперь будет два маршрута в локальной таблице маршрутизации:
F доступен через E.
E достижимо через C.
B перейдет на новую информацию о маршрутизации и, следовательно, будет отправлять трафик к F через C до того, как протокол 1 сойдется, и, следовательно, до того, как C узнает о наилучшем пути к F.
С момента, когда B начинает пересылку трафика, предназначенного для F в C, и момента, когда протокол 1 сойдется, трафик, предназначенный для F, будет отброшен.
Это довольно простой пример неожиданного взаимодействия наложенных протоколов. Чтобы решить эту проблему, вам необходимо ввести информацию о состоянии конвергенции протокола 1 в протокол 2, или вы должны каким-то образом заставить два протокола сходиться одновременно. В любом случае вы по существу добавляете состояние обратно в два протокола, чтобы учесть их разницу во времени конвергенции, а также создавая поверхность взаимодействия между протоколами.
Примечание: Этот пример описывает фактическое взаимодействие конвергенции между IS-IS и BGP, или протоколом Open Shortest Path First (OSPF) и BGP. Чтобы решить эту проблему, более быстрый протокол настроен на ожидание, пока BGP не сойдется, прежде чем устанавливать какие-либо маршруты в локальной таблице маршрутизации.
Знаешь ли ты, что Asterisk Gateway Interface (AGI) делится на 3 различных вида: Enhanced AGI (EAGI), DeadAGI и fastAGI. Каждый из них имеет свои функциональные преимущества – он них и поговорим.
Enhanced Asterisk Gateway Interface (EAGI)
EAGI это более продвинутый AGI, который позволяет обрабатывать аудио – потоки с помощью файлового дескриптора (3). В действительности, с помощью EAGI вы можете создавать собственные приложения, предназначенные для анализа и выполнения различных задач со входящим аудио-потоком.
Ниже приведен пример использования EAGI в диалплане:
exten => helloworld,1,eagi(somescript.eagi)
DeadAGI
Указанное приложение выполняет AGI – совместимый скрипт на «мертвых» каналах (тех, на которых произошло событие hung-up). Основное отличие, что скрипт выполняется в экстеншене h.
Дело в том, что скрипты, выполняемые через AGI – приложение не корректно отрабатывались на каналах, в которых случилось событие hang up.
exten => h,1,DeadAGI(somescript.agi)
FastAGI
Обычное AGI – приложение задействует собственные (серверные) вычислительные мощности для каждого звонка. Безусловно, при высокой телефонной нагрузке, на сервере могут быть проблемы, связанные с нехваткой ресурсов.
Помимо прочего, стандартный AGI имеет ограничения с точки зрения масштабирования. Поэтому, в рамках решения данные проблемы, было создано приложение FastAGI, которое позволяет выполнять скрипт на внешнем сервере, тем самым, «выносить» вычислительную нагрузку с сервера Asterisk на отдельный хост.
IP – АТС Asterisk коммуницирует с сервером, на котором находится исполняемый скрипт с помощью TCP сокетов. Вызвать FastAGI можно следующим образом:
exten => helloworld,1,AGI(agi://192.168.0.123:4567/somescript.agi)
В рамках синтаксиса, мы обращаемся на хост 192.168.0.123 и порт 4567, вызываю скрип с именем somescript.agi. Здесь можно передать различные переменные, как и в обычном AGI.
