Виртуальная машина VMBitrix. Виртуальная машина О виртуальных машинах

  • 13.02.2024

1C-Битрикс: Виртуальная машина» разработана непосредственно под нужды проектов на «1С-Битрикс». Неоспоримым преимуществом этого программного продукта является его изначальная конфигурация, которая является образцом идеальных настроек виртуального сервера под Битрикс. «1С-Битрикс: виртуальная машина» проверена и настроена для работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями.

Для чего нужна «Виртуальная машина»?

Использование «1С-Битрикс: Виртуальная машина» позволит Вашим проектам показывать неизменно высокие показатели производительности. Помимо простоты и удобства работы, она позволяет существенно сократить время на администрирование сайта, созданного на базе продуктов «1С-Bitrix» и настройку сервера, а также на оборудовании. С помощью «1С-Битрикс: Виртуальная машина» можно создать как новый проект, так и перенести уже существующий.

Полный доступ на уровне администратора дает возможность с помощью виртуальной машины для 1С-Битрикс установить любое ПО и вносить изменения в настройки виртуального сервера BitrixVM.

Какая версия устанавливается?

Вы получаете самую новую версию программы. На сегодняшний день последней версией этого программного продукта является «1С-Битрикс: виртуальная машина 7.0» c последней версией PHP, которая дает ощутимый прирост производительности.

Как заказать виртуальную машины?

Для всех наших клиентов виртуальная машина 1С-Битрикс предоставляется бесплатно при заказе любого VPS сервера для CMS Bitrix и готова к работе сразу после разворачивания, которое занимает считанные минуты.

Как оплачивать VPS?

Для оплаты VPS выберите нужный тариф в таблице и нажмите кнопку «Заказать». Далее следуйте инструкциям в биллинг панели, указав необходимые действия с доменом, ваши данные и выберите подходящий способ оплаты. Вот и все! Ваш сервер будет активирован сразу после оплаты.

Этап 1. Шаг 1. Закачиваем внутрь виртуальной машины файлы установки.

Нам понадобятся следующий instal-файлы:

1. Платформа 1С

Этап 1. Шаг 2. Запускаем установку платформы 1С

Этап 1. Шаг 3. Подключаем компоненты

Этап 1. Шаг 4. Выбираем язык интерфейса

Этап 1. Шаг 5. Устанавливаем платформу 1С

Этап 1. Шаг 6. Устанавливаем драйвер защиты

Этап 1. Шаг 7. Завершаем установку платформы 1С

Этап 2. Открываем порт для доступа к виртуальной машине извне

Этап 2. Шаг 1. Заходим в панель управления виртуальными машинами

Этап 2. Шаг 2. Заходим в меню "Конечные точки" (это и есть открытые порты наружу)

Этап 2. Шаг 3. Добавляем новую конечную точку (порт).

Нам необходим порт 80. Здесь же можно посмотреть какие порты уже открыты. Один используется для подключения по rdp.

Этап 2. Шаг 4. Не умничаем. Нажимаем далее

Этап 2. Шаг 5. Заполняем параметры порта. Сохраняем.

Этап 2. Шаг 6. Порт 80 создан.

Этап 3. Установка веб-сервера IIS 7.5

Этап 3. Шаг 1. Добавляем новую роль

Этап 3. Шаг 2. Далее

Этап 3. Шаг 3. Выбираем нужные нам роли. Далее

Этап 3. Шаг 4. Далее

Этап 3. Шаг 5. Настраиваем роли

Этап 3. Шаг 6. Далее

Этап 3. Шаг 7. Настраиваем роли.

Этап 3. Шаг 8. Устанавливаем IIS

Этап 3. Шаг 9. Закрываем форму

Этап 3. Шаг 10. Проверяем работу веб-сервера внутри виртуальной машины

для проверки достаточно открыть браузер и в адресной строке ввести http://localhost

В результате вы увидите заставку IIS

Этап 3. Шаг 11. Проверяем работу веб-сервера извне виртуальной машины

Порядок такой же. С любого компьютера заходим в браузер и в адресной строке пишем адрес нашей виртуальной машины (см. часть 1). Можно указать внешний Ip-адрес.

По умолчанию веб-сервер IIS7.5 использует 80-й порт. Который мы и создали на 2-м этапе

В результате Вы также должны увидеть заставку IIS 7.5

Разработчики вирусного ПО и просто разработчики, не желающие, чтобы их программу пытались реверсить, на этапе запуска или установки проводят проверки на виртуальную машину, и в случае её обнаружения отказываются работать, а то и вовсе самоликвидируются. Под катом описан способ, как можно попробовать решить эту проблему.

Я использовал VMWare Fusion для Mac, однако с тем же успехом способ работает и в Workstation для Win.

1) Для работы необходима заново установленная система, как внести изменения в уже существующую - не нашёл.

Готовите виртуальный диск, указываете систему, как это обычно делаете, и в настройках к устанавливаемой машине, у меня этот пункт назван Isolation, выключаете любой обмен данными с хостовой ОС.

isolation.tools.getPtrLocation.disable = «TRUE»
isolation.tools.setPtrLocation.disable = «TRUE»
isolation.tools.setVersion.disable = «TRUE»
isolation.tools.getVersion.disable = «TRUE»
monitor_control.disable_directexec = «TRUE»
monitor_control.disable_chksimd = «TRUE»
monitor_control.disable_ntreloc = «TRUE»
monitor_control.disable_selfmod = «TRUE»
monitor_control.disable_reloc = «TRUE»
monitor_control.disable_btinout = «TRUE»
monitor_control.disable_btmemspace = «TRUE»
monitor_control.disable_btpriv = «TRUE»
monitor_control.disable_btseg = «TRUE»

Эти опции предотвращают детектирование программами виртуального окружения через такие сложные проверки, как отслеживание адресного пространства памяти, счётчиков.

Важно! Если на этапе настройки установки будет опция вроде «Express install», «Быстрая установка» - выключайте их. Также не стоит устанавливать VMWare Tools в установленную систему, т.к. некоторое ПО в проверку включает и наличие этого пакета.

3) Сохраняем файл, указываем для загрузки ISO с установщиком системы, устанавливаем ОС как обычно.

4) Несмотря на то, что подавляющее большинство программ, не любящих виртуальной среды, не заходят дальше проверок, которые мы отсекли на 2 шаге, некоторые особо упорные всё же идут дальше и пытаются искать, к примеру, всё, что похоже на название контроллеров виртуальных дисков.

Чтобы победить и их в Windows, идём в редактор реестра в ветку HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum. Как видите, там есть вполне явная отсылка к тому, что диск - виртуальный.

Нам нужно изменить его, убрав из параметра VMware, Virtual, Ven, итп, и сохранить её так.

Также имеет смысл заменить в реестре поиском по VMware/Virtual на какой-нибудь Intel или IBM всё, что меняется, а не только дисковые переменные.

После пробуйте запускать ваш упрямый объект экспериментов - в процентах 70 случаев описанные шаги помогут пройти проверки на виртуальное окружение.

Важно! Значение в HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum перезаписывается после каждой перезагрузки, так что его нужно менять после каждого нового запуска системы.

Естественно, это не исчерпывающее руководство, некоторое ПО также может пытаться определять виртуальную систему следующими методами:

1) Проверками диапазона MAC адресов (просто подменяется в настройках виртуального сетевого адаптера до запускa виртуальной машины)
2) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
3) Низкоуровневыми трюками.
Проверить, насколько вы обезопасили себя от обнаружения, а также ознакомиться с другими популярными у разработчиков средствами обнаружения песочниц и виртуалок можно средством Pafish .

Несмотря на то, что остались места, где можно себя выдать, предложенный метод заставляет обхитрить большинство ПО, которое не желает работать в виртуальной среде, в данном случае, в VMWare.

Как видно, улучшить скрытность можно также выделив виртульной машине больше системных ресурсов. Что касается памяти, выбирать стоит значения, кратные 1024.

Спасибо всем, кто осилил статью и помог в дополнении её толковыми комментариями!

Представляю свой экспериментальный проект VM1C. VM1C - это виртуальная машина, которая позволяет на лету компилировать и выполнять любые процедуры и функции, а также целые модули.

По сути, это недостающая в 1С возможность полноценного Reflection, которая присутствует на других платформах, например на.NET и позволяющая там делать по истине умопомрачительные вещи.

Для тех, кто не знаком с Reflection: Wikipedia

Описание работы

VM1C работает без использования каких-либо внешних компонент, используя только штатные возможности 1C, не зависит от платформы и конфигурации. Может добавляться в конфигурацию как в виде обработки, так и в виде общего модуля.

В состав VM1C входят:

Рассмотрим каждый компонент отдельно

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

Например следующий код

Для н=1 По 100 Цикл н = н+1; КонецЦикла; Возврат н;

будет преобразован в набор инструкций

push 1 stloc 0 push 100 stloc 1 br ~IL_1 ~IL_2: ldloc 0 push 1 add stloc 0 ldloc 0 push 1 add stloc 0 ~IL_1: ldloc 0 ldloc 1 ble ~IL_2 ~IL_0: nop ldloc 0 ret

Это сделано, для того, что бы

  1. ускорить дальнейшую обработку кода в реальном времени. Так как сам процесс компиляции занимает относительно много времени
  2. обеспечить возможность создавать и выполнять процедуры и функции в режиме 1С Предприятия

Vm1C_IL_Compiler = Обработки._VM1C_IL_Compiler.Создать(); текстМодуля = ЗагрузитьКодИзФайла("Модули\РаботаСТоварами"); модуль = vm1C_IL_Compiler.КомпилироватьМодуль(текстМодуля);

После того как у нас есть промежуточный код (далее IL-код), мы можем выполнять его в виртуальной машине.

Виртуальная машина VM1C позволяет, на лету, посредством JIT компилятора, скомпилировать модуль из IL-кода обратно в код понятный 1С. Скомпилированный код оптимизируется, сохраняется в кэш, для дальнейшего повторного использования и может быть выполнен.

Vm1C_VM = Обработки._VM1C_VM.Создать(); vm1C_VM.ДобавитьМодуль("РаботаСТоварами", модуль); параметры = Новый Массив(); параметры.Добавить("00000453"); Результат = vm1C_VM.ВызватьМетод("РаботаСТоварами", "ПолучитьЦену", параметры);

MethodInfo = vm1C_VM.GetCurrentMethodInfo(); параметры = methodInfo["Параметры"]; ...

получить код функции

БайтКод = methodInfo["БайтКод"];

изменить его, добавить параметры и заново вызвать уже в измененном виде и т.д.

Заключение

Проект сейчас на стадии сырой альфа версии, поэтому выкладываю только его описание и демо-ролик.


Цель данной публикации, оценить потребность в данном продукте, на сколько он может быть полезен разработчикам, в тех случаях когда стандартных средств уже не хватает для реализации самых инновационных идей.

Если, кого-то заинтересовала данная разработка, прошу обязательно сообщить!

Демонстрация работы

С уважением,

разработчик m.bolsun

(c) 2013-2014 VM1C

Update : публикация долго была в черновиках, т.к. кроме академического интереса, сразу не нашлось практического применения данному проекту. Но недавно мне удалось использовать его возможности на практике и было решено вернуть публикацию. Уже скоро технологии из этого проекта будут использоваться в новой версии Code Inspector.

Благодаря новому полноценному компилятору, Инспектор получит статический анализ и соответсвенно ряд новых возможностей:

Проверка того, что условие всегда Истинно или Ложно и что функция возвращает одно и тоже значение. Проверка не только последних неиспользованных значений переменных, но и промежуточных присвоений, с учетом циклов и ветвлений. Анализ кода в соответствии с инструкциями препроцессора (НаСервере, НаКлиенте и т.д.). Ну и многое другое.

Изначально виртуализация была только на программном уровне и плюсы виртуализации нивелировались существенным замедлением работы в виртуальной среде. Частично вопрос получилось решить аппаратно — вендоры разработали инструкции процессоры Intel VT-d , AMD-V и т.п. для ускорения работы. Однако память и процессор это не единственные компоненты, есть также видеокарта, жесткие диски и т.п. и от реализации доступа к ним напрямую зависит скорость операций. Т.е. в зависимости от производителя виртуальной машины, драйверов от производителя оборудования, от умения конечного ПО распознавать виртуализацию по-прежнему скорость работы зависит значительно.
Разные приложения по разному замедляются в виртуалке.
Помимо издержек оборудования на обслуживание ПО виртуализации еще один фактор замедления — это организация течения времени. Скорость течения в физическом железе и виратуалке не одинаковы. Плюс виртуальную машину можно ставить «на паузу». Сложность реализации таймеров, переключателей синхронизаторов, перехват физических аппаратных ресурсов в виртуальной системы не позволяют решить задачу один в один как на физическом железе, много зависит от конкретного вендора.

Мы провели тест на исследование потоковой скорости, чтобы оценить на сколько виртуализация может повлиять на скорость работы однопоточных задач в 1С, включая интерфейсные операции.

Из полученных результатов самый главный вывод не цифры, а то что по прежнему требуется опыт чтобы нащупать на практике, а не теоретически оптимальный вариант эксплуатации 1С под вашу конкретную нагрузку.
Влияние слоя виртуализации особенно заметно на очень быстрых операция информационной базы 1С и это логично. Чем меньше время операции, тем больше оно сопоставимо с временем задержки на обслуживание слоя виртуализации.
Другими словами если мы выполняем одну длительную операцию тысячу секунд, то лаг в одну десятую на обслуживание виртуализации будет каплей в море и не заметен. А вот если мы выполняем десять тысяч операций с временем каждой операции одна десятая секунды, то задержки на обслуживание будут заметны так как будут соизмеримы с длительностью операции.

ЧТО ДЕЛАТЬ

Есть два способа решения проблемы.
1й способ. Если настройками виртуализации вам не удается достичь желаемой производительности — используйте физическое оборудование.
2й способ. Минимизировать лаги виртуализации подобрав настройки, соответствующие характеру нагрузки. При этом надо понимать, в что виртуализация это не 100% аналоги физического оборудования и компенсировать скорость надо более мощным физическим оборудованием.
Некоторые вендоры обеспечивают повышение скорости за счет встроенных в слой виртуализации механизмов кэширования. Однако кэш может быть «пробит» и тогда будет резкое падение производительности. Т.е. надо помнить не только про плюсы технологий, но и про минусы.

1. «Снимки» надо выключать — они замедляют. При чем влияние далеко не очевидно. Подробно смотрите http://vkeygen.blogspot.ru/2011/10/snapshot.html

Microsoft Hyper-V

— при использовании серверов Hyper-V с узлами NUMA

VMware ESXi & vSphere

Коллективное использование виртуалок для балансировки нагрузки
Проблема заключается в работе компонента vCenter под названием DRS (Distributed Resource Scheduler), задача которого заключается в балансировке нагрузки виртуальных машин на физические серверы. При появлении больших нагрузок по процессорным мощностям или по загрузке ОЗУ, DRS мигрирует виртуальную машину на другой физический хост, наименее загруженный в данный момент; в кульминации данного процесса возникают кратковременные проблемы с доступом к ресурсам этой VM.

СЕТЬ

Для виртуальных серверов ESXi 6.0 с 1с сервером не используйте сетевые интерфейсы типа WMXNET3, использовать только типа e1000e

ОПЕРАТИВНАЯ ПАМЯТЬ

— —Отключить дедупликацию памяти для EXSi — Transparent Page Sharing на хосте VMware ESXi

Если же вы хотите отключить этот механизм уже прямо сейчас, то нужно сделать следующее:

В старых версиях


После патча и обновлений ESXi механизм TPS можно будет включить следующим образом (Advanced Settings в секции Software):

  • Параметр Mem.ShareForceSalting (включение TPS на уровне всего хоста ESXi). Если значение стоит 0 — то значит TPS по-прежнему работает на хосте, если 1 — механизм отключен.
  • Параметр sched.mem.pshare.salt (ставится на уровне ВМ) позволяет включать/отключать TPS для отдельных виртуальных машин (например, старые Windows или линуксы — для них можно было бы включить). Когда параметр ShareForceSalting установлен в значение 1, то для нуждающихся в TPS машин в их Advanced Configuration нужно установить одинаковые значения «соли». Без этого TPS не работает — соответственно, он отключен.

ПРОЦЕССОР

— —Включить схему питания максимальной производительности

— vSphere прекрасно знает про и старается размещать виртуальные ядра машин на тех физических процессорах, в чьей памяти сейчас находится оперативная память виртуальной машины. Но тут возникают подводные камни. Производители серверов любят включать в BIOS по умолчанию эмуляцию NUMA. То есть сервер представляется операционной системе как НЕ NUMA устройство, и vSphere не может использовать свою оптимизацию для управления данной технологией. В документации по vSphere рекомендуется отключать (Disable) данную опцию в BIOS, это позволяет vSphere самостоятельно разбираться с вопросом.

ДРАЙВЕРА

— Установите гостевые дополнения VMware Tools

Первое, что необходимо сделать, после установки операционной системы гостя внутри виртуальной машины, это установить программный пакет – гостевые дополнения VMware Tools для VMware. Эти пакеты содержат специальные драйвера, которые обеспечивают более быструю работу гостевой операционной системы на аппаратных средствах виртуальных машин.

Выберите пункт Install VMware Tools в меню виртуальной машины. Следуйте инструкциям на вашем экране для завершения установки. Если вы используете гостевую ОС Windows, то вы увидете, что данный процес не отличается от установки других приложений.

Проверка VMware Tools.

  • Выберите хост в vClient;
  • Перейдите на вкладку Virtual Machines ;
  • Добавьте столбец «VMware Tools Status»;
  • Оцените статус. OK->значит все хорошо, ничего делать не надо. Not Running/Out of date - устраняем.

Если VMware Tools не запущены, необходимо разбираться с гостевой операционной системой. Причина может скрываться в обновлении ядра Linux либо отключенной (кем-то) службе VMware Tools в Windows.

Если VMware Tools устарели, необходимо их обновить из контекстного меню vClient. Как правило, это случается после установки обновлений на хосты ESX/ESXi. После этого зачастую требуется обновить и VMware Tools.

ДИСКИ

— При использовании внешних хранилищ

  • Independent Persistent Mode vmdk-диска - наиболее производительный, поскольку изменения вносятся сразу на диск, не журналируясь. Но такой диск не подвержен снапшотам, его нельзя откатить.
  • При использовании iSCSI рекомендуется настроить jumbo frames (MTA=9000) на всех интерфейсах и сетевом оборудовании.
  • MultiPathing - для большинства случаев RoundRobin - ОК. Fixed может дать большую производительность, но это после вдумчивого планирования и ручной настройки каждого хоста до каждого LUN. MRU можно поставить при active-passive конфигурации, если какие-то пути время от времени пропадают - чтобы не перескакивало туда-обратно.

Как выглядит на практике отказ от виртуализации. Далеко не всегда виртуализация сильно замедляет , все таки характер нагрузки, объем данных имеют тоже значение.