cvss

Рейтинг
69
Регистрация
06.10.2009
netwind:
Так нечего документировать. Где домен? Действительно ли вы заранее изменили TTL ? как я могу перепроверить ваши заявления ? Кроме того, каждый ошибающийся хост нужно вручную нужно отделить по адекватности. Некоторые роботы ради экономии трафика будут игнорировать TTL, но их никто всерьез не воспринимает. Это не те посетители, которые важны для сайта. Нужно отобрать именно посетителей.

У этого сайта дефолтный TTL 1 час уже лет пять был и менять его отдельно не нужно. По поводу перепроверить мои слова - поставьте эксперимент самостоятельно и получайте данные из первых рук или верьте мне на слово (тратить время на согласовывание с клиентом публикации его статистики мне жалко). Для вас будет даже лучше проверить все самостоятельно, чтобы не получалось как с остальными вещами, которые вы "припоминаете" неправильно.

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

netwind:

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

Ок, предположим, у нас стал идеальным мир - все провайдерские DNS и все браузеры будут честно принимать TTL в 1 минуту. Что это даст для фейловера?

netwind:

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

Практике использовать несколько IP и для балансировки, и для фейловера, уже лет двадцать. Допустим, вы про фейловер узнали только сейчас и до этого применяли бы RR только для балансинга. Вы считаете, что инженеры в гугле сказали бы друг другу: "давайте сделаем RR, но ни в коем случае не для повышения надежности, а только для балансировки."? И по нескольким ДЦ разносят оборудование ни в коем случае не для повышения надежности, а только потому что ДЦ не справляется с нагрузкой.

netwind:
Обсуждали . Но не задокументировали ни одного современного случая.
Подобные слухи возникают из-за ошибок при планировании переноса доменов.

Наверное это вы тоже неправильно припоминаете. Документируйте сейчас. Вчера около 17:00 перенесли клиента на новый IP. TTL для всех записей - 1 час. Сегодня до полудня на новый IP около 1200 хостов, на старый - около 100. На старый идут питерский СЗТ, уральский МТС, самарский Мегафон, куча украинских провайдеров, шведы. Яндекс с Гуглем будут еще неделю обращаться.

netwind:

А вот не стоило выставлять TTL в одну секунду. Это же совсем непрактично и программисты могут тоже так решить.

Стоило - я специально для вас секунду сделал, чтобы поведение браузеры было хорошо видно. Так можно быстрее увидеть, что ни IE, ни FF сами по себе перезапрашивать DNS по время исполнения запроса на подключение не будут. Не смысла им так делать. Что бы вам дало, если бы IE как FF принимал TTL в 1 минуту?

netwind:

Все сложнее. Вот есть старенькое уже исследование от специального сервиса где описано поведение кеширования DNS в разных браузерах http://www.simplefailover.com/outbox/dns-caching.pdf
Хорошо, что подключение к работающим серверам из списка RR работает, но раз simple failover его не использует, наверное есть какие-то причины.

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

netwind:
Что-то вы, товарищ главный инженер, не понимаете.
Кеш dns-сервера и клиента уже строго придерживается TTL. С этим кешем уже нет проблем. И это могло бы быть хорошим решением, если бы не поведение IE.
Ну, учитывая, что SEO-сайты посетитель обычно закрывает сразу же после открытия, свой клиент найдется и на такую услугу.

Вы неправильно запомнили и ошибаетесь.

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

У клиента (веб-браузера) тоже свой взгляд на TTL. Кроме IE игнорирует TTL и firefox. Я сейчас, проверяя себя, посмотрел tcpdumpом на обращения к DNS от firefox - да, даже есть A-запись с TTL 1s, firefox это игнорирует и в течение минуты при повторных попытках открыть страницу к DNS не обращается. Вероятно, это характерно и для других браузеров, т.к. вещь, в принципе, для человеческих сайтов правильная - если на каждый HTTP-запрос делать отдельно DNS-запрос - страницы будут открываться намного медленнее. IE, кстати, и через минуту не пытается перезапросить DNS по-новой.

netwind:

Не работает. Вообще нет таких браузеров. Специальные службы у microsoft или jabber могут использовать разный порядок и приоритеты на основе информации из DNS, но к сожалению, не браузеры.

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

Вот смотрите, я включил 4 сервера:

A, 94.127.66.130 - работает, но не слушает 80 порт (connection refused)

B, 94.127.66.131 - работает, слушает 80 порт

C, 94.127.66.132 - работает, но не слушает 80 порт (connection refused)

D, 94.127.66.133 - не работает (долгая попатка соединения и connection timeout в итоге)

Завел тестовую зону test.fluid.ru. В ней 5 поддоменов

a1.test.fluid.ru - одна A-запись, на работающий сервер B, для контроля

a2.test.fluid.ru - указывает на оба включенных сервера A и C, с неработающим 80 портом

a3.test.fluid.ru - указывает на три сервера, один работающий B и два с неработающим 80 портом A и C

a4.test.fluid.ru - указывает на три неработающих сервера, один недоступный вообще D и два с неработающим 80 портом A и C

a5.test.fluid.ru - указывает на все 4 сервера - A, B, C, D

При обращении к этим адресам, что IE, что Firefox, пытаются соединиться со всеми A-записями, вернувшимися от DNS, до тех пор, пока не будет успешное соединение. Можете и самостоятельно поэкспериментировать, я на пару дней оставлю такую конфигурацию).

Зона выглядит так (можно и по axfr посмотреть)

a1.test.fluid.ru. 1 IN A 94.127.66.131

a2.test.fluid.ru. 1 IN A 94.127.66.130

a2.test.fluid.ru. 1 IN A 94.127.66.132

a3.test.fluid.ru. 1 IN A 94.127.66.130

a3.test.fluid.ru. 1 IN A 94.127.66.131

a3.test.fluid.ru. 1 IN A 94.127.66.132

a4.test.fluid.ru. 1 IN A 94.127.66.130

a4.test.fluid.ru. 1 IN A 94.127.66.132

a4.test.fluid.ru. 1 IN A 94.127.66.133

a5.test.fluid.ru. 1 IN A 94.127.66.130

a5.test.fluid.ru. 1 IN A 94.127.66.131

a5.test.fluid.ru. 1 IN A 94.127.66.132

a5.test.fluid.ru. 1 IN A 94.127.66.133

Далее открываем эти адреса в браузере и смотрим tcpdumpом, что происходит.

a1.test.fluid.ru - одна A-запись, на работающий сервер B, для контроля

открывается сразу 404 страница nginx

a2.test.fluid.ru - указывает на оба включенных сервера A и C, с неработающим 80 портом

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

17:09:23.340402 IP 10.0.2.9.47715 > 94.127.66.130.80: Flags
17:09:23.344985 IP 94.127.66.130.80 > 10.0.2.9.47715: Flags [R.]
17:09:23.797146 IP 10.0.2.9.47716 > 94.127.66.130.80: Flags
17:09:23.802647 IP 94.127.66.130.80 > 10.0.2.9.47716: Flags [R.]
17:09:24.344023 IP 10.0.2.9.47717 > 94.127.66.130.80: Flags
17:09:24.352582 IP 94.127.66.130.80 > 10.0.2.9.47717: Flags [R.]
17:09:24.355728 IP 10.0.2.9.52078 > 94.127.66.132.80: Flags
17:09:24.372035 IP 94.127.66.132.80 > 10.0.2.9.52078: Flags [R.]
17:09:24.781690 IP 10.0.2.9.52079 > 94.127.66.132.80: Flags
17:09:24.788593 IP 94.127.66.132.80 > 10.0.2.9.52079: Flags [R.]
17:09:25.328372 IP 10.0.2.9.52080 > 94.127.66.132.80: Flags
17:09:25.350941 IP 94.127.66.132.80 > 10.0.2.9.52080: Flags [R.]


a3.test.fluid.ru - указывает на три сервера, один работающий B и два с неработающим 80 портом A и C
чуть потормозил и открыл старницу nginx. По tcpdump видно, что он несколько раз безуспешно подключался к С и A, получая в ответ tcp reset, но в итоге попал на работающий B


TCP 80
17:18:09.505944 IP 10.0.2.9.46050 > 94.127.66.132.80: Flags
17:18:09.509972 IP 94.127.66.132.80 > 10.0.2.9.46050: Flags [R.]
17:18:09.953387 IP 10.0.2.9.46051 > 94.127.66.132.80: Flags
17:18:09.957459 IP 94.127.66.132.80 > 10.0.2.9.46051: Flags [R.]
17:18:10.390885 IP 10.0.2.9.46052 > 94.127.66.132.80: Flags
17:18:10.403064 IP 94.127.66.132.80 > 10.0.2.9.46052: Flags [R.]
17:18:10.404568 IP 10.0.2.9.40674 > 94.127.66.130.80: Flags
17:18:10.413433 IP 94.127.66.130.80 > 10.0.2.9.40674: Flags [R.]
17:18:10.937773 IP 10.0.2.9.40675 > 94.127.66.130.80: Flags
17:18:10.944810 IP 94.127.66.130.80 > 10.0.2.9.40675: Flags [R.]
17:18:11.484656 IP 10.0.2.9.40676 > 94.127.66.130.80: Flags
17:18:11.493702 IP 94.127.66.130.80 > 10.0.2.9.40676: Flags [R.]
17:18:11.495066 IP 10.0.2.9.56596 > 94.127.66.131.80: Flags
17:18:11.501591 IP 94.127.66.131.80 > 10.0.2.9.56596: Flags [S.]
17:18:11.501634 IP 10.0.2.9.56596 > 94.127.66.131.80: Flags [.]
17:18:11.502301 IP 10.0.2.9.56596 > 94.127.66.131.80: Flags [P.]
17:18:11.513876 IP 94.127.66.131.80 > 10.0.2.9.56596: Flags [.]
17:18:11.514240 IP 94.127.66.131.80 > 10.0.2.9.56596: Flags [P.]
17:18:11.514255 IP 10.0.2.9.56596 > 94.127.66.131.80: Flags [.]


a4.test.fluid.ru - указывает на три неработающих сервера, один недоступный вообще D и два с неработающим 80 портом A и C
тормозил долго, потом выдал ошибку. по tcpdump видим, что обратился к серверу С, получил reset, потом не повезло обратиться к D, который в ответ ничего не дает и на попытку подключения к которому потратили в общей сумме 20 секунд, потом обратились к A, получили ошибку от него и прекратили. Здесь у firefox и IE поведение почти одинаковое, разница только в том, что IE пытается несколько раз достучаться до сервера, который отдал connection refused, а firefox после первой же ошибки переходит к следующему IP-адресу.

TCP 80 (IE)
17:23:37.207487 IP 10.0.2.9.59596 > 94.127.66.132.80: Flags
17:23:37.214559 IP 94.127.66.132.80 > 10.0.2.9.59596: Flags [R.]
17:23:37.640891 IP 10.0.2.9.59597 > 94.127.66.132.80: Flags
17:23:37.647208 IP 94.127.66.132.80 > 10.0.2.9.59597: Flags [R.]
17:23:38.187931 IP 10.0.2.9.59598 > 94.127.66.132.80: Flags
17:23:38.193570 IP 94.127.66.132.80 > 10.0.2.9.59598: Flags [R.]
17:23:38.204928 IP 10.0.2.9.37948 > 94.127.66.133.80: Flags
17:23:41.195619 IP 10.0.2.9.37948 > 94.127.66.133.80: Flags
17:23:47.195620 IP 10.0.2.9.37948 > 94.127.66.133.80: Flags
17:23:59.189879 IP 10.0.2.9.54863 > 94.127.66.130.80: Flags
17:23:59.198606 IP 94.127.66.130.80 > 10.0.2.9.54863: Flags [R.]
17:23:59.625254 IP 10.0.2.9.54864 > 94.127.66.130.80: Flags
17:23:59.637201 IP 94.127.66.130.80 > 10.0.2.9.54864: Flags [R.]
17:24:00.172148 IP 10.0.2.9.54865 > 94.127.66.130.80: Flags
17:24:00.203809 IP 94.127.66.130.80 > 10.0.2.9.54865: Flags [R.]

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

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

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

В 2000-2001 мы реализовали это в Net.Ru. Там была сложная схема их группы фронтендов и бэкендов, размещенные с взаимным резервированием в трех датацентрах. Достаточно долго мы были единственными с таким решением. Были немного похожие вещи у Зенона и Мастерхоста, но в пределах одного датацентра.

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

Но примерно с 2007 эту схему мы расформировали, оставив только взаимное резервирование между двумя ДЦ. Расформировали по той причине, что исчезла необходимость - отказы стали значительно реже. Затраты на содержание в эксплуатации сложной схемы достаточно большие (в том числе на минимизацию внутренних сбоев и негативного влияния человеческого фактора). Существенного выигрыша в надежности от сложной схемы не было, и без нее оборудование и ДЦ работали уже достаточно хорошо. Да, случались аварии, приходилось переключаться на резервы, были простои по несколько часов. Но проблемы падения каналов, умирания дисков или железа проще и надежнее решались локальными техническими решениями.

freedz:

1) DNS переведём на сервис, который позволяет делать "DNS+failover"(если можно получить скорость отключения нерабочего фронтенда порядка минуты).
2) В качестве параллельных фронтендов будут два VPS
3) Фронтенды будут подтягивать сайты с двух серверов(один основной и один дублирующий).

В целом, эта хорошая, каноническая схема. Обратите внимание на то, что фронтены должны не только ориентироваться на доступность бэкендов, но и распознавать менее очевидные сбои - на уровне приложения или системы. Например, сломалась одна из таблиц БД и страницы генерируются с ошибками. Часто при этом страницы сайта отдаются с тем же кодом 200, как будто ошибок нет. Если у вас репликация данных между бэкендами идет по DRBD, то на дублере тоже будет сломанная таблица. Если сбой файловой системы повредит часть данных, они будут повреждены и на дублере. Также нужно предусмотреть сплитбрейт - если фронтенды из-за разной доступности стали обращаться к разным бэкендам.

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

---------- Добавлено 16.06.2012 в 23:48 ----------

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

С DNS вряд ли бы работало - если браузер снова запросит адрес, он его получит из кэша DNS-сервера.

Возможно, у вас в памяти задержалось из-за другого - многие программы во время подключения к серверу по TCP, в том случае, если DNS вернул для имени несколько IP-адресов, при ошибки подключения к первому адресу пробуют поочередно подключиться ко всем остальным. Это не требования стандарта, но большинство программ, включая веб-браузеры, реализует этот механизм.

На базе него строится простой, но не очень хороший вариант - failover на round robin DNS. Если при попытке подключиться к первому IP-адресу мы быстро получаем ошибку - host unreachable, connection refused или что-то в этом роде, переключение на следующий идет сразу же. Но если запросы на соединение уходят в пустоту и не показывают сразу же ошибки (сбой маршрутизации, аварийное отключение сервера), то клиент ждет до истечения таймаута (достаточно долго, чаще всего, не меньше минуты), прежде чем перейти к следующему адресу. Ну и второй недостаток - это не требования стандарта, это не реализуется готовыми функциями ОС (скажем, POSIX), поэтому могут быть и наверняка есть браузеры, которые такой механизм не реализуют.

hvosting:
Дорогой, сдай сначала сессию, а потом компостируй мозг своими гениальными познаниями теорвера людям с двумя техническими высшими.

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

Лучше не вынимайте свои дипломы и мантию академика бобруйской международной академии наук, а примите или опровергните доказательство ошибки в вашем расчете, это будет достовернее:

Простая иллюстрация вашей ошибки - обратитесь к сайту 52 раза не за год, а за минуту или за час. Вы уверены, что с вероятностью 26% получите отказ? Обратитесь 520 раз за час - по вашей методике подсчета вероятность отказа будет 92%. Повторяйте эту серию обращений каждый час в течение года, у вас все эти разы вероятность отказа должна быть 92%. Все еще считаете, что у вас нет ошибки?

freedz, у вас и у hvosting ошибка в том, что вы стали считать аптайм вероятностью удачного захода, что неправильно. Как в анекдоте про вероятность встретить инопланетянина - 50%, либо встречу, либо нет.

Способ посчитать правильно я привел. При времени проверки, стремящемся к нулю, вероятность тоже стремится к нулю, все верно.

Не хочу пересказывать учебник тервера и разбирать с вами, где и почему вы ошиблись. Простая иллюстрация вашей ошибки - обратитесь к сайту 52 раза не за год, а за минуту или за час. Вы уверены, что с вероятностью 26% получите отказ? Обратитесь 520 раз за час - по вашей методике подсчета вероятность отказа будет 92%. Повторяйте эту серию обращений каждый час в течение года, у вас все эти разы вероятность отказа должна быть 92%. Все еще считаете, что у вас нет ошибки?

hvosting:
Нет, вероятности у ТС посчитаны правильно.
Второй вариант подсчета (не точный, но при высоком аптайме катит) :
при обращении к сайту вероятность получить ошибку 0,5%
обращений за год 52.
умножаем 0,5% на 52 = 26%

Это Вероятность того, что в течение года поисковый бот _хоть раз_ получит ошибку.

ТС посчитал более точным способом, но он с непривычки не всем понятен.

Хорошо, что люди, привычные к такому способу занимаются безобидным хостингом, а не строительством :)

Вы упустили, что падение сайта и обращение к сайту - независимые случайные величины. Их совместная вероятность - произведение.

Простая иллюстрация вашей ошибки - обратитесь к сайту 52 раза не за год, а за минуту. Вы уверены, что с вероятностью 26% получите отказ?

freedz:

99,5%. Если на главную страницу бот заходит раз в неделю, а в году 52 недели, то
99,5^52 = 0,77, следовательно с вероятностью 23% за год у Вас должна вылететь главная страница из индекса, что приведет минимум к недельной потери SEO трафика.

Вероятности неправильно посчитаны. Вероятность отказа для 99.5% аптайма - 0.005. Вероятность захода бота на главную страницу при периодичности раз в неделю и 10 секунд на выполнение запроса - 0.0000165. Вероятность одновременного происхождения обоих событий равна произведению - 0.0000000825. И вот теперь умножаем это на 52 и получаем 0.00000429 (0.000429%) - это вероятность выпадения страницы из индекса в течение года.

hosting_manager:

Особенно десктопники "хороши" для повышения надежности 😂 Это брээд... В RAID диски должны быть равноценны по надежности, а когда юзается в сервере один диск сомнительного качества, а второй - более высокого, то это не гуд. Риски возрастают, а не уменьшаются. Это какие такие условия должны возникнуть, чтоб надежность стала выше?

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

Хорошим примером может быть анализ отказов RAID 1 на Seagate 7200.11 NS , которые из-за проблемы в firmware умирали одновременно после перезагрузки и убивали массив. Еще из масштабных примеров - выход из строя IBM DTLA, которые умирали группами при небольшом перегреве.

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

hosting_manager:
uoOk, касательно Хетзнера - это недоДЦ, если они умудряются ставить в серверы HDD от разных производителей, какие еще могут быть аргументы? :)

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

Всего: 132