Виртуальная машина SQL Server 2012 в Облаке

 

Добрый день, уважаемые читатели.

До сей поры, говоря о SQL Server в Облаке, мы понимали Windows Azure SQL Database (SQL Azure), различным аспектам работы с которой с начала календарного года был посвящен цикл статей

· SQL Azure. Введение.

· SQL Azure. Создание сервера.

· SQL Azure. Программное создание сервера.

· SQL Azure. Создание базы данных.

· SQL Azure. Работа с базой данных из портала.

· SQL Azure. Работа с базой данных из SSMS.

· Безопасность в SQL Azure.

· Мультитенантные таблицы в SQL Azure. Безопасность уровня записи.

· SQL Azure. Синхронизация данных с on-premise SQL Server. BCP

· SQL Azure. Синхронизация данных с on-premise SQL Server. SSIS

· SQL Azure. Синхронизация данных с on-premise SQL Server. DACPAC

· SQL Azure. Синхронизация данных с on-premise SQL Server. BACPAC

· SQL Azure. Синхронизация данных с on-premise SQL Server. Data Sync

· Синхронизация SQL Serverных баз через Облако

· Службы отчетности SQL Server в Облаке

· Горизонтальное масштабирование облачного SQL Server (шардинг)

Windows Azure SQL Database - типичный пример PaaS. Платформа обработки данных, которая в Microsoft вот уже 23 года ассоциируется с названием SQL Server, представлена как облачный сервис. Как будто большой-пребольшой SQL Server навис над миром, размазанный в Облаке Он умеет держать ваши базы и отзываться на (T-)SQL-запросы, как и обычный SQL Server, стоящий где-нибудь в соседней комнате. Хотя SQL Server большой-пребольшой, он имеет некоторые ограничения по сравнению с тем SQL Server, который за стенкой.

В июне 2012 года на конференции TecheEd в Орландо было объявлено о включении IaaS в облачное предложение Microsoft. Под инфраструктурой понимались виртуальные машины и виртуальные сети в Облаке, при этом в качестве операционных систем для облачных виртуалок могли использоваться не только ОС производства Microsoft. но и SUSE Linux Enterprise Server 11 SP2, OpenSUSE 12.1, CentOS 6.2, Ubuntu 12.04. "Our support of Linux is one example of how we are embracing openness in a fundamental new way" - заявил корпоративный вице-президент Microsoft по Windows Azure Скотт Гатри. Ну да бог с ним, с Линуксом. Принципиальное отличие от SQL Azure в данном случае состоит в том, что теперь это не Облако, обладающее функциями SQL Server, а полноценный SQL Server, установленный на виртуальной машине, расположенной где-то в нависшем над миром Облаке. В статье Георгия Гаджиева описывается создание SQL Serverной виртуалки из галереи в Облаке, но для начала предстоит получить туда доступ. Для разработчиков наиболее очевидный способ - это подписка MSDN, которая, кроме возможности скачивать массу полезных продуктов, дает бесплатный доступ в Облако в пределах следующих лимитов:

Subscription Level

Visual Studio Professional with MSDN

Visual Studio Premium with MSDN

Visual Studio Ultimate with MSDN

Cloud Services

375 hours of the Small Instance

750 hours of the Small Instance

1,500 hours of the Small Instance

CDN Transactions

500,000

1,000,000

2,000,000

CDN Data Transfers

25 GB Out

30 GB Out

35 GB Out

Storage

35 GB

40 GB

45 GB

Storage Transactions

50,000,000

75,000,000

100,000,000

SQL Database Web Edition

1 Database Unit*

1 Database Unit*

5 Database Units**

Access Control Transactions

100K

200K

500K

Service Bus Messages

500,000

1,000,000

1,000,000

Service Bus Relay Hours

1,500

3,000

3,000

Caching

128 MB cache

128 MB cache

128 MB cache

Data Transfers (Worldwide)

25GB Out Free In

30GB Out Free In

35GB Out Free In

Annual Savings***

$1500

$2100

$3700

Табл.1

Заходим в управление подпиской и говорим Activate Windows Azure:

clip_image002

Рис.1

Слева она напоминает, в каких пределах я могу пользоваться Облаком в рамках своей MSDN-подписки, а справа предлагает ввести кредитную карту, уверяя, что это делается только с целью моей идентификации и с нее ничего сниматься не будет, если только я явно не удалю spending limit. На всякий случай указал карточку с незначительной суммой кредита, которую обычно использую для интернет-покупок. После официального объявления Azure в России кредитки, выданные российскими банками, не вызывают отторжения.

clip_image004

Рис.2

Теперь заходим на http://www.windowsazure.com/ и жмем Portal в правом верхнем углу:

clip_image006

Рис.3

Потребуется ввести LiveID, привязанный к упомянутой выше MSDNовской подписке, после чего мы оказываемся в новом интерфейсе Windows Azure Management Portal. Далее все делаем в соответствии с Гошиной статьей - жмем + NEW в левом нижнем углу для создания новой виртуальной машины:

clip_image008

Рис.4

и видим, что в разделе Compute изо всех пунктов (Wev Site, Virtual Machine, Mobile Service, Cloud Service) доступен только последний. Остальные требуется включать отдельно. Жмем пункт Account в верхнем меню Рис.3, выбираем Preview Features строчкой ниже и напротив Virtual Machines & Virtual Networks кликаем зеленую кнопку Try It Now.

clip_image010

Рис.5

Теперь в портале управления Azure появится опция создания виртуальных машин:

clip_image012

Рис.6

Кликаем в нее и говорим, что хотим создать виртуальную машину в Облаке из галереи, т.е. из заранее подготовленных Microsoft шаблонов образов:

clip_image014

Рис.7

Вот доступные на момент написания статьи образы в галерее:

clip_image016

Рис.8

По подписке MSDN причитается small instance VM, его и заказываю:

clip_image018

Рис.9

Для нужд текущего эксперимента достаточно отдельно парящей в Облаке виртуалки (standalone). DNS-имя образуется по принципу <ваша фантазия>.cloudapp.net. Фантазию, действительно, придется напрячь, потому что в отличие от Рис.9 это имя должно быть уникальным, а все мало-мальски очевидные имена давно разобрали. Storage Account необходим для хранения vhd. Для виртуалки выбранного типа он весит 30 гиг (Рис.22), что умещается в лимиты Табл.1. В качестве датацентра выбираю Дублин, хотя Амстердам, в принципе, ближе. Список центров обработки данных Azure можно посмотреть, например, в wiki. Не имеет большого значения, какой датацентр выбирать, т.к. стоимость трафикавезде одинакова, за исключением Южной и Юго-Восточной Азии. Главное, стараться держать все необходимое в пределах одного центра, чтобы минимизировать обмен данных между ними.

clip_image020

Рис.10

Availability Set в данном эксперименте не понадобится:

clip_image022

Рис.11

Виртуальная машина начинает создаваться. В моем случае процесс занял ~7-8 минут, когда созданная машина появилась в состоянии Stopped и еще ~1.5 минуты она стартовала.

clip_image024

Рис.12

Все, с машиной можно соединяться и начинать работать.

clip_image026

Рис.13

Будет предложено открыть или сохранить файл с настройками удаленного подключения <имя машины>.rdp. Используется соединение по DNS-имени, заданному на Рис.10

clip_image027

Рис.14

и порту в соответствии с автоматически созданной конечной точкой, параметры которой можно посмотреть, кликнув по имени машины на Рис.13 и выбрав пункт меню Endpoints:

clip_image029

Рис.15

Нажмите кнопку Connect на Рис.14. Укажите в качестве пароля Administrator заданный на Рис.9 пароль. Выданная в наше распоряжение виртуалка представляет собой Windows Server 2008R2 редакции DataCenter с SQL Server 2012 Evaluation Edition. На всякий случай напомню, что пробная редакция SQL Server эквивалентна по своей функциональности Enterprise Edition и ограничена лишь сроком использования (180 дней).

clip_image031

Рис.16

Посмотреть кол-во оставшихся до истечения пробного периода дней раньше можно было в SSMS -> Help -> About, но это было слишком просто и совершенно не развивало смекалку DBA, поэтому в версии 2012 эту информацию оттуда убрали. Теперь это можно сделать одним из описанных здесь способов. Например, запросом

declare @daysleft int, @instancename sysname = cast(SERVERPROPERTY('InstanceName') as sysname)

exec @daysleft = xp_qv '2715127595', @instancename

select 'До дня рождения Пушкина осталось ' + format(@daysleft, 'D') + ' дней'

 

Недокументированная процедура xp_qv из xpsqlbot.dll представляет собой обертку для вызова в виде расширенных хранимых процедур функций из sqlboot.dll, которая возвращает информацию о типе SKU, виде лицензирования и т.д.

Дату установки SQL Server можно также найти в реестре по пути HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\A4ACBF48056DD0B40849CE6017AFB919\InstallProperties -> InstallDate.

clip_image033

Рис.17

Я не уверен, что GUID будет таким же во всех версиях SQL Server, поэтому лучше вставать на HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products, а далее Ctrl-F - F3 искать строку "Database Engine Services". Понятно, что это всего лишь отчет инсталлятора и изменение этой даты (если кто вдруг захочет проверить) не повлияет на срок истечения пробной версии.

Можно также определить дату установки SQL Server по дате создания логина для системной учетной записи NT AUTHORITY\SYSTEM:

select create_date AS 'SQL Server Install Date', DATEADD(DD, 180, create_date) AS 'SQL Server Expiry Date'

from sys.server_principals

where name = 'NT AUTHORITY\SYSTEM'

 

Обратите внимание, что в случае SQL Serverной виртуалки в Облаке реальный срок истечения пробной версии получается не через 180 дней, а раньше, т.к. образ, из которого создавалась виртуалка, собирался 2 августа, соответственно, тогда же устанавливался SQL Server.

Пока мы не совершили с виртуалкой ничего существенного, посмотрим обратный процесс - ее удаления. К виртуальной машине относятся сама виртуалка и storage, на котором хранится ее виртуальный диск.

clip_image035

Рис.18

Удалить диск, пока виртуалка активна, не дадут - вначале необходимо удалить виртуалку:

clip_image037

Рис.19

Следует иметь в виду, что удаление виртуалки не удаляет автоматически ее vhd, о чем предупреждается на этапе удаления. По времени удаление занимает примерно столько же, сколько и создание.

clip_image039

Рис.20

Затем следует зайти в Virtual Machines -> Disks и удалить оставшийся vhd, чтобы освободить ограниченный лимитами Табл.1 сторидж:

clip_image041

Рис.21

Удалить его как блоб через Storage Account, погрузившись в содержащий его контейнер (Рис.18) нельзя:

clip_image043

Рис.22

После удаления диска (Рис.21) контейнер опустевает и Storage Account, автоматически заведенный при создании виртуальной машины (Рис.10), в принципе, тоже можно удалить, если ни подо что больше он не используется.

Остается облачный сервис, содержащий заведенное на том же Рис.10 DNS-имя виртуальной машины.

clip_image045

Рис.23

После его удаления ничто больше не будет напоминать вам о былом существовании бренной виртуалки.