вторник, 4 сентября 2018 г.

Установка и настройка DVD Store для нагрузочного тестирования ВМ (часть II)

Продолжаем говорить о настройке бенчмарка DVD Store. Сегодня - подготовка шаблона ВМ для автоматизированного развертывания.

Предыдущая часть доступна по ссылке: http://blog.vmpress.org/2018/08/dvd-store-i.html

Установка DVD Store на один тестовый сервер - не такая уж и сложная задача. Но когда речь заходит о необходимости одновременного запуска и тестирования DVD Store на десятках серверов, было бы неплохо каким-либо образом автоматизировать данную задачу. И тут как нельзя кстати подойдет возможность клонирования заранее созданного эталонного образа или шаблона ВМ в связке с Customization Specification.

Но просто так взять и конвертировать существующую ВМ с установленным SQL Server в шаблон не получится, SQL Server плохо переносит кастомизацию с помощью Sysprep. Выходом будет установка компонентов SQL Server в режиме PrepareImage с последующей автоматической настройкой в момент запуска Sysprep.

Для начала выполните начальные шаги по созданию и настройке эталонной ВМ и гостевой ОС аналогичные тем, что были описаны в первой части, включая установку ActivePerl и копирование файлов DVD Store в каталог C:\ds2\.

Запустите процедуру установки компонентов SQL Server:
Setup.exe /QS /ACTION=PrepareImage l /FEATURES=SQL,FullText /InstanceID="MSSQLSERVER" /IACCEPTSQLSERVERLICENSETERMS

Дождитесь, пока установщик скопирует необходимые файлы.

Чтобы сэкономить время, заранее создайте тестовую базу необходимого размера на тестовом сервере, и затем скопируйте все файлы БД и журналов на эталонную ВМ в папку E:\SQL\dbfiles\.

Создайте файл setup.sql в корне диска E:\ со следующим содержимым:
--Attach database
USE master
GO

sp_attach_db 'DS2', 'E:\SQL\dbfiles\ds.mdf'
GO

--Change password
ALTER LOGIN sa WITH CHECK_POLICY=OFF
ALTER LOGIN sa WITH PASSWORD=N''
GO

Создайте файл setupcomplete.cmd в папке C:\Windows\Setup\Scripts\ со следующим содержимым:
cd "C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\SQL2017\"

Setup.exe /ACTION="CompleteImage" /QS /IACCEPTSQLSERVERLICENSETERMS /INSTANCENAME="MSSQLSERVER" /INSTANCEID="MSSQLSERVER" /AGTSVCACCOUNT="NT Service\SQLSERVERAGENT" /AGTSVCSTARTUPTYPE="Manual" /SQLSVCSTARTUPTYPE="Automatic" /SQLCOLLATION="Latin1_General_CI_AS" /SQLSVCACCOUNT="NT Service\MSSQLSERVER" /SQLSYSADMINACCOUNTS="Administrator" /SECURITYMODE="SQL" /ADDCURRENTUSERASSQLADMIN="False" /TCPENABLED="1" /NPENABLED="0" /BROWSERSVCSTARTUPTYPE="Disabled" /SAPWD="P@ssw0rd"

icacls E:\SQL /grant "NT Service\MSSQLSERVER":(OI)(CI)F

"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S localhost -U sa -P "P@ssw0rd" -i E:\setup.sql

"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S localhost -U sa -P "" -i "C:\ds2\sqlserverds2\build\sqlserverds2_create_user.sql"

Данный скрипт будет автоматически запущен на последнем этапе Sysprep и выполнит следующие действия:
  1. Завершит установку SQL Server с нужными настройками.
  2. Выдаст разрешение на папку E:\SQL\ учетной записи MSSQLSERVER, под которой запускаются службы SQL (это нужно для корректного подключения БД).
  3. Запустит скрипт setup.sql, который подключит базу и сбросит пароль для учетной записи sa.
  4. Запустит скрипт sqlserverds2_create_user.sql, который создаст учетную запись ds2user и предоставит ей необходимые права на БД.

Выполнив данные настройки, выключите ВМ и создайте из нее шаблон. Создайте файл Customization Specification и укажите в нем необходимые параметры кастомизации (пароль администратора, сетевые настройки, подключение к рабочей группе или домену).

На этом настройка завершена. Теперь вы можете создавать новые экземпляры тестовых СУБД из эталонной ВМ.

Параметры для запуска теста

Последнее, о чем хотелось бы поговорить - это параметры, которые можно указывать в файле или передавать при запуске утилиты ds2sqlserverdriver.exe для тестирования:
  • target= - имена или IP адреса СУБД, к которым будут выполняться тестовые запросы. Можно указать несколько серверов, разделяя их точкой с запятой, например: 192.168.1.10;192.168.1.11;192.168.1.12;sql01;sql02. Если не задан, то в качестве значения по умолчанию используется localhost.
  • n_threads= - количество одновременных потоков, которые использует утилита для подключения к каждому серверу, чем больше потоков, тем больше нагрузка на СУБД. Значение по умолчанию: 1.
  • ramp_rate= - прирост пользователей в секунду, с которым происходит увеличение кол-ва обращений к СУБД. Значение по умолчанию: 10.
  • run_time=60 - задает время проведения теста в минутах. Значение по умолчанию: 0 - бесконечность.
  • db_size=2GB - размер БД в гигабайтах.
  • warmup_time=10 - время в минутах в начале теста, которое дается на "разогрев". Значение по умолчанию: 0.
  • think_time= - время в секундах, которое тратит тестовый пользователей между операциями (поиск, заказ DVD и пр.). Значение по умолчанию: 0.
  • pct_newcustomers= - процентное соотношение новых пользователей, заходящих в магазин. Значение по умолчанию: 20.
  • n_searches= - среднее количество операций поиска по каталогу товаров, которые приходятся на одного пользователя. Значение по умолчанию: 3.
  • search_batch_size= - среднее количество объектов, которые возвращаются в одном поисковом запросе. Значение по умолчанию: 5.
  • n_line_items= - среднее количество товаров в одном заказе. Значение по умолчанию: 5.
  • windows_perf_host= - перечень серверов Windows, по которым требуется отображать статистику загрузки CPU.
  • linux_perf_host= - перечень серверов Linux, по которым требуется отображать статистику загрузки CPU.
  • detailed_view= - отображать детальную статистику по каждому тестовому СУБД.