Вопрос

Как мы делали это раньше, я хотел бы собрать полезную информацию для всех, кто переходит к балансировке нагрузки, поскольку являются проблемы, о которых ваш код должен знать.

Мы перешли с одного сервера Apache на Squid в качестве обратного прокси-сервера/балансировщика нагрузки с тремя серверами Apache позади.

Мы используем PHP/MySQL, поэтому проблемы могут быть разными.

Вещи, которые нам предстояло решить:

Сессии

Мы перешли от «стандартных» php-сессий (файлов) к распределенным memcached-сессиям.Простое решение, которое нужно сделать.Таким образом, вам также не нужны «прикрепленные сеансы» на вашем балансировщике нагрузки.

Кэширование

К нашему нераспределенному apc-кэшу на каждый веб-сервер мы добавили еще один уровень memcached для кэширования распределенных объектов и заменили им все старые/устаревшие системы файлового кэширования.

Загрузки

Загрузки отправляются в общую папку (nfs).

Что мы оптимизировали для скорости:

Статические файлы

Наша основная NFS запускает Lighttpd, обслуживающий (также загружаемые пользователем) изображения.Squid знает об этом и никогда не запрашивает изображения у наших Apache-узлов, что значительно повышает производительность.Squid также настроен для кэширования этих файлов в оперативной памяти.

Что вы сделали, чтобы подготовить свой код/проект к балансировке нагрузки, какие еще вопросы беспокоят людей, думающих об этом шаге, и какую платформу/язык вы используете?

Это было полезно?

Решение

При этом:

Для http-узлов я стараюсь создать единый системный образ (для этого подходит ocfs2) и использую Pound или Crossroads в качестве балансировщика нагрузки, в зависимости от сценария.Узлы должны иметь небольшой локальный диск для подкачки и во избежание большинства (но не всех) проблем, связанных с CDSL.

Затем я добавляю в игру Зена.Если вы разместите на Xenbus небольшой временный объем информации (т.сколько виртуальной памяти Linux на самом деле обещал процессам на одну виртуальную машину, также известную как Commited_AS), вы можете быстро обнаружить неработающий балансировщик нагрузки и настроить его.Oracle тоже это уловил..и сейчас работает над улучшением драйвера воздушного шара в Linux.

После этого я смотрю на стоимость разделения использования базы данных для любого конкретного приложения на sqlite3 и любую базу данных, которую приложение хочет изначально, при этом понимая, что мне нужно разделить базу данных, чтобы posix_fadvise() мог выполнять свою работу и не загрязнять буферы ядра без необходимости.Поскольку большинству служб СУБД требуется собственная буферизация, вы также должны позволить им выполнять собственную кластеризацию.Это действительно определяет тип кластера БД, который я использую, и то, что я делаю с драйвером воздушного шара.

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

Выбор контрольного сигнала/перехвата действительно зависит от конкретной сети и ожидаемого использования кластера.Трудно обобщить это.

Конечным результатом обычно являются 5 или 6 физических узлов с довольно большим объемом памяти, загружающие монитор виртуальной машины + гостей, подключенные к зеркальному хранилищу.

Хранение также сложно описать в общих чертах.иногда я использую кластерный LVM, иногда нет.Это не изменится, когда LVM2 наконец отойдет от своего текущего API на основе строк.

Наконец, вся эта координация приводит к чему-то вроде Авгий обновление конфигураций «на лету» на основе событий, передаваемых через Xenbus.Сюда входит сам ocfs2 или любой другой сервис, конфигурации которого просто не могут размещаться в одном образе системы.

Это действительно вопрос конкретного приложения..можете ли вы привести пример?Я люблю кэш памяти, но, например, не каждый может извлечь из него пользу.Мы проверяем вашу конфигурацию или обсуждаем лучшие практики в целом?

Редактировать:

Извините за то, что я так ориентирован на Linux...обычно это то, что я использую при проектировании кластера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top