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

Какая оптимальная конфигурация оборудования для использования LAMP с большой нагрузкой?

Мне нужно запустить приложение Linux-Apache-PHP-MySQL (платформа электронного обучения Moodle) для большого количества одновременно работающих пользователей - я планирую 5000 пользователей. Под одновременной работой я подразумеваю, что 5000 человек должны иметь возможность работать с приложением одновременно. «Работа» означает не только чтение из базы данных, но и запись.

Приложение не очень типичное, так как оно выполняет много вставок / обновлений в базе данных, поэтому методы кеширования не очень помогают. Мы используем механизм хранения InnoDB. Кроме того, приложение написано не с расчетом на производительность. Например, один поток Apache обычно занимает около 30-50 МБ ОЗУ.

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

Сейчас мы используем два HP DLG 380 с двумя 4-ядерными процессорами, которые способны справляться с гораздо меньшей нагрузкой (обычно 300-500 одновременных пользователей). Разумно ли вкладывать средства в такие устройства и строить кластер, используя их, или лучше использовать более мощное оборудование?

Мне особенно любопытно

Другое дело, как все собрать, это самая оптимальная архитектура. Кластеризация с MySQL довольно сложна (люди жалуются на MySQL Cluster, даже здесь, в Stackoverflow).

Диски. МНОГО БЫСТРЫХ дисков за правильным RAID-контроллером. Я лично использую стойку SuperMicro 2, в которой можно разместить 24 2,5-дюймовых диска, вместе с дисками WD Velociraptor со скоростью вращения 10 тыс. Об / мин - для меня этого достаточно. Вы можете легко сложить эти коробки для размещения большего количества дисков - контроллер Raid, который я использую (Adaptec 5805 ) можно адресовать примерно к 190 дискам. Когда речь идет о базе данных высокого класса, без вставок и обновлений, диски БУДУТ вашей проблемой.

Получите X из них (x> 1) для избыточности и управляйте / подчиняйте их базой данных (здесь нет эксперта mySQL).

сеть: возможно 1 Гбит внутри кластера. Прежде чем перейти на 10 Гбит - посмотрите Infiniband (12 Гбит). С правильными платами это дешевле, чем использование 10-гигабитного Ethernet, и имеет лучшую задержку.

Затем используйте меньшие / другие коробки для передней части. И supermicro, и Tyan имеют многоузловые корзины - вы можете получить систему с двумя стойками, которая представляет собой 4 отдельных компьютера, каждый с 2 ​​процессорами. Кластеризация интерфейса;) Современные процессоры, слава богу, могут адресовать значительный объем оперативной памяти, так что процесс 50 МБ / apache с этой стороны не так уж и плох. Привыкайте к машинам с 32 или 64 гигабайтами оперативной памяти;)

В качестве альтернативы, вы можете посмотреть нито-лопасти для передней части, но я никогда не мог найти в них финансового смысла (Слишком дорого, ПЛЮС клетка - привет?).

Забудьте о кластеризации - она ​​может плохо работать, когда всем нужно писать в базу данных.

Возможно, вы сможете разделить свои данные - используя несколько баз данных. Например, пользователи, которые substring(md5sum(username) for 1)="0" подключиться к базе данных databasename_0 на сервере databaseserver_0, substring(md5sum(username) for 1)="2" подключиться к базе данных databasename_2 на сервере databaseserver_2.

Вы можете масштабировать этот способ от 1 сервера до 16. Например, для 2 серверов - DNS-имена databaseserver_0 к databaseserver_7 указал бы на server1 и databaseserver_8 к databaseserver_f указал бы на server2. Если один сервер более мощный, чем другой, вы можете заставить его работать с большим количеством баз данных.

Таким образом, вы можете легко и недорого масштабировать.