Масштабируемый серверный хостинг - PullRequest
0 голосов
/ 11 апреля 2019

Теперь у меня есть простой сервер (где-то размещен какой-то процессор xeon), запущен apache / php / mysql (нет докера, но это возможно), и я ожидаю некоторый интенсивный трафик, и мне нужен мой сервер для его обработки.

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

Что было бы самым простым и быстрым решением для переноса моего приложения на какой-нибудь масштабируемый хостинг?

У меня нет опыта работы с AWS или чем-то в этом роде.

Я читал о AWS и подобных программах, но я в основном растерян и не уверен, что мне выбрать.

1 Ответ

0 голосов
/ 11 апреля 2019

Основной выбор:

  • Масштабирование по вертикали с использованием более крупного компьютера. Тем не менее, вы в конечном итоге достигнете предела, и у вас будет одна точка отказа (один сервер!), или
  • Горизонтальное масштабирование путем добавления дополнительных серверов и распределения трафика между серверами. Это дает дополнительное преимущество обработки сбоев, поскольку в случае сбоя одного сервера другие могут продолжать обслуживать трафик.

Преимуществом горизонтального масштабирования в облаке является возможность добавлять / удалять серверы в зависимости от рабочей нагрузки . Когда все занято, добавьте больше серверов. Когда все тихо, удалите серверы. Это также позволяет снизить затраты, когда все тихо (что невозможно на месте, если вы владеете собственным оборудованием).

Архитектура предполагает размещение нескольких серверов за балансировщиком нагрузки:

Load Balancing

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

В AWS доступно несколько балансировщиков нагрузки, которые различаются по необходимости. Если вы просто отправляете трафик одному приложению, установленному на всех серверах, Network Load Balancer должно быть достаточно. В ситуациях, когда разные части приложения находятся на разных серверах (например, мобильный интерфейс или веб-интерфейс), вы можете использовать Application Load Balancer .

AWS также помогает с горизонтальным масштабированием, предоставляя сервис Amazon EC2 Auto Scaling . Это позволяет вам указать подробную информацию о серверах для запуска (образ диска, тип экземпляра, сетевые настройки), а затем автоматическое масштабирование может автоматически запускать новые серверы, когда это необходимо, и завершать те, которые не ' т требуется. (Обратите внимание, что они запускаются и заканчиваются, а не запускаются и останавливаются.)

Вы можете дополнительно определить политики масштабирования , которые сообщают автоматическому масштабированию , когда запускать / завершать экземпляры, измеряя такие показатели, как загрузка ЦП. Таким образом, количество серверов может приблизительно соответствовать объему трафика.

Следует отметить, что если у вас есть база данных , она должна храниться отдельно на серверах приложений, чтобы она не терялась. Вы можете использовать Amazon Relational Database Service (RDS) для запуска базы данных для вас, или вы можете запустить ее на отдельном экземпляре Amazon EC2.

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

...