MiksIr,
я наткнулся на это сравнение
http://affectioncode.wordpress.com/2008/06...roxy-and-nginx/и несколько других, nginx не является в данном случае более медленным решением? то есть если оставить его просто для раздачи статики и каких-нибудь
других задач, а те вещи, что умеет лучше делать HAProxy, переложить на неё - это будет хуже? если да, то чем? вроде бы это более unix-way - используется пусть много, но лучших программ, каждая в своей области... разве не так?
Цитата
Нет, ничего из этого двух не использовал. Как правило, Linux HA (heartbeat+pacemaker) для переключения сервисов по нодам, nginx как фронт-енд балансировка (т.е. совсем не видел причины вводить дополнительный уровень в виде haproxy, так как nginx хорошо балансирует http с возможностью кеширования и отдачи статики напрямую).
К сожалению, не получилось сразу разобраться, а что представляет из себя Linux HA (heartbeat+pacemaker), вы не могли бы немного поподробнее пояснить этот момент? То есть я нашёл официальную wiki, но не до конца понял, а зачем нужна эта вещь, одного nginx (или nginx+HAProxy) не хватит?
Как-то так:
Если сервер, на который пришёл запрос (кстати, как обычно делается (в простом дешёвом случае), просто добавляются в зону несколько А и АААА записей разных серверов у регистратора или на каком-нибудь dyndns.com ?) сильно загружен, то должен выбраться какой-либо другой незагруженный сервер (выбирает или HAProxy или nginx), туда пересылают запрос пользователя на nginx, если это статика - он её раздаёт, иначе отправляет это своему локальному php-fpm (если php-скрипт) или локальному uWSGI (если приложение на Django/Pyramid) (т.е. всё на том же сервере), которые также при необходимости могут производить какие-то действия со статикой (включая контент пользователя) или локальной базой CouchDB (которая из коробки умеет мастер-мастер репликацию и так же есть на всех серверах).
В итоге получаются такие вот серверы-клоны однотипной структуры, каждый из которых может обслужить пользователя от начала до конца.
(И есть вопрос относительно того, как сделать так, чтобы пользователь, закачав картинку на какой-то сервер закачал её (совершенно прозрачно для всех скриптов и себя) на все серверы сразу, без каких-либо блокировок его дальнейшей работы и ожиданий завершения операции, чтобы это было асинхронно и само по себе. Я думаю, тут нужна какая-то сетевая файловая система (каждый сервер выделяет отдельный ssd диск на это), которая бы сделал а-ля raid1 на этих разделах между разными серверами и позволяла приложениям (скриптам) не заботиться о таких вещах, как синхронизация. То есть приложение (скрипт) копирует файл пользователя на локальный диск, а дальше этот файл уже сам как-то асинхронно расходится по другим серверам. Когда файл запрашивается - сначала проверяется текущий, если ешё не успело синхронизироваться (только закачали) - ищетсяна других серверах. Как-то так. Так как мне нравится Btrfs, то, наверное,
Ceph был бы идеальным решением (работает над Btrfs-разделами и задействует преимущества этой системы), но он пока в разработке, поэтому я и сказал про Gluster) Ну, вообщем, наверное, про Gluster я всё же прав...
В дальнейшем схему можно улучшить выделив отдельный сервер под балансировку нагрузки если это и правда понадобится... (хотя в случае всего 2-5 серверов вряд ли оно будет надо, а этого полностью хватит как мне сейчас кажется для решения всех моих задач)
P.S. а MySQL хватит и на одном сервере, там ничего такого нет и не будет...
Цитата
Если вы берете в аренду - то пофиг. Когда создаешь свой серверный парк - там другие правила. В том числе и штука аналогичная той, что я про дистрибутивы говорил - т.е. если у вас вылетает что-то через три года - вы сможете купить запчасти, а не выкидывать сервер =)
Тут да - полностю согласен.
Цитата
Тем, что это не поддерживается комьюнити генту. И вы никогда не узнаете - мантейнер нужного вам пакета влепил зависимость от новой версии системного пакета потому-что со старым не работает, или потому-что у него стоит новый и он класть хотел на тестирование со старыми. Ну и тем, что когда вы захотите пересобрать по каким-то причинам пакет старой версии - его уже не окажется в репозитории. Ну, как пример, ставишь новую версию nginx - а там баг. Пытаешься откатиться на старую версию - а ебилды почистили, оставили три последних... а баг появился четыре минора назад. Вот это самый простой косяк, с которым я сталкивался... про остальные просто долго писать.
Может быть стоит написать об этих проблемах на гентушном багтрекере и предложить какие-либо концептуальные подходы к решению проблемы?
Я бы предложил такую реализацию:
Для ебилдов предложить сделать официальный сервер с архивами всех старых неподдерживаемых ебилдов, чтобы он прозрачно для всех собирал и хранил вообще все ебилды всех времён. Ограничить там скорость до минимума, чтобы никто не использовал его в качестве основного (и тем самым не нагружали постоянно сервер), а если вам потребуется старый ебилд - можно будет утянуть оттуда.
Кстати, я не знаю, может быть, уже кто-то придумал это до меня - слишком просто...
Ну, то есть, идеальных систем нет, для меня идеал нечно среднее между ubuntu и gentoo. Но из gentoo идеал сделать проще. По крайней мере пока так кажется. А возможные проблемы с аптаймом закрыть таким вот дешевым кластером из 2-3 серверов, даже если я случайно завалю один сервер и буду разбирааться с этим пару дней, никто из посетителей и не заметит. :-) Единственное что немного пугает - нестабильная работа, ситуации, когда непонятно, в чём именно ошибка.
Но такого у меня пока не было (на убунте с обновлениями раз в полгода)

Точнее было 1 раз за всю историю "админства", когда почему-то php-cgi стал падать раз в неделю и его никто не поднимал автоматически, я тогда перешёл на php-fpm и проблем нет. Но это скорее всего, были какие-то проблемы с настройками (мне тогда было лень в этом разбираться).
Но, вообще, да, для тех, кому не нравится копаться в линуксе, было бы проще использовать нечто более стабильное. Но это не исключает вариантов успешного использования его на сервере.
На том же хетзнере в вики есть как минимум 5 статей на эту тему про генту, значит, ставят же её на сервер зачем-то :-)
http://wiki.hetzner.de/index.php/Kategorie:Gentoo + сборка ядра (интересная ссылка для тех, кто ещё помнит название этой темы)
http://wiki.hetzner.de/index.php/Kernel_Konfiguration .
Цитата
В том, что не нужны никакие блокировки. Есть много решений по бакапу, включая быстрый инкрементальный. И не нужно думать, как поведет себя база и самое главное - какое состояние базы записано на диске, не окажется ли оно нерабочее, если пытаться с него запуститься. Т.е. нужно неплохо знать как именно эта база работает с диском. В общем, никому не нужное веселье.
Ясно. Вообщем, да, всё логично... А вы сами какое решение для бэкапа предпочитаете?
eSupport.org.ua,
Цитата
Твоя ошибка в том, что на первое место ты ставишь цену за аренду оборудования, а не качество.
Выбор только по критерию качества тоже неправильный. Бывают дорогие качественные решения, которые совсем не подходят для мелких нужд малого бизнеса. В лучшем случае - просто лишняя трата денег, в худшем случае - обратный эффект. (Всё равно что внедрить вместо 1С какой-нибудь SAP в мелкую российскую компанию - она (компания) просто развалится даже если у руководства и хватит денег на эти понты.)
Наиболее правильный на мой взгляд выбор - соотношение цена/качество при этом без открыва от реальных задач, которые придётся этим решать.
Цитата
Поверь, я три года работал в одном из самых крупных хостеров с огромной базой активных клиентов и знаю о чем говорю. Именно из-за качества пришлось уйти на свое железо.
Не рассматривайте мои уточняющие вопросы относительно аргументов принятия своего решения как попытку усомниться в вашей профессиональности, это не так. Да, вы специалист и знаете, о чём говорите. Но вы можете не до конца знать специфику моих задач, более того - вы, наверное, и не хотите её знать (у каждого своя работа и вникать в чужие задачи как правило лень), поэтому даёте общие советы относительно своего опыта и специфики тех задач, с которыми сталкивались. Но при применении в других условиях эти советы могут быть неверными. Поэтому в данном случае полезнее объяснить свой алгоритм принятия решений, чем давать общие советы.
Иногда есть необходимость в обработке больших объёмов данных, тут важна производительность сервера, а пользователь всего один. Трафик - это тот самый итоговый отчёт. Почему для таких задач не подойдёт hetzner?
Если я правильно понял, то NLB нужна в случае большого трафика, когда один сервер с ним не справляется... А если трафик обычный, но каждый запрос занимает значительные ресурсы сервера? Ну, вообщем, вот нельзя так давать общие советы в стиле "hetzner плохой"... Всё относительно...
Цитата
По поводу хороших ДЦ и оборудования я в свое время писал статью на Хабре, где приводил расчет по ценам на стойку.
Цитата
Если бы хетцзнер хоть давал возможность NLB, то тогда можно было бы его рассматривать как вариант для файловера, что дает более-менее нормальную надежность.
Кроме NLB какие ещё критерии являются на ваш взляд важными при выборе правильного дц? Было бы интересно прочитать статью на хабре, но не знаю ника...