У меня очень простой вопрос, я понимаю, что такое балансировка нагрузки и как она работает, однако я не могу визуализировать это на практике.
Допустим, у меня на сервере работает приложение AMP. Однажды трафик становится слишком большим, и я должен начать балансировать нагрузку, и я добавляю другой сервер. У меня уже есть все мои данные, хранящиеся на первом, так что бы я положил на этот сервер? Я мог бы скопировать файлы веб-сайта, но моя база данных все еще будет на первом сервере, и мне все равно придется подключаться к нему со своего нового сервера, так что это не кажется хорошим решением? Я мог бы добавить третий сервер и сделать его сервером MySQL и использовать его для хранения моих данных и подключения к нему моих серверов Apache, но это тоже не кажется хорошим решением, потому что у меня все равно будут запросы на получение данных от одно место.
Как это делается в реальности?
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 сервера баз данных и балансировщик нагрузки (прокси). Итак, ваш набор будет состоять из: