Архитектура более или менее стандартная для высоконагруженных приложений.
На входе стоит nginx, который раздает статику и картинки.
Далее идет Apache. Транзакционные данные хранятся в MySQL, нетранзакционные в MongoDB. Для кеширования используется memcached, для поиска с учетом морфологии - Sphinx.
Все это сейчас работает на одном сервере под FreeBSD. Там 48 Гбайт памяти и SAS диски на контроллере LSI с батарейкой.
Memcached отражает примерно 100К запросов в минуту, со временем возрастет в несколько раз.
Приложение представляет собой очень сложную ERP-систему, интегрированную с интернет-магазином (тоже нашего производства). Оно написано нами на Перле. Помимо стандартных функций интернет-магазина, реализован складской учет, логистика, автоматизированный заказ товаров у поставщиков, автоматический импорт прайсов у поставщиков, статистика, учет продаж и довольно много всего другого.
Чтобы сделать предложение клиенту, нам потребуется архитектура аппаратных и программных средств, предполагаемых к использованию в кластере, а также оценка общей стоимости с учетом затарат на железо. Если есть разные тарифные планы по сопровождению, то нужна будет стоимость по каждому плану.
Если нужно что-то еще по архитектуре, пожалуйста, напишите.
Я связывался с ними через техподдержку, и мне сказали, что смогут сделать с использованием хранилища, подключенного по оптике, но поддержка такого кластера будет за доп. деньги. Т.е. вся поддержка, даже такая, которая для обычной конфигурации выполняется без доп. оплаты. Это, конечно, не очень хорошо, но само по себе, видимо, не критично.
Про ndb-кластер почитаю, похоже с различными вариантами кластеризации надо будует разбираться самому. Хорошо что это, наверное, можно попробовать на виртуальных машинах, хотя сейчас подумываю купить несколько недорогих компов под макет кластера.
По поводу NFS - у нас идет огромное количество запросов к файлам витрины (html, картинки, файлы баз данных и т.п.), так что мне кажется, что хранилище, подключенное оптикой, будет работать быстрее и надежнее. Да, я знаю что это решение от 25000 баксов, но и серверы мы покупаем по цене около 10000 зеленых...
Насчет поддержки с гарантированным временем реакции в случае штатного, если можно так сказать сбоя, я согласен. Страшно если перестанет работать весь кластер целиком, а я сам не смогу быстро понять в чем дело и поднять его.
Экспериментировать, конечно, буду, т.к. тема мне очень интересна и, как я считаю, еще много кому.
Александр Фролов добавил 09.09.2011 в 10:27
Я сейчас пытаюсь понять, на чем мне собрать дома макет кластера и ищу подходяшее и недорогое железо, потом буду пробовать разные варианты кластеризации мускула. Насколько я понимаю, не все можно попробовать на виртуальных машинах.
От IBM ответа пока нет, мне сказали, что там могут больше месяца рассматривать заявку, но есть возможность получить хорошую скидку. В принципе, если сделать отказоустойчивый сервер MySQL на железках от IBM, с остальным проблем меньше, т.к. остается только масштабирование и кластеризация апача, memcached, mongodb и sphinx, а для этого есть понятные мне и недорогие решения.
Если не пройдет с IBM, буду делать на отдельных серверах.
В начале топика я писал, что isp manager cluster реализует схему мастер-слейв для MySQL. При этом задержки в репликации приведут к ошибкам в логике работы приложения. Кроме того, они предлагают NFS, а это не пройдет по производительности. А все изменения (например, добавления хранилища, поключенного через оптику, кластер мастер-мастер и т.п.) для них превращают кластер в нестандартный со всеми вытекающими последствиями. Ну и гарантированное время реакции поддержки у них не предусмотрено даже за деньги, что жаль...
Есть набор программных средств, работающих на одном физическом сервере.
На входе nginx, потом apache. Приложение, написанное на Перл и реализующее функции ERP, CRM, CMS, а также интернет-магазина, обращается к MySQL (транзакционные данные) и MongoDB (нетранзакционные данные). Поиск осуществляется как с помощью MySQL, так и через Sphinx (с учетом морфологии). Кеширование выполняется через memcached.
Требуется перенести все это на систему, состоящую из нескольких серверов, поддающуюся масштабированию. При выходе из строя одного сервера система должна продолжать работать без вмешательства администратора. Система должна быть масштабируемой.
Я знаю как создавать кластеры MongoDB и memcached, но хотелось бы надежное решение и для MySQL.
Система высоконагруженная (примерно 100к запросов к базе в минуту).
Так как сам я вряд ли смогу все создать и сопровождать в одиночку, требуется сопровождение, желательно от ИТ-компании, у которой есть опыт создания и сопровождения подобных проектов.
Вот, собственно, примерно такие требования...
Я представляю заказчика, поэтому не могу озвучивать бюджет. Я надеюсь получить предложения с просчитанным бюджетом, чтобы предложить их заказчику. Было бы глупостью с моей стороны говорить, что у заказчика столько-то денег и мне нужно их потратить, ситуация другая. Мне нужно изучить возможные архитектуры и решения, посчитать для каждой из них бюджет, а потом выбрать и предложить заказчику. Т.е. изучить предложения, а не засветить бюджет заказчика.
Например, за полмиллиона можно сделать то-то и то-то, будет работать так, за миллион - так, а за сто миллионов - этак.
Вот, например, с бюджетом ISP Cluster все ясно, и написано на сайте. Кластеры на Windows, которые предлагает один из сборщиков компьютеров, тоже у них просчитан и цены есть на сайте. А вот в моем случае нет ясности ни с архитектурой, ни с ценами.
Вот и мне кажется, что приложение не увидит объединенных процессорных ресурсов и объединенной памяти. Во всяком случае, с ходу я не нашел, где это было бы обещано...
Да, было бы интересно попробовать самому, и узнать почем готовое облако с настройкой и сопровождением.
Это я еще не рассматривал. Там действительно можно объединять ресурсы нескольких серверов, например, процессоры и оперативную память, для выделения их одному приложению?
Я полагал, что облачные хостинги ориентированы главным образом на запуск нескольких приложений в рамках одного сервера с возможностью мигрирования на другие серверы, а у нас одно высоконагруженное приложение.
У нас в России кто-нибудь занимается созданием и сопровождением подобных облаков? Есть положительный опыт их применения для высоконагруженных проектов?
Да, если решение от IBM окажется слишком дорогим, придется идти своим путем, вроде того что сделано для битрикса. Однако хотелось бы получить помощь на этапе создания такого кластера и его сопровождения.
Собственно, в первом приближении можно сделать как у них: балансировщик на входе, два сервера приложений с дисковым массивом, подключенным по оптике, два сервера MySQL в кластере мастер-мастер, кластер серверов MongoDB и так далее.
Александр Фролов добавил 07.09.2011 в 16:08
Хотелось бы развивать именно свой бизнес.