Что установлено на «сбалансированных» серверах

294
php_nub_qq

У меня очень простой вопрос, я понимаю, что такое балансировка нагрузки и как она работает, однако я не могу визуализировать это на практике.

Допустим, у меня на сервере работает приложение AMP. Однажды трафик становится слишком большим, и я должен начать балансировать нагрузку, и я добавляю другой сервер. У меня уже есть все мои данные, хранящиеся на первом, так что бы я положил на этот сервер? Я мог бы скопировать файлы веб-сайта, но моя база данных все еще будет на первом сервере, и мне все равно придется подключаться к нему со своего нового сервера, так что это не кажется хорошим решением? Я мог бы добавить третий сервер и сделать его сервером MySQL и использовать его для хранения моих данных и подключения к нему моих серверов Apache, но это тоже не кажется хорошим решением, потому что у меня все равно будут запросы на получение данных от одно место.

Как это делается в реальности?

0

2 ответа на вопрос

1
NextGen Engineer

второй вариант обычно используется при использовании устройства балансировки нагрузки. То есть существует два сервера приложений, и устройство балансировки нагрузки распределяет входящий трафик между двумя серверами приложений на основе разных алгоритмов. Например, Round Robin, сначала наименьшее количество запросов и т. Д.

Два сервера приложений должны быть подключены к одному источнику данных. Для этой цели вы можете использовать кластерную базу данных, которая довольно хорошо работает с MariaDB (бесплатно, с открытым исходным кодом и MySQL folk).

Надеюсь, что это ответ на ваш вопрос.

но не создаст ли это узкое место, когда все серверы приложений используют один и тот же сервер данных? php_nub_qq 7 лет назад 0
Вот почему я предлагаю вам создать кластерную базу данных. Вы можете иметь несколько устройств, совместно использующих одну и ту же базу данных. Он имеет много преимуществ, таких как: отсутствие ведомого лага, отсутствие потерянных транзакций, масштабируемость как для чтения, так и для записи, а также, среди прочего, меньшие задержки клиента. NextGen Engineer 7 лет назад 0
@php_nub_qq Это, конечно, зависит от того, что дороже: логика приложения или доступ к базе данных. Вам нужно только масштабировать по мере необходимости. Daniel B 7 лет назад 0
0
Jarek Jóźwik

Там может быть ряд решений для вашего случая.
Во-первых - да, вы копируете весь каталог www на другой сервер с установленными apache и php точно такими же версиями, что и на первом узле. Если ваше приложение использует файловое хранилище, лучше всего разместить его на общем ресурсе - например, NFS или sshfs (на отдельном сервере). Если вы хотите разместить это хранилище файлов на обоих серверах приложений, то вам нужно синхронизировать их в режиме реального времени (не очень хорошее решение). NFS, созданная в SAN, в этом случае является наилучшей, поскольку у вас есть защита SAN и т. Д.
Что касается базы данных - один сервер базы данных, отдельный от приложения, размещенный с достаточным объемом ОЗУ и дискового пространства, может обрабатывать множество соединений и множество запросов. Вам придется начать беспокоиться, если количество запросов в секунду достигнет тысяч. Но если вы достигнете этой точки, то решение, как уже предлагалось, кластер БД. Чтобы построить кластер, вам нужно как минимум 3 сервера баз данных и балансировщик нагрузки (прокси).
Итак, ваш набор будет состоять из:

  1. балансировщик нагрузки для веб-серверов
  2. минимум 2 сервера приложений / веб
  3. сервер базы данных
  4. файловый сервер (если требуется)

или, в случае кластера БД:

  1. балансировщик нагрузки для серверов баз данных
  2. 3 сервера баз данных в кластере

Похожие вопросы