Назад | Перейти на главную страницу

Решение для быстрой загрузки веб-сайтов PHP / MySQL в нескольких регионах

Я размещаю веб-сайт на основе ExpressionEngine на одном экземпляре Amazon EC2 в регионе Восток США (Вирджиния). Я использую Ubuntu.

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

Цель: Мне нужно начать обслуживать один и тот же веб-сайт по всему миру, одинаково быстро в Гонконге, Нью-Йорке и Лос-Анджелесе.

Я рассмотрел два решения:

1. Настройка трех отдельных инстансов EC2 для трех регионов: Вирджиния, Орегон и Сингапур. Используйте Amazon Rot53 Geo Location для направления трафика к инстансам на основе IP-адреса браузера.

Плюсы: сайт будет загружаться быстро для региона.

Противоположно: по сути, это будут три отдельных веб-сайта. Разве я ошибаюсь?

  1. Установка одного экземпляра в регионе, одинаково удаленном от всех трех мест: (Ирелианд), и повышение производительности сервера до максимальной доступной производительности.

Плюс: это будет один и тот же сайт для всех регионов.

Против: сделать это достаточно быстро будет дорого.

Мои проблемы:

а) Я не знаю, как синхронизировать настройки сервера, базу данных и контент между несколькими экземплярами Ubuntu в реальном времени. Если бы знающий человек объяснил мне, как это сделать, я был бы очень благодарен.

б) Я не очень хорошо знаком со всеми ресурсами Amazon AWS. Есть ли в AWS встроенный метод, который позволил бы мне достичь моей цели - одинаково быстро обслуживать один членский веб-сайт на основе PHP / MySQL по всему миру во всех трех выбранных местах?

Есть много способов снять шкуру с кошки, но в основном вам нужно так или иначе воспроизвести свой сайт в нескольких географических точках.

Вот несколько вариантов, которые могут быть подходящими, если ваше приложение сильно читается (что есть на большинстве веб-сайтов). Я не знаком с Expression Engine, поэтому не уверен, насколько сложно реализовать эти архитектуры в вашем случае.

Вариант 1. Реплики межрегионального чтения

  • Иметь сервер приложений EC2 в каждом регионе
  • Есть читать реплику база данных в каждом регионе
  • Пишите только в базу данных основного региона
  • Если вам приходится иметь дело с загрузкой файлов, лучше всего хранить их в S3 и иметь CloudFront кэшировать их в различных регионах.

Вариант 2: кеширование прокси

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

Вариант 3: кэширование базы данных

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