Задать вопрос
Ответы пользователя по тегу Компьютерные сети
  • Как обеспечить отказоустойчивость сервиса независимо от провайдера?

    xenon
    @xenon
    Too drunk to fsck
    Вы не учли более простой (как мне кажется) вариант с Dynamic DNS.

    Есть простое решение, которое делается за час на базе okerr + dynamic DNS.
    https://habr.com/ru/articles/359372/

    Зайдите на https://cat.okerr.com/ и если вы увидите котенка и надпись "status=OK" - значит, эта система работает. При том что там всего 3 сервера и каждые 20 минут мы условно "пристреливаем" один из них :-) В первый заход вы почти 100% попадете на живой сервер. В последующие можете оставаться на "умершем" короткое время, пока DNS запись не переключится (это уже проблема с браузером, часто в инкогнито загружается правильная страница).

    Кратко - при детектировании ошибки, изменяется DNS запись на то значение, которое работает. (Для этого не требуется, чтобы DNS хостер умел в DynDNS, можно даже и без этого)

    Несколько тонкостей:
    1. Ситуация "падает доступ" только в теории очевидная и однозначная (потому что мы ее сами выдумали, а не исследуем Н.Ё.Х. ). В реальности - это более серая ситуация. Что именно мы считаем "падает доступ"? Например, если потерялся один сетевой пакет (на самом деле случается регулярно) - это уже "доступ упал"? Если с сервера мониторинга в Амстердаме доступ есть, а с сервера мониторинга в Твери через минуту доступа нет - то как это понимать: Ваш сервис за эту минуту упал или просто какие-то локальные проблемы в Твери? И даже если проблема видна с обоих серверов - это уже повод для паники и переключения, или мы полагаем, что проблема может быть минутная и лучше пусть через минуту сама исправится? Придется ответить себе на эти вопросы, но любой ответ будет по-своему ошибочный, всегда будет trade off между скоростью переключения и ложными срабатываниями.

    2. Все равно сохраняется некоторое временное "окно" недоступности. Представим, что в момент T0 вы выдергиваете кабель (симулируете проблему). Мониторинг может заметить первую проблему во время T1, которое зависит от настроек и удачи (если перепроверка каждые 30 секунд, то заметить может и через 1 секунду и через 29 секунд). Если у нас есть перепроверки (чтобы избежать ложных результатов), то перепроверка будет во время T2 (причем, вы самим можете хотеть, чтобы Т2 было не в ту же секунду, а дать хотя бы минуту, чтобы ситуация может быть сама решилась). Затем уйдет 1-2 секунды чтобы изменить DNS запись. И вот после этого момента, если клиент решил зайти на ваш сайт, он получит новый (работающий) IP - для него все супер. Но другой человек, кто уже работает с ним, в момент переключения будет иметь старую DNS запись, и для него все еще будет не работать, пока эта запись не протухнет в DNS кеше (в браузере, на компьютере, на DNS резолвере/роутере). Этот период времени можно сократить выставив низкий TTL в DNS.

    Замечания по вашим вариантам:
    1. Облака - тоже падают. Может постабильнее, но вот я через окерр слежу за своими серваками на разных хостерах, иногда ложится и дешевый hetzner и дорогой AWS. (Причем, я бы не сказал, что даунтайм у hetzner выше. Субъективно и по моему личному опыту - наоборот). Небольшое утешение - если вы НЕ будете использовать мониторинг - скорее всего, вы этого не заметите. :-) Но в целом облачный вариант достаточно надежен (если не ожидать от него абсолютных 100%).
    2. Раунд-робин DNS - в принципе могло бы подойти. Но тоже каждая попытка будет занимать какое-то время и даже когда будет очевидно, что один IP у вас умер, раундробин по прежнему будет его выдавать. Но если юзер будет долбиться в кнопку refresh - то рано или поздно пробьется -). Хотя есть еще проблема с браузерным кешем (как выше вот описал). Как вариант - вообще сделать собственное веб-приложение (не путать с веб-страничкой), которое все все данные умеет брать с разных серверов. Не смогла взять с www1.example.com, ну значит лезет на www2.example.com. Тогда это будет почти незаметно для пользователя. Но дорого разрабатывать приложение с этой сложностью. И да, это только для веба.
    3. Обновление DNS записей. Вы пишете про ужасные 12 часов. Это должно регулироваться полем TTL записи - если изменить ее, все будет лучше. Но до секунды лучше не менять, а вот 30 секунд (наверное, это минимум, не уверен, что подойдет), минута ли пять минут - выглядят как разумный компромисс в вашей ситуации.
    4. AS, BGP и все прочие сатанинские слова. Страшно, очень страшно, мы не знаем что это такое, если бы мы знали, что это такое, но мы не знаем, что это такое. Вам это может быть кажется интересным вариантом именно потому, что вы не знаете, насколько этот вариант ужасен, не имеете опыта с ним и все его минусы и сложности и ужасы для вас пока скрыты. Проблем там будет дофига. А кроме всего прочего, подумайте вот о чем - я выше написал, как в окерре все сложно и неоднозначно с простой казалось бы вещью - "доступен ли у нас сервер или нет" (хотя старались сделать как можно проще). Так вот с динамической маршрутизацией - не лучше. Там ведь тоже есть те же самые проблемы диагностики (как отличить кратковременное падение линка на 2 секунды, от выхода из строя и избежать ненужного переключения?) и проблемы переключения (окей, один роутер догадался, что линк лежит - а как скоро все роутеры мира обновят свои таблицы маршрутизации? К ноябрю?). Даже если вы наймете супер гуру в AS / BGP вряд ли он вам гарантирует переключение за секунду или хотя бы минуту. BGP обеспечивает связность сети в принципе (вот, в масштабе "хотя бы к ноябрю"), но не обеспечивает моментальности или даже минутности, пятиминутности. И те процедуры обнаружения неисправности и восстановления скорее всего вам будет сложнее использовать и подкручивать под себя. Весь мир использует BGP, но не забывайте, что это тот же самый мир, который в 2024 году использует IPv4 из 1981 и не может перейти на IPv6. В общем, ну его.
    Ответ написан
    Комментировать
  • Может ли физ лицо создавать интернет-проекты?

    xenon
    @xenon
    Too drunk to fsck
    Законы разные, очень советую посмотреть на ютубе интересное видео "Раздел 230 - свободный интернет | Михаил Пожарский". Как раз про вашу ситуацию, объясняющий, почему площадки вроде вашей или Facebook возникли в США, а не в ЕС, например (сюрприз - в Европе законы тоже не очень хороши).

    Может быть вам подойдет просто хоститься где-то за границей, и подписать, что сайт американский? Ну и домен не в .ru (если вам никакая помощь российского государства и его правовой системы не нужна)
    Ответ написан
    Комментировать
  • Как держать больше 65535 одновременных TCP соединений?

    xenon
    @xenon
    Too drunk to fsck
    Вы говорите об ограничении в 64k портов. Оно проявляется, например, в том, что вы не сможете на сервере запустить (на одном IP) больше 64k сетевых сервисов. (ssh слушает порт 22, apache слушает 80, mysql слушает 3306) итд. Каждый слушающий сервис идентифицируется по сокету ( IP + порт), IP у вас один, портов 64k, значит, 64k слушающих сокетов.

    А вот для установленных TCP соединений:

    socket
    An address which specifically includes a port identifier, that
    is, the concatenation of an Internet Address with a TCP port.

    connection
    A logical communication path identified by a pair of sockets.

    https://tools.ietf.org/html/rfc793

    То есть, соединение идентифицируется по IP сервера, порт сервера, IP клиента, порт клиента.

    Да и вы сами на любом более-менее активном веб-сервере видите через lsof множество соединений, и они все установлены с одним вашим сокетом (IP:80 или IP:443), но у них разный второй сокет. Если пользователь, например, качает какой-то файл в два потока, будет один коннект: server:80 - client:4444 и еще один коннект: server:80 - client:4445. Это разные TCP соединения.
    Ответ написан
    Комментировать
  • Собственный сервер mail рассылки?

    xenon
    @xenon
    Too drunk to fsck
    Не будет это толком работать. mailchimp и подобные потому и существуют, что если вы не хотите серьезно погружаться в сферу bulk mailing (учить всякие greylisting, DKIM, DCC, DMARC, SPF, DNSBL, FBL, ARF, а еще и SMTP и DNS, автоматически обрабатывать баунсы и ансабскрайбы) - а это займет серьезное время - то толком запустить это не получится. Сервисы рассылок существуют не потому, что дураки-клиенты не догадались сто тысяч раз в цикле письмо отправить, а потому что они дешевле, чем рассылать самому (время ведь тоже не бесплатное, и упущенная прибыль от недоставленных писем - реальная)

    1. MTA
    постфикс - как и любой другой MTA для обычного применения, не самый удачный вариант. Не факт, что справится. Он - для очень надежной доставки, а это плохо. Нужна быстрая и менее надежная.
    Если у вас сто тысяч получателей - среди них неизбежно будут "дохлые". Письма на них будут оставаться в очереди на несколько дней и постоянно будут происходит перепосылки. Попытки достучаться до мертвого сервера будут отнимать время, в которое не будет рассылаться прочая почта. Ну или придется очень хорошо его изучать, крутить настройки очереди. ( = тратить время, которое деньги).

    2. Спам
    Даже если вам кажется, что ваши письма кристально чистые - все равно, они будут попадать в спам. Хотя бы потому, что многие пользователи жмут кнопку "это спам" вместо отписки. И очень скоро почти вся ваша почта будет валиться в спам везде (даже для тех пользователей, которые хотят ее получать) и толку от рассылок не будет. Кроме того, будут абузы хостеру, и он очень скоро вас попросит, и придется переезжать на плохой и дорогой абузоустойчивый хостинг.
    Ответ написан
    Комментировать