Александр Фролов

Александр Фролов
Рейтинг
155
Регистрация
27.12.2007
Должность
Владелец ИТ-компании Shop2YOU
Интересы
Основатель сервиса Shop2YOU — cоздание интернет-магазинов
zexis:
Мне тоже было бы интересно как сделать на заказ масштабируемую, отказоустойчивую систему под сложную базу данных за не дорого, что бы она работала без помощи админов.
Но боюсь, такое не возможно.
Был бы шанс это реализовать если делать самому и у вас много опыта.
Тогда можно было бы за несколько месяцев продумать архитектуру, создать ее и отладить
Но на заказ это сделать за недорого не получится.

Понимаете, пока я еще не получил от поставщиков решений ни одного предложения по архитектуре и ценам, так что пока непонятно, дорого это для заказчика или нет.

Есть конкретное предложение от ISP System (ISPManager Cluster), которое не проходит по причинам, упомянутым в начале топика.

У меня есть опыт в администрировании FreeBSD, думаю и с Линуксом справлюсь, а софт весь написан нашей компанией. Но нужно отработанное решение, не пробовать же все подряд. На первых порах, видимо, и буду сам заниматься, но поддержка все равно будет нужна.

zexis:
Сколько убытков принесет простой вашего сайта в течении пары часов?
Судя по тому что для вас нанять админов дорого, убыток от простоя будет не огромным.

Разработка распределенной по нескольким ДЦ отказоустойчивой системы будут стоить вряд ли дешевле чем нанять штат админов.
Учитывая сложность вашей базы данных, создание отказоустойчивой системы будет еще более дорогим.

По моему ваши опасения что выйдет из строя сервер преувеличены.
Сервер на качественных комплектующих проработает несколько лет без сбоев с высокой вероятностью.
Для маленького бюджета это достаточная надежность.
Даже яндекс, рамблер и вебмани лежат иногда.

Вероятность сбоев каналов в ДЦ более вероятны чем сбой одного сервера.

PS
ИМХО, когда убыток от часа простоя вашего сайта превысит 3000-5000$ баксов, только тогда нужно думать об еще большей отказоустойчивости, чем дает один качественный сервер с RAID и двумя блоками питания.

Ну как бы все пытаются меня убедить, что мне не нужен ни кластер, ни масштабируемость)

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

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

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

iHead:
дешевле и надежнее будет нанять "дежурного" админа, который переключит в случае чего запросы на дублирующий сервер, нежели усложнять систему :)
надо понимать, что аварийная ситуация будет, возможно, 1-3 случая в год, а, возможно и совсем не будет.
программная часть (я о движке сайта) серьезных проектов все равно будет периодически обновляться, т.е. человека из такой системы не исключить.

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

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

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

iHead:
Есть ощущение, что на следующем шаге запасного сервера с копией, близкой к realtime вам будет достаточно.

Смотря для чего достаточно...

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

Я бы не заморачивался, если бы база была не транзакционной, и сделал бы все штатными средствами MongoDB. Однако приходится использовать MySQL, а там кластер как-то не радует(

Александр Фролов добавил 07.09.2011 в 09:49

Jet D.:
Можем предоставить HA NSы с фэйловером - гео-распределенная сеть DNS-серверов с IP anycast, мониторинг от нескольких секунд, TTL можно также установить минимальный.

Да, это может быть интересно, но мне надо сначала определиться с архитектурой системы в целом. А эти NS сколько стоят?

Pilat:
"дисковую систему с оптическим интерфейсом" - это уже расходы на уровне десятков килобаксов только на систему хранения, может быть тогда стоит озвучить бюджет? Ведь думать о кластере за 10К и за 100К - это разные немного вещи.

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

Сейчас меня интересуют решения с кластером по минимальным ценам.

Александр Фролов добавил 06.09.2011 в 19:15

iHead:
слишком долго и много теоретизируете.
о движке сайта вобще ни слова.
начните с простого, усложнить всегда успеете.
пока вы раздумываете как сделать конфетку, конкуренты убегут настолько далеко, что даже с HA-кластерами будет не догнать.

Что касается "движка", то это очень сложная разработка, наша собственная (склад, логистика, документооборот, статистика, учет продаж и т.п.). Там есть nginx, apache, mysql, memcached, mondodb, sphinx, т.е. много всего. Проект высоконагруженный, используется кеширование и разные технологии ускорения.

Требуется кластеризация MySQL, и с этом у меня самые большие сомнения - где найти специалистов с опытом.

Срочности особой нет, т.к. все работает как раз в простом варианте (ну если его можно назвать простым) на одном сервере, и запасной сервер готовится. А вот подумать прежде чем предлагать заказчику заплатить круглую сумму и выбрать оптимальное, проверенное решение, было бы не плохо. Поэтому я и ищу наиболее подходящее решение, а также исполнителей с опытом реализации подобных проектов.

Pilat:
Вот не неттопах точно не стоит. У них всё не так как у настоящих серверов, поэтому любые цифры, которые получите, смысла иметь не будут (процессоры слабые и ущербные, диски 5400 и со слабыми контроллерами, сетевых интерфейсов больше двух не бывает, и так далее). А вот функционал на виртуалках проще отлаживать - приходится много конфигураций проверять.
Хотя я себе и купил неттоп. Шумит сильно... за те же деньги я мог бы купить несколько древних компьютеров с лучшими характеристиками.

И всё же непонятен вопрос со стоимостью. Если есть много денег - то почему бы ту же vmware не поставить в режиме отказоустойчивости, или ещё что-то подобное.

Мне на первом этапе нужны не столько цифры, сколько научиться создавать и администрировать кластер Линукса. Поэтому и подумал про неттопы, а то обычные мыльницы очень сильно жужжат. Но с неттопами боюсь нарваться на несовместимость по драйверам.

А по поводу денег - их бывает мало или очень мало)

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

Вообще обычно когда спрашиваешь про отказоустойчивость, многие говорят, что надо. А когда называешь цены, обычно говорят что ну ладно, подумаешь, пусть денек сервер и постоит) Поэтому нужно недорогое, но надежное решение, как бы смешно это не звучало.

rtyug:
если добавить/изменить A запись и увеличить serial, s2.site.com разве надо долго ждать?
магазин - это картинки и база с выборкой? если так и есть, то тут не помешает поставить магазин и биллинг на разные сервера (на разные кластера)

Ждать придется уж точно больше 10 минут, и еще не у всех пользователей DNS обновится одновременно. И гигабайты бекапа восстанавливаются далеко не мгновенно.

Магазин, про который я говорю, это очень сложный комплекс программ с интегрированной системой ERP (именно ERP - системой планирования ресурсов предприятия), а не только CRM и CMS, системой складского учета, документооборотом, поддержкой логистики, статистики и так далее и так до бесконечности.

Очень большой и сложный проект, сложность витрины составляет менее десятой доли процента общей сложности. Поэтому мне так нравится решение от IBM, когда при создании отказоустойчивого решения в архитектуру проекта и его реализацию не нужно вносить никаких изменений. Но вот стоимость...

rtyug:
тут не соглашусь, что Вы будите делать такое что будет ущерб?

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

  • если Вам нужно добавить индексы в таблицу, то можно вырубить сервер раз в месяц на 2-6 часов (кстати, если много мощных Slave'ов индексы добавляются быстро)
  • если у Вас сложная архитектура таблиц и Вы запускаете скрипт который изменяет данные и может их "похерить", то эти данные нужно зарезервировать в запасную таблицу, в случае не корректности потом опять оригинальные данные вставить/обновить обратно, чтобы всю базу не бэкапить обратно...
  • больше идет вставка в таблицах или больше всего выборка?


rtyug добавил 06.09.2011 в 16:07
может стоит интернет магазин и его биллинг (там где заказы с деньгами) поставить на разные сервера :D
(там где магазин(ы) там будет только выборка)

Для заказчика простои сервера даже в течение 10 минут крайне нежелательны.

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

А хотелось бы, чтобы при выходе из строя одного из серверов кластера система продолжала работать, как ни в чем ни бывало. А я чтобы получил сообщение на электронную почту и спокойно разбирался, в чем дело и почему. Потом чтобы восстановил сервер и опять сделал его составляющим элементом кластера.

Архитектуа системы довольно сложная, там не только MySQL, но еще и MongoDB, используются транзакции и много чего еще. Поэтому делать резервные копии части базы не представляется возможным, а репликацию, конечно, можно сделать. Но хотелось бы еще сопровождение от тех, кто уже имеет опыт в репликации MySQL.

netwind:
так он не верит. опять такую же тему создал

Да я верю, что надежный сервер повысит надежность, но что будет, если мне, например, нужно забрать его на профилактику? Что если даже 10-минутный простой приведет к возникновению ущерба?

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

Кстати, MongoDb плохо реагирует на аварийное завершение.

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

А пока я ставлю второй резервный сервер, но время простоя при ручном восстановлении данных из бекапов может составить часы.

Pilat:
Насчёт тестов на неттопах. Если захотите виртуализацию использовать на них, имейте ввиду - не выйдет, они не поддерживают обычно необходимые инструкции.

Вообще я думал купить парочку неттопов, воткнуть их в свич и установить на все это Scientific Linux в кластере, апач и MySQL. Другие сервисы я могу отлаживать на виртуальных машинах, работающих на WmWare, сервер уже есть. А вот балансировку нагрузки на виртуалках даже и не знаю, стоит ли смотреть.

Всего: 343