SQL Server на Amazon RDS и SQL Server на Amazon EC2

Tags: SQL Server, Amazon

Amazon AWS предлагает два основных варианта развертывания SQL Server в облаке: Elastic Compute Cloud и Relational Database Service. Недавно я провел несколько экспериментов с обоими типами экземпляров и много узнал о том, что возможно и невозможно сделать с этими двумя вариантами. Стоит отметить, что я ранее работал с MySQL на RDS и нашел его очень удовлетворительным и очень похожим на любой другой экземпляр MySQL. Для SQL Server, похоже, существует значительная разница между развертываниями на EC2 и версиями RDS.

Elastic Compute Cloud

Elastic Compute Cloud (EC2) - это версия виртуальной машины AWS в облаке. В этом эксперименте эта виртуальная машина может быть настроена с предустановленными версиями SQL Server. Изображения машины Amazon (AMI), доступные для использования в AWS, классифицируются на основе выпуска и версии SQL Server, как показано в отрывке скриншота на рис. 1.

Рисунок 1 - Изображения машины Amazon для экземпляров SQL Server EC2

Как и все облачные предложения инфраструктуры как службы (IaaS), экземпляры Amazon EC2, работающие под управлением SQL Server, включают в себя ряд преимуществ, раскрываемых ниже.

Высокая масштабируемость

Это достигается путем простого создания пользовательского AMI из существующего экземпляра EC2, а затем создания другого экземпляра EC2 с использованием этого уже настроенного изображения. Стоит отметить, что при работе с экземплярами EC2, которые были присоединены к домену, правильное поведение гарантируется при замене EC2 более высокой спецификацией (вертикальное масштабирование), а не попытке дублирования экземпляров для таких целей, как балансировка нагрузки. Это связано с тем, что фактическое имя компьютера по-прежнему остается неизменным при дублировании экземпляра EC2 и Active Directory оно не нравится.

Простота резервного копирования

Создание образа экземпляра EC2 в основном выполняется с резервным копированием всего сервера. Облачные вычисления делают это очень просто. Таким образом, при настройке веб-сервера, например, вы можете создать образ сервера на определенных контрольных точках. Вы можете вернуться к этим изображениям, когда вам нужно исправить проблему. В последнее время мне пришлось прибегать к предыдущему изображению, когда у экземпляра, с которым я имел дело, были проблемы с общением с доменом Active Directory. Как это сделать - отображено на рисунке 2.

Рисунок 2 - Создание изображения

Простота безопасности

При использовании экземпляров Amazon EC2 настройка правил брандмауэра так же проста, как создание группы безопасности, в которой определены порты, которые вам нужны, и исходные IP-адреса, которые вы хотите разрешить для доступа к вашим экземплярам. Лучше быть уверенным в вашем общедоступном IP-адресе и ограничивать доступ с помощью групп безопасности. Если у вас нет собственного офиса (стартапы с использованием общих рабочих областей), вы можете проверить свой IP-адрес на URL https://www.whatismyip.com/. Использовать опции безопасности и рекомендации по использованию AWS - хорошая идея.

Использование SQL Server на экземпляре Amazon EC2 очень похоже на развертывание локального SQL Server. Доступ к ОС разрешен, вы можете добавить больше хранилищ и настроить расположение файлов базы данных по желанию, вы можете использовать любые функции, доступные для выпуска выбранного SQL Server и т.д. Вы также можете выполнить собственные резервные копии для Amazon S3 (Simple Storage Service), используя программное обеспечение TNTDrive. Идея проста - установить бакет S3  в качестве диска в операционной системе EC2, на котором размещен SQL Server. Используя этот подход, вы можете перенести данные из RDS в EC2 и наоборот. Смотрите этот URL для получения информации о том, как монтировать бакет S3 в ОС Windows: https://tntdrive.com/.

Подключение к экземпляру SQL Server на EC2 очень похоже на любой другой сервер. Однако я заметил, что установление соединений с использованием частного IP-адреса из другого экземпляра EC2 оказалось немного медленным. Это может быть связано с обработкой правил брандмауэра или типами младших экземпляров, которые я использовал для своих экспериментов, но я не полностью изучил эту проблему.

Relational Database Service

В случае RDS клиенту предлагается база данных как услуга (DaaS). Доступ к операционной системе, на которой размещен экземпляр SQL Server, не разрешен. Все параметры экземпляров, выставленные AWS, настраиваются на панели управления RDS. Параметры, такие как модель лицензии, номер порта, членство в домене, режим аутентификации, настройки резервного копирования и прочие, могут быть изменены на панели управления RDS.

Чтобы изменить настройки, выберите Modify в меню Instance actions (показано на рисунке 3).

Рисунок 3 - Изменение экземпляра SQL RDS

После открытия страницы вы увидите, какие элементы можно изменить. Некоторые из них показаны на рисунке 4.

Рисунок 4 - Изменение экземпляра SQL RDS

Это не может быть серьезным ограничением в простых развертываниях, но SQL Server RDS имеет несколько ограничений.

Доступ к операционной системе

Доступ к операционной системе не допускается при использовании RDS. Это имеет несколько последствий, одно из которых заключается в том, что если вам нужно перенести базы данных, вы не сможете использовать собственные резервные копии, написанные на сервере. Для этого вам необходимо настроить Amazon S3. У Amazon S3 есть опции для резервного копирования баз данных в бакет и восстановления из бакета в экземпляр RDS. Следующие URL-адреса содержат сведения о том, как это сделать:

Нет собственных резервных копий

AWS заявляет, что RDS предоставляется в качестве управляемой службы, поэтому доступ к оболочке недоступен. Административные привилегии ограничены всеми пользовательскими базами данных экземпляра RDS. По сути, главный пользователь, который настроен при развертывании экземпляра, получает права доступа db_owner для ВСЕХ баз данных. Однако привилегии, необходимые для резервного копирования баз данных изначально, не предоставляются. Чтобы выполнить ранее упомянутую резервную копию на Amazon S3, необходимо настроить роль IAM и использовать ее для настройки опции SQLSERVER_BACKUP_RESTORE в группу параметров, настроенную для вашего экземпляра.

Нет Database Mail

В моем опыте я был весьма разочарован, что Database Mail не поддерживается в RDS для Amazon для SQL Server. Другие ключевые функции, такие как AlwaysOn, Log Shipping, Replication и Backup to Azure (понятно), не поддерживаются. Полный список можно найти здесь: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureNonSupport

Подключение к экземпляру SQL Server на RDS требует использования длинного конечного полного имени, например, следующее:

sqlsvrinst.cvws0ubvnq7f.eu-west-1.rds.amazonaws.com, 1433

Некоторые разработчики могут найти эту длинную конечную точку раздражающей, но она работает так же, как обычное имя хоста или IP-адрес для экземпляра, запущенного на обычном сервере. Он состоит из имени вашего экземпляра, идентификатора для сервера, на котором размещен экземпляр (имя хоста), региона, в котором находится этот экземпляр, а остальная часть строки, указывающая экземпляр, фактически является экземпляром RDS Amazon. Возможно, в конце должен быть добавлен IP-порт.

Эпилог

При принятии решения о том, следует ли использовать SQL Server для EC2 или SQL Server RDS, нужно подумать о стоимости, масштабе и необходимых функциях. Мы бы рекомендовали использовать экземпляры EC2 SQL для более серьезных проектов, требующих широкого спектра возможностей SQL Server и RDS для простых развертываний или случаев, когда стоимость является большой проблемой.

Развертывание любого из вариантов довольно легко с небольшой подготовкой или чтением материалов. Веб-службы Amazon предоставляют обширную документацию по всем их услугам и хорошую поддержку. Кроме того, манипулирование ресурсами в облаке безопаснее, чем on-prem, потому что гораздо легче справляться с ошибками или создавать механизмы для восстановления.



No Comments

Add a Comment