Виртуальная машина SQL Server 2012 в Облаке
Добрый день, уважаемые читатели.
До сей поры, говоря о SQL Server в Облаке, мы понимали Windows Azure SQL Database (SQL Azure), различным аспектам работы с которой с начала календарного года был посвящен цикл статей
· SQL Azure. Создание сервера.
· SQL Azure. Программное создание сервера.
· SQL Azure. Создание базы данных.
· SQL Azure. Работа с базой данных из портала.
· SQL Azure. Работа с базой данных из SSMS.
· Мультитенантные таблицы в 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 |
|||
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:
Рис.1
Слева она напоминает, в каких пределах я могу пользоваться Облаком в рамках своей MSDN-подписки, а справа предлагает ввести кредитную карту, уверяя, что это делается только с целью моей идентификации и с нее ничего сниматься не будет, если только я явно не удалю spending limit. На всякий случай указал карточку с незначительной суммой кредита, которую обычно использую для интернет-покупок. После официального объявления Azure в России кредитки, выданные российскими банками, не вызывают отторжения.
Рис.2
Теперь заходим на http://www.windowsazure.com/ и жмем Portal в правом верхнем углу:
Рис.3
Потребуется ввести LiveID, привязанный к упомянутой выше MSDNовской подписке, после чего мы оказываемся в новом интерфейсе Windows Azure Management Portal. Далее все делаем в соответствии с Гошиной статьей - жмем + NEW в левом нижнем углу для создания новой виртуальной машины:
Рис.4
и видим, что в разделе Compute изо всех пунктов (Wev Site, Virtual Machine, Mobile Service, Cloud Service) доступен только последний. Остальные требуется включать отдельно. Жмем пункт Account в верхнем меню Рис.3, выбираем Preview Features строчкой ниже и напротив Virtual Machines & Virtual Networks кликаем зеленую кнопку Try It Now.
Рис.5
Теперь в портале управления Azure появится опция создания виртуальных машин:
Рис.6
Кликаем в нее и говорим, что хотим создать виртуальную машину в Облаке из галереи, т.е. из заранее подготовленных Microsoft шаблонов образов:
Рис.7
Вот доступные на момент написания статьи образы в галерее:
Рис.8
По подписке MSDN причитается small instance VM, его и заказываю:
Рис.9
Для нужд текущего эксперимента достаточно отдельно парящей в Облаке виртуалки (standalone). DNS-имя образуется по принципу <ваша фантазия>.cloudapp.net. Фантазию, действительно, придется напрячь, потому что в отличие от Рис.9 это имя должно быть уникальным, а все мало-мальски очевидные имена давно разобрали. Storage Account необходим для хранения vhd. Для виртуалки выбранного типа он весит 30 гиг (Рис.22), что умещается в лимиты Табл.1. В качестве датацентра выбираю Дублин, хотя Амстердам, в принципе, ближе. Список центров обработки данных Azure можно посмотреть, например, в wiki. Не имеет большого значения, какой датацентр выбирать, т.к. стоимость трафикавезде одинакова, за исключением Южной и Юго-Восточной Азии. Главное, стараться держать все необходимое в пределах одного центра, чтобы минимизировать обмен данных между ними.
Рис.10
Availability Set в данном эксперименте не понадобится:
Рис.11
Виртуальная машина начинает создаваться. В моем случае процесс занял ~7-8 минут, когда созданная машина появилась в состоянии Stopped и еще ~1.5 минуты она стартовала.
Рис.12
Все, с машиной можно соединяться и начинать работать.
Рис.13
Будет предложено открыть или сохранить файл с настройками удаленного подключения <имя машины>.rdp. Используется соединение по DNS-имени, заданному на Рис.10
Рис.14
и порту в соответствии с автоматически созданной конечной точкой, параметры которой можно посмотреть, кликнув по имени машины на Рис.13 и выбрав пункт меню Endpoints:
Рис.15
Нажмите кнопку Connect на Рис.14. Укажите в качестве пароля Administrator заданный на Рис.9 пароль. Выданная в наше распоряжение виртуалка представляет собой Windows Server 2008R2 редакции DataCenter с SQL Server 2012 Evaluation Edition. На всякий случай напомню, что пробная редакция SQL Server эквивалентна по своей функциональности Enterprise Edition и ограничена лишь сроком использования (180 дней).
Рис.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.
Рис.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, на котором хранится ее виртуальный диск.
Рис.18
Удалить диск, пока виртуалка активна, не дадут - вначале необходимо удалить виртуалку:
Рис.19
Следует иметь в виду, что удаление виртуалки не удаляет автоматически ее vhd, о чем предупреждается на этапе удаления. По времени удаление занимает примерно столько же, сколько и создание.
Рис.20
Затем следует зайти в Virtual Machines -> Disks и удалить оставшийся vhd, чтобы освободить ограниченный лимитами Табл.1 сторидж:
Рис.21
Удалить его как блоб через Storage Account, погрузившись в содержащий его контейнер (Рис.18) нельзя:
Рис.22
После удаления диска (Рис.21) контейнер опустевает и Storage Account, автоматически заведенный при создании виртуальной машины (Рис.10), в принципе, тоже можно удалить, если ни подо что больше он не используется.
Остается облачный сервис, содержащий заведенное на том же Рис.10 DNS-имя виртуальной машины.
Рис.23
После его удаления ничто больше не будет напоминать вам о былом существовании бренной виртуалки.