Spec-Zone .ru
спецификации, руководства, описания, API
|
Поскольку невозможно гарантировать время работы и доступность Ваших экземпляров EC2, развертывая MySQL в пределах среды EC2, используйте подход, который позволяет Вам легко распределить работу среди своих экземпляров EC2. Есть много способов сделать это. Используя sharding методы, где Вы разделяете приложение через многократные серверы, выделяющие определенные блоки Вашего набора данных и пользователей к различным серверам, эффективный способ сделать это. Как правило легче создать больше экземпляров EC2, чтобы поддерживать больше пользователей чем обновить экземпляр до более крупной машины.
Архитектура EC2 работает лучше всего, когда Вы обрабатываете экземпляры EC2 как временные, основанные на кэше решения, а не как длительный срок, высоконадежное решение. В дополнение к использованию многократных машин используйте в своих интересах другие службы, такие как memcached, чтобы обеспечить дополнительное кэширование для Вашего приложения, чтобы помочь уменьшить загрузку на сервере MySQL так, чтобы это могло сконцентрироваться на записях. На больших и очень больших экземплярах в пределах EC2 доступная RAM может обеспечить кэш памяти большой емкости для данных.
Большинство типов топологии масштаба, которую Вы использовали бы со своими собственными аппаратными средствами, может использоваться и применено в пределах среды EC2. Однако, используйте ограничения и совет, уже данный, чтобы гарантировать, что любые потенциальные отказы не теряют Вас любые данные. Кроме того, потому что относительное питание каждого экземпляра EC2 настолько низко, быть подготовленным изменить Ваше приложение, чтобы использовать sharding и добавить далее экземпляры EC2, чтобы улучшить производительность Вашего приложения.
Например, возьмите типичную среду масштаба, показанную после, где единственное ведущее устройство тиражируется к одному или более ведомым устройствам (три в этом примере) с веб-сервером, работающим на каждом ведомом устройстве репликации.
Можно воспроизвести эту структуру полностью в пределах среды EC2, используя экземпляр EC2 для ведущего устройства, и один экземпляр для каждой сети и ведомых серверов MySQL.
В пределах среды EC2 внутренние (частные) IP-адреса, используемые экземплярами EC2, являются постоянными. Всегда используйте эти внутренние адреса и имена, связываясь между экземплярами. Только используйте общедоступные IP-адреса, связываясь с внешним миром - например, предавая гласности Ваше приложение.
Чтобы гарантировать надежность Вашей базы данных, добавьте по крайней мере одно ведомое устройство репликации, выделенное обеспечению активного резервного копирования и хранения к Amazon средство S3. Можно видеть пример этого в следующей топологии.
Используя memcached в пределах Ваших экземпляров EC2 должен обеспечить лучшую производительность. У больших и очень больших экземпляров есть существенное количество RAM. Использовать memcached в Вашем приложении, загружая информацию из базы данных, сначала проверка, существует ли элемент в кэше. Если данные, которые Вы ищете, существуют в кэше, используйте это. В противном случае перезагрузите данные от базы данных и заполните кэш.
Sharding делит данные на Вашу всю базу данных, выделяя отдельные машины или машинные группы, чтобы обеспечить уникальный набор данных согласно соответствующей группе. Например, Вы могли бы поместить всех пользователей с фамилией, заканчивающейся в буквах A-D на единственный сервер. Когда пользователь соединяется с приложением, и их фамилия известна, запросы могут быть перенаправлены к соответствующему серверу MySQL.
При использовании sharding с EC2 разделите веб-сервер и сервер MySQL в отдельные экземпляры EC2, и затем примените sharding логику решения в Ваше приложение. Как только Вы знаете, какой сервер MySQL следует использовать для того, чтобы получить доступ к данным, Вы тогда распределяете запросы соответствующему серверу. Можно видеть выборку этого на следующей иллюстрации.
С sharding и EC2, быть осторожным, что потенциал для отказа экземпляра не влияет на Ваше приложение. Если экземпляр EC2, который обеспечивает сервер MySQL для определенного черепка, перестал работать, то все данные на том черепке становятся недоступными.