Azure - хранение данных в облаке

Preview:

Citation preview

Windows Azure разработка в облаке и для облакаХранение данных в облаке

Обзор модуляОбзор возможностей по хранению данных в Windows AzureОбзор облачных баз данных Azure SQLУправление базами данных в Windows AzureМиграция данных в облачные базы данныхВведение в хранилище Windows AzureРазграничение доступа к блобам и контейнерамМониторинг хранилища, настройка учетных записейФайлы Azure

Хранение данных в AzureAzure SQLAzure Storage

BlobsDrivesTables Queues

Azure FilesDocumentDB

Облачные базы данных Azure SQLОбзор облачных баз данных Azure SQLУправление базами данных в Windows AzureИнструменты для работы с Azure SQLМиграция данных в облачные базы данныхВосстановление и гео-репликация облачных БД

Обзор Azure SQL DB

Базы данных Azure SQL Управляемое решение для хранения данныхСовместимо с существующими инструментамиВысокая доступность, быстродействие и масштабируемость

Уровни баз данных Azure SQL Актуальные

Больше не доступны

Basic Standard

Premium

Web Business

Уровни баз данных Azure SQL Сравнение характеристик

БД как сервис, или SQL Server на VM?

БД как сервис, или SQL Server на VM?SQL Database

Стандартизированное, интероперабельное и масштабируемое решениеОграничения по размеру (в зависимости от уровня)Требует некоторых изменений в существующих приложенияхИдеальный выбор для новых облачных приложений

SQL Server на Azure VM

Высокая совместимость с традиционными СУБДИдеальный выбор для существующих приложений Требует поддержки и настройки для достижения масштабируемости

БД как сервис, или SQL Server на VM?SQL Database

Легко делается доступной для любого сервиса Azure через порталМожно открыть для конкретного диапазона IP-адресов через портал

SQL Server на Azure VM

Для доступа снаружи виртуальной машины надо открыть портСервисы Azure не имеют никаких привилегий – просто внешние подключения

Вопрос:В каких сценариях Вам больше подойдет SQL Server на VM?

Управление облачными БД

Создание экземпляра БД Azure SQL

Сервис баз данных SQL

Экземпляр сервера

Экземпляр базы

данных

ДЕМОСоздание экземпляра базы данных Azure SQL

Инструменты для работы с Azure SQLSQL Server Management StudioSQL Server Data Tools (SSDT)https://msdn.microsoft.com/en-us/mt186501 Visual StudioSQL Database Migration Wizardhttps://sqlazuremw.codeplex.com/ Azure Websites Migration Assistanthttps://www.movemetothecloud.net/ …

SQL Server Management StudioДоступны многие инструменты, но это - классика

Сначала разрешите подключение для вашего IP-адреса. Это делается через портал – в настройках сервераИмя сервера можно посмотреть на портале – в информации о базе данных (кликабельно)Используйте аутентификацию SQL Server, имя и пароль, которые Вы задали при создании сервера

Visual Studio Server ExplorerВозможности как у SQL Server Management StudioРедактор запросов, просмотр данных, …Базу можно открыть в SQL Server Object Explorer или на порталеМожет работать и с другими сервисами Azure

Visual Studio SQL Server Object ExplorerУправление локальными и облачными базами данных

Доступен по правому клику в Server Explorer

Visual Studio Cloud ExplorerДля работы с сервисами Azure, в том числе – базами данных и серверами БДБазу данных можно открыть на портале или в SQL Server Object Explorer

Visual Studio Database ProjectsСоздание схемы БД и размещение ее в системе управления исходными кодамиПубликация базы данных на определенный экземпляр

Инструменты миграцииSQL Server Integration Services помогут мигрировать в Azure с существующих серверов баз данныхSQL Database Migration Wizard анализирует существующую базу данных и генерирует скрипт для ее миграцииAzure Websites Migration Assistant использует SQL Management Objects для анализа существующей базы данных и ее миграции

Восстановление и гео-репликация

Возможности восстановленияИзбыточная инфраструктура в дата-центрах AzureСобственные возможности облачных БД

Возможности восстановленияВстроенные реплики

Одна основная и две дополнительныхАвтоматические резервные копии (point-in-time recovery) – начиная с Basic

Полные – раз в неделю, дифференциальные – раз в день, логи – раз в 5 минут

Восстановление через порталПериод хранения резервных копий зависит от выбранного Вами сервисного уровня

Подробнее: https://azure.microsoft.com/ru-ru/blog/azure-sql-database-point-in-time-restore/

Другие возможностиКопирование баз данных

Выполняется через порталЛюбые будущие транзакции к копии не применяются

Сервис импорта и экспортаИмпорт и экспорт BACPACK-файловВариант для тех уровней БД, которые не предоставляют автоматического резервного копирования Другие сценарии

Возможности восстановления

Гео-репликация облачных БДСтандартная – начиная с Basic

В том же регионеАктивная - для Premium*

Автоматически, асинхронно, при каждой транзакцииДо четырех копий базы данныхВ разных регионах для обеспечения гео-избыточности

Можно использовать как БД только для чтения в сценариях балансировки нагрузки

Пример: основная БД – используется приложением, реплика – только для построения отчетовПодробнее:

https://azure.microsoft.com/en-us/documentation/articles/sql-database-geo-replication-overview/

Гео-репликация облачных БД

Лабораторная работа А: Облачные БДУпражнение 1

Создание экземпляра базы данных Azure SQLУпражнение 2

Использование Entity Framework с базой данных Azure SQL

Расчётное время: 35 минут

Сценарий лабораторной работыВаше веб-приложение готово к публикации, и Вы решили начать миграцию в Azure с создания облачной базы данных. Вы решили использовать инициализатор базы данных и Entity Framework Code First-подход для автоматизации создания базы с нужными Вам данными.

Вопрос:В каких сценариях может быть полезно наполнить данными облачную БД черз ORM framework?

Хранилище Microsoft AzureВведение в хранилище Windows AzureРазграничение доступа к блобам и контейнерамМониторинг хранилищаФайлы AzureЗагрузка и миграция данных в хранилище

Обзор хранилища блобов

Динамическая природа облака AzureОсновное отличие облака от других

видов облака –эластичностьМасштабирование вверх – добавление виртуальных

машинМасштабирование вниз – удаление виртуальных

машин

Следствие эластичности – данные на локальных дисках машин могут (будут) быть потеряныСервис хранилища предназначен для:

Хранения данных приложенийХранение данных Azure – пакеты, данные

диагностики, …

Сервисы хранилищаBlobs

простые именованные файлы с метаданнымиDrives

NTFS-тома для приложений Azure (основаны на блобах)Tables

Структурированные хранилища. Содержат сущности- наборы свойств

QueuesОчереди сообщений для приложений

Программный доступ через Windows Azure Managed Library и Windows Azure Storage services HTTP-based API

Учетные записи хранилищаПри отладке можно использовать Storage Emulator или Windows Azure Storage accountКлючи для доступа к данным хранятся в файле конфигурации (.scfg), их можно менять без повторного развертывания

<ConfigurationSettings>  <Setting name="DataConnectionString"            value="DefaultEndpointsProtocol=https; AccountName=MyAccountName;

AccountKey=512 Bit Shared Key" /></ConfigurationSettings>

ДЕМОСоздание учетной записи хранилища

Storage BlobsДля хранение больших объемов неструктурированных текстовых или бинарных данных:

Образы дисковВидеоКартинкиТекстовые файлы и логиЧто угодно

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

Storage BlobsБлобыКонтейне

рыУчетная запись

contoso

imagesPIC01.jpg

PIC02.jpg

videos VID04.mp4

http[s]://<storage account>.blob.core.windows.net/<container>/<blob>

Типы блобов

Page blobs

Block blobs

Page BlobsКоллекция страниц по 512 байтОптимизированы для произвольного доступа и частого обновления

Хранилище дисков виртуальных машин в AzureВысокопроизводительное и надежное решениеРазмер может меняться путем добавления и удаления страниц

Изменения блоба могут переписать одну или несколько страниц

Немедленные изменения (immediately committed)

Ограничение по размеру – до 1 TB

Block BlobsСерия блоков (каждый имеет свой block ID)

Блоки могут загружаться параллельно для ускорения работы с большим файломДля контроля правильности записи можно использовать хеш MD5Можно отслеживать прогресс загрузкиПока не загружен, блоб не записан (uncommitted)Когда все блоки загружены, можно определить порядок и «закоммитить» блоб

Оптимизированы для потоковых сценариев, работы с мультимедиа-даннымиОграничения по размеру – до 200 GB

REST API для блобовБлобы – простейшая из всех REST-точек доступа к хранилищу

GET BLOBhttps://[account].blob.core.windows.net/[container]/[blob]

POST, PUT и DELETE доступны по такому же адресу (HTTP-методы)

К контейнеру можно доступаться с помощью параметра строки запроса restype

https://[account].blob.core.windows.net/[container]?restype=container

В конец адреса можно добавить токен Shared Access Signature (SAS) для доступа к защищенному блобу

Управление доступом к хранилищу

Права доступа к контейнеруТри уровня доступа к контейнеру:

Full public readПросмотр списка блобовЧтение отдельных блобовПолучение списка контейнеров невозможно

Public read for blobs only Чтение отдельных блобов

No public readНет доступа ни к блобам, ни к контейнерам,

невозможно получить список содержимого

Права доступа к контейнеру

Сигнатуры общего доступаТокен Shared Access Signature (SAS Token) это URI, который предоставляет доступ к защищенному контейнеру, блобу, очереди или таблице на определенный период времени

Доступ приложения к ресурсу без использования ключейИспользуется только с безопасными (HTTPS) запросамиМожет быть сгенерирован с такими параметрами:

Начальное времяВремя окончания периода доступностиУровень прав доступа (Read, Write, Delete, List, None)

Структура Shared Access Signaturehttps://myaccount.blob.core.windows.net/sascontainer/

sasblob.txt?sv=2012-02-12&st=2013-04-29T22%3A18%3A26Z&se=2013-04-30T02%3A23%3A26Z&sr=b&sp=rw&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D

http://[account].blob.core.windows.net/[container]/[blob]?sv=[Storage Services Version]&?st=[Start Time]&se=[Expiry Time]&sr=[Resource]&sr=[Permissions Granted]&si=[nameofpolicy]&sig=[HMAC-SHA256 value]

Хранимые политики доступаПозволяют управлять набором shared access signatures

Время жизни сигнатуры и права хранятся в политике, а не в URLМожно менять свойства политики и изменения сразу же применятся ко всем сигнатурам, соответствующим политикеМожно отозвать все сигнатуры, соответствующие политике

Контейнер, очередь или таблица могут иметь до пяти Stored Access PoliciesЭто рекомендованный подход к предоставлению доступа

Генерирование сигнатур из политики// Get a reference to the container var container = blobClient.GetContainerReference(“files"); container.CreateIfNotExists();

// Create blob container permissionsvar blobPermissions = new BlobContainerPermissions(); blobPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessBlobPolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(10), Permissions = SharedAccessBlobPermissions.Read

});

blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;

Генерирование сигнатур из политики// Set the permission policy on the container container.SetPermissions(blobPermissions);

// Get a reference to the container for the shared access signaturevar container = blobClient.GetContainerReference(“files"); container.CreateIfNotExists();

// Get the shared access signature to share with users string sasToken = container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "mypolicy“);

Настройка учетных записей хранилища

Content Delivery NetworkСтарый добрый CDN

Для существующей учетной записи можно настроить CDN -точку доступаКонтент будет кешироваться на серверах Azure, ближайших к пользователюДля облачного сервиса это тоже можно настроитьCDN-контент может быть получен из другого домена

Подробнее: https://azure.microsoft.com/en-us/documentation/articles/cdn-create-a-storage-account-with-cdn/

Cross-Origin Resource SharingCross-Origin Resource Sharing (CORS) позволяет клиентскому коду делать кросс-доменные запросы

Браузеры и политики безопасности обычно не позволяют делать запросы такого вида

CORS – это расширение спецификации запросов/ ответов HTTP

Состоит из двух запросов (предварительного и основного)

CORS включен правилами на уровне учетной записи хранилища

CORS – это опцияПравила действуют как список разрешенных доменов, методов и заголовков

Подробнее: http://henry-chong.com/enabling-cors-cross-origin-resource-sharing-for-your-microsoft-azure-storage-blobs-etc

Сторонние инструментыCloudBerry Explorerhttp://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx

Azure Storage Explorerhttps://azurestorageexplorer.codeplex.com/

Azure Management Studiohttp://www.cerebrata.com/

Cloud Portam http://www.cloudportam.com/

Сторонние инструменты

Сторонние инструменты

Еще? https://techmike2kx.wordpress.com/2013/08/23/10-tools-of-the-trade-for-your-windowsazure-environment/

Файлы Azure

Обзор файлового сервиса AzureСервис Azure Files предоставляет файловые «шары» (SMB), которые могут использоваться разными приложениямиSMB – это общий стандарт, так что приложения, работающие с «шарами» могут продолжить делать это и в облаке

Виртуальные машины могут подключаться к облачным «шарам» стандартным путемЛегкий способ миграции приложений в Azure

Файловые «шары»Создаются через REST API или Windows PowerShellИспользуют протокол SMB 2.1Могут быть примонтированы в Windows как диск

Подробнее: https://azure.microsoft.com/ru-ru/documentation/articles/storage-dotnet-how-to-use-files/

Лабораторная работа В: ХранилищеУпражнение 1

Реализация хранилища блобовУпражнение 2

Наполнение контейнера файламиУпражнение 3

Получение файлов из контейнераУпражнение 2

Настройка прав доступа к контейнеру

Расчётное время: 55 минут

Сценарий лабораторной работыВам нужно место, где можно было бы хранить документы Word, генерируемые Вашим приложением. Вы решили хранить их в Azure как блобы, и защитить их от анонимного доступа.Также Вы хотите реализовать логику генерирования SAS-токенов для временного доступа к документам.

Вопросы и ответыРекомендации

В ходе отладки лучше использовать LocalDB, в опубликованном приложении – БД Azure SQL

ВопросыКакие преимущества облачных баз данных Вы видите?Какие инструменты Вам доступны для работы с БД Azure SQL?Что такое SAS-токен, и какие параметры он имеет?Какие виды сервисов предоставляет хранилище Azure?

Recommended