Стратегия отработки отказа сервера базы данных EC2 - PullRequest
7 голосов
/ 19 декабря 2009

Я планирую развернуть свое веб-приложение в EC2. У меня есть несколько экземпляров веб-сервера. У меня есть 1 основной экземпляр базы данных. У меня есть 1 экземпляр базы данных отработки отказа. Мне нужна стратегия для перенаправления веб-серверов на IP-адрес экземпляра базы данных отработки отказа при сбое основного экземпляра базы данных.

Я надеялся, что смогу использовать Elastic IP в своих строках соединения. Но веб-серверы не могут получить доступ / проверить связь с Elastic IP. У меня есть несколько идей грубой силы, чтобы решить эту проблему. Тем не менее, я пытаюсь найти наиболее элегантное решение из возможных.

Я использую все .Net и SQL Server. Мои строки подключения зашифрованы.

Есть ли у кого-нибудь стратегия отказа при сбое экземпляра базы данных в EC2 с использованием некоторой формы автоматизации или конфигурации DNS?

Пожалуйста, дайте мне знать.

Ответы [ 5 ]

1 голос
/ 19 декабря 2009

http://alestic.com/2009/06/ec2-elastic-ip-internal

рассказывает, как использовать публичный DNS Elastic IP.

0 голосов
/ 27 марта 2012

Чтобы расширить ответ Гарета, программное обеспечение для управления облаком обычно решает этот тип проблем. RightScale является одним из них, но вы можете попробовать enStratus или Scalr (отказ от ответственности: я работаю в Scalr). Эти инструменты предоставляют решения по отказоустойчивости, такие как:

  • Резервное копирование: вы можете запланировать автоматические снимки тома EBS, содержащего данные
  • Отказоустойчивая база данных: в случае сбоя ведущему назначается подчиненное устройство, и смонтированное хранилище переключается, если отказавший мастер и новый мастер находятся в одном и том же AZ, или сделан снимок тома

Если вы хотите создать собственное решение, вы можете повторить описанный ниже процесс, который мы используем на Scalr:

  • Есть ли раб в том же AZ? Если так, продвиньте это, переключите EBS объемы (которые ограничены одним AZ), переключите любой ElasticIP вы возможно, перенастроить репликацию остальных ведомых.
  • Если нет, есть ли раб, полностью реплицированный в другом АЗ? Если так, продвигайте это, затем сделайте выше.
  • Если в том же AZ нет раба и нет раба полностью реплицируется в другой AZ, а затем создать снимок от мастера том, и используйте этот снимок, чтобы создать новый том в AZ, где раб работает. Затем сделайте выше.
0 голосов
/ 09 декабря 2010

Я всегда думал, что в строке соединения есть такая возможность

Это взято (но еще не проверено) из Как добавить Failover Partner в строку подключения в VB.NET :

Если вы подключаетесь с помощью ADO.NET или SQL Собственный клиент для базы данных, которая будучи отраженным, ваше приложение может воспользоваться способностью водителей автоматически перенаправлять соединения когда отработка отказа при зеркальном отображении базы данных происходит. Вы должны указать начальный основной сервер и база данных в Строка подключения и отработка отказа партнерский сервер.

Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
Initial Catalog=myDataBase;Integrated Security=True;

Существует, конечно, много других способов написать строку подключения, используя зеркальное отображение базы данных, это только один пример, указывающий на отказоустойчивость функциональность. Вы можете объединить это с другими строками подключения доступные варианты.

0 голосов
/ 21 декабря 2009

Если вы хотите выложить немного дополнительных денег, взгляните на Rightscale's инструменты; они создали пользовательские образы серверов и вспомогательные инструменты, которые обрабатывают отказоустойчивость базы данных (среди прочего). Эта ссылка объясняет, как это сделать с MySQL, поэтому, надеюсь, покажет вам некоторые принципы, даже если он не использует SQL Server.

0 голосов
/ 19 декабря 2009

Не использовал EC2, но вам обязательно нужно:

(a) переведите ваш интерфейс в какой-либо пользовательский режим обслуживания, который вы определяете, пока вы переключаете IP; и заставьте интерфейс выполнить необходимые шаги для управления потенциальными проблемами целостности данных и потери данных, связанными с выходом из строя предыдущего сервера и новым сервером, когда он входит и выходит из вашего пользовательского режима обслуживания

ИЛИ, для системы с нулевым временем простоя:

(b) спроектировать систему на уровне объекта / реляционного уровня и уровня транзакции с нуля, чтобы обеспечить отказоустойчивость при отказе во время простоя. Это не то, что вы можете быстро подключить к любому приложению.

(c) использовать некоторую поддержку базы данных для автоматического перехода на другой ресурс. Я не знаю, существует ли поддержка SQL Server для отработки отказа, подходящая для вашего приложения, или она уместна здесь. Я предлагаю добавить в вопрос тег "sql-server", чтобы начать поиск нужной аудитории.

Если эластичные IP-адреса не работают (что звучит странно, если не сказать больше - если вы не поговорите об этом с EC2), возможно, вы сможете указать своему внешнему интерфейсу, какой IP-адрес новой базы данных использовать одновременно время, чтобы сказать, чтобы перейти из режима обслуживания в нормальный режим.

...