Pull to refresh
0
0

Старая панда родом из СССР

Send message

Iproute2 policy-routing и балансировка трафика между аплинками — проблема сброса соединений

Reading time3 min
Views13K
Наткнулся на неприятный подводный камень. Имеем систему с несколькими аплинками, и policy-routing, реализующий балансировку соединений между аплинками с помощью:

ip route replace default scope global
nexthop via 11.22.33.1 dev eth0 weight 1
nexthop via 55.66.77.1 dev eth1 weight 1


(Примерная инструкция здесь)

Проблема заключается в следующем — соединения периодически падают, причём никакой системы нет. Может простоять несколько часов, может упасть через 5-10 минут. Всяким http и torrent'ам это не мешает. В первом случае сессии обычно достаточно короткие, во втором реконнект проходит незаметно и без последствий. Но если мы работаем с ssh?
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments21

Как работает реляционная БД

Reading time51 min
Views544K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3+226
Comments134

Подальше от обыденной реальности: фантастические романы, которые стоит прочитать

Reading time4 min
Views142K
image

Фантастика как жанр заставляет читателей и писателей выйти за пределы разумного, дать волю своему воображению и отправиться в неизведанные миры. За это мы и любим этот жанр. RoboHunter этой осенью предлагает с головой погрузиться в мир научной фантастики.
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments273

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time10 min
Views95K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →
Total votes 110: ↑104 and ↓6+98
Comments73

SaltStack: управление произвольным количеством файлов конфигураций

Reading time4 min
Views21K

Что здесь интересного?


Статья поможет разобраться с тем, как управлять произвольным количеством конфигурационных файлов некоего сервиса в SaltStack.

SaltStack (underfloor): что это и как с ним быть?


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

SaltStack (lobby): типичное применение на простом примере


Итак, предположим, у Вас есть задача автоматизировать установку, внедрение конфигурационных файлов и мониторинг их изменений, перезагрузку в случае необходимости такого популярного сервиса как nginx. Для упрощения системы, сделаем предположение что обслуживаемые сервера построены на базе Debian Wheezy. (Для всех остальных, — читаем про grains систему, — она поможет определить на какой системе мы применяем стейт и соответствующим образом поменять его поведение).
Итак:
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments8

Получение международных ИТ сертификатов

Reading time7 min
Views64K
Для многих ИТ специалистов, да и не только для них, лето – это время, когда можно не только хорошо отдохнуть, съездить в отпуск, разобраться с отложенными в дальний ящик делами, но и …поучиться. А логичным завершением обучения является сдача экзаменов. Именно об этом данная статья.

В данной статье я хочу поднять тему сдачи экзаменов сертификации. Вы спросите каких? Да почти любых. Хотите подтвердить свои знания в области построения инфраструктуры Microsoft? Нет проблем. Собираетесь наконец сдать пару экзаменов по Cisco? Не беда. Много лет занимаетесь аудитом информационной безопасности и ещё не имеете сертификата CEH (Certified ethical hacker)? Найдется и для вас несложный способ сдачи данного сертификата.



Конечно, для людей, сдающих экзамены достаточно давно, я ничего нового не расскажу. Но мы ведь в песочнице, поэтому… вперед.
Читать дальше →
Total votes 21: ↑15 and ↓6+9
Comments35

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Reading time5 min
Views115K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →
Total votes 111: ↑96 and ↓15+81
Comments102

Обработка 1 миллиона запросов в минуту c Go

Reading time8 min
Views38K
Предлагаю читателям «Хабрахабра» перевод статьи главного архитектора компании Malwarebytes о том, как они достигли обработки 1 миллиона запросов в минуту всего на 4 серверах.

У нас в Malwarebytes мы переживаем бешеный рост и с тех пор, как я присоединился к компании около года назад в Кремниевой Долине, одной из моих основных обязанностей было проектирование и разработка архитектур нескольких систем для развития быстрорастущей компании и всей необходимой инфраструктуры для поддержки продукта, который используют миллионы людей каждый день. Я работал в индустрии антивирусов более 12 лет в нескольких разных компаниях, и знаю, насколько сложными получаются в итоге эти системы, из-за колоссальных объемов данных, с которыми приходится иметь дело ежедневно.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments53

Пулы потоков: ускоряем NGINX в 9 и более раз

Reading time15 min
Views88K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →
Total votes 72: ↑71 and ↓1+70
Comments58

Оптимизация стоимости при работе с Amazon S3

Reading time3 min
Views23K
Amazon S3 удобно использовать для хранения файлов любых форматов. Кроме удобного API получаем практически безразмерное хранилище. Отличная доступность и невысокая стоимость делают S3 мегапривлекательной для молодых и небольших проектов.

Однако со временем файлов становится все больше. А платить придется не только за новые данные, но за всю историю. Кроме этого, Amazon дерет деньги за GET и POST запросы, а также за трафик.

Несмотря на низкую стоимость на старте, с ростом это решение будет обходиться все дороже.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments10

GammaRay — средство интроспекции Qt-приложений

Reading time4 min
Views15K
Фреймворк Qt предоставляет неплохие средства разработки — входящая в него IDE Qt Creator включает дизайнер, отладчик, профайлер и другие удобные вещи. К сожалению, даже со всем этим иногда не очень понятно, почему приложение в данные момент выглядит так, как выглядит: чего-то не видно, что-то выглядит не так, как ожидалось, где-то неподходящий размер шрифта или неверная картинка.

Часть этих проблем может быть решена в Qt Designer, но только часть. Qt Designer имеет несколько существенных недостатков: во-первых, он неверно отображает положение Qt Quick компонентов в случае активного использования Javascript при расчете их координат и размеров, во-вторых в дизайнере мы видим состояние только «пустой» формы, без загруженных в неё данных. В общем, очень не хватает чего-то вроде инструментов разработчика в любом современном браузере: чтобы можно было посмотреть всё дерево компонентов, найти нужный, увидеть его положение относительно других, свойства, поправить на лету что-то, подобрать цвет\шрифт\размер, увидеть какие обработчики повешены на события и т.д.

И такой инструмент в мире Qt появился! Встречайте — GammaRay, средство интроспекции приложений на Qt. GammaRay понимает, что такое Qt, из чего состоит ваше Qt-приложение, как в нём взаимодействую компоненты, как они выглядят, как генерируются и обрабатываются события и т.д. Давайте посмотрим, что умеет GammaRay.


Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments6

Неизвестный Smalltalk

Reading time10 min
Views32K


Уважаемые читатели хабра. Прежде всего я хочу объяснить, что обзор языка Smalltalk делает в корпоративном блоге FLProg. Дело в том, что и сама программа FLProg и сайт программы написаны на этом замечательном языке. Его возможности и огромная скорость разработки на нём позволяют мне одному поддерживать и постоянно увеличивать функциональность как сайта, так и программы. Если интересно, как мне это удается – прошу под кат.
Подробности
Total votes 58: ↑50 and ↓8+42
Comments190

ExpvarMon — консольный мониторинг сервисов на Go

Reading time6 min
Views17K
Для Go-программ существует удобнейший стандартный пакадж expvar, позволяющий одной строчкой подключить вывод дебаг информации в JSON-формате. И чтобы максимально быстро и наглядно мониторить текущее состояние, была написана консольная программа Expvarmon, требующая минимум конфигурации для вывода метрик и дебаг-информации для ваших Go-сервисов.

Функции:
  • single- и multi-services режимы
  • мониторинг локальных и удаленных программ
  • произвольное количество сервисов и переменных
  • поддержка значений для памяти, временных интервалов, bool и произвольных чисел/строк
  • sparkline-графики
  • отображение максимальных значений
  • отображение упавших/рестартовавших сервисов
  • авто-ресайз при изменении размеров шрифта или окна



Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments16

Гугл-Цюрих глазами сибиряка-фрилансера

Reading time19 min
Views66K

Расскажи мне полуправду, как полуэльф полуэльфу...

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

Ни в коей мере не считая себя чем-то выдающимся (ну, разве что, пузом), решил ответить на вопросы «а как там?» и «а почему туда?» хоть и субъективно, но максимально объективно и, по возможности, информативно.
Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments104

Hello android from qt

Reading time6 min
Views43K
Эта статья о том, как подружить языки Java и C++ в одном приложение для операционной системы Android.

На С++ написано огромное количество кода. Мне хотелось бы как-то использовать этот код в своих приложения, но почему-то у меня процесс использования вызывал некий дискомфорт. Скорей всего, это, банально, было связано с тем, что основой моей рабочей средой является Android Studio, в которой работа с нативным кодом, скажем так, не самая лучшая. Но вот мысль о том, чтобы комфортно разрабатывать приложение с нативной частью не оставляла меня никогда. Поэтому я решил попробовать скрестить всю мощь библиотеки Qt и приложение, написаное на родном для Android языке — Java.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments17

qt-items — новый фреймворк, или попытка найти Теорию Всего

Reading time7 min
Views14K
Как известно, физики давно пытаются найти Теорию Всего, в рамках которой можно было бы объяснять все известные взаимодействия в природе. Склонность к обобщениям присуща не только физикам, но и математикам, и программистам. Способность меньшим количеством сущностей объяснять и предсказывать большой спектр явлений очень ценна. Для программистов в роли теорий выступают различные API и фреймворки. Некоторые из них решают узкоспециализированные проблемы, а какие-то претендуют на роль универсальных теорий. Примером последних может выступать Qt — универсальный фреймворк, предназначенный, в основном, для разработки GUI.

Далее я расскажу, что мне не нравится в Qt и как его можно сделать ещё более универсальным, мощным и удобным для работы.

Демо-видео (лучше смотреть в HD):


Далее
Total votes 14: ↑14 and ↓0+14
Comments13

Курс молодого бойца. Практический курс по Cisco Packet Tracer

Reading time4 min
Views419K
Быстрый старт

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

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

Собственно после этого и началось создание «Курса молодого бойца» по сетевым технологиям.

image
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments8

Let's Lab. IS-IS routing protocol. Часть 3

Reading time2 min
Views12K
Привет, Хабр!

Вы когда-нибудь пробовали стрелять из лука? Наверное, не самое популярное занятие. А как насчёт коньков и роликов? Сотни раз я видел, как люди, экипированные всевозможными защитными приспособлениями на всех частях тела, подвергаясь всемирному закону тяготения, наносят себе травмы. Тогда как опытные спортсмены месяцами катаются без единого падения.

Всему виной — отсутствие практики. Проведите за книжками хоть целый месяц, и, вероятно, вы добьётесь меньшего, чем за 2 недели с лабой на изучаемую тематику.

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

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

Смотрите в этой части:

— Базовая настройка IS-IS на Cisco IOS и IOS-XR;
— Установление соседства между маршрутизаторами;
— Дебаг и разбор дампа трафика при обнаружении соседа;
— Метрика протокола и его настройка;
— Hello и Hold таймеры и их причуды;
— Hello-padding;
— Линки с множественным доступом и DIS;
— Обмен между L1 и L2 базами. Значение ATT bit;
— Анонс префиксов из BGP в IS-IS;
— External маршруты и их метрика;
— Как избежать петель при импорте из L2 в L1;
— Ассиметричная маршрутизация и Suboptimal routing;
— Будь крутым, настрой роль каждого линка правильно.



Под катом нет текстовой статьи. Только ссылки на литературу и источники.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments3

Плохо документированные особенности Linux

Reading time8 min
Views67K
Привздохнув, произнесла:
«Как же долго я спала!»
image Когда-то, впервые встретив Unix, я был очарован логической стройностью и завершенностью системы. Несколько лет после этого я яростно изучал устройство ядра и системные вызовы, читая все что удавалось достать. Понемногу мое увлечение сошло на нет, нашлись более насущные дела и вот, начиная с какого-то времени, я стал обнаруживать то одну то другую фичу про которые я раньше не знал. Процесс естественный, однако слишком часто такие казусы обьединяет одно — отсутствие авторитетного источника документации. Часто ответ находится в виде третьего сверху комментария на stackoverflow, часто приходится сводить вместе два-три источника чтобы получить ответ на именно тот вопрос который задавал. Я хочу привести здесь небольшую коллекцию таких плохо документированных особенностей. Ни одна из них не нова, некоторые даже очень не новы, но на каждую я убил в свое время несколько часов и часто до сих пор не знаю систематического описания.

Все примеры относятся к Linux, хотя многие из них справедливы для других *nix систем, я просто взял за основу самую активно развивающуюся ОС, к тому же ту, которая у меня перед глазами и где я могу быстро проверить предлагаемый код.

Обратите внимание, в заголовке я написал «плохо документированные» а не «малоизвестные», поэтому тех кто в курсе прошу выкладывать в комментариях ссылки на членораздельную документацию, я с удовольствием добавлю в конце список.
Читать дальше →
Total votes 103: ↑102 and ↓1+101
Comments104

IPv6 — это весело, часть 2

Reading time14 min
Views159K
Введение: Добрый день или вечер, или даже ночь дорогие хабравчане. В данной статье продолжим изучать особенности протокола IPv6 и его отличия от IPv4. В данной статье будет минимальное количество теории и максимальное количество настройки. Начнем с настройки DHCPV6 и рассмотрим особенности работы этого протокола на основе протокола IPv6, также посмотрим на то, как настраиваются протокола динамической маршрутизации на основе IPv6. Оборудования для настройки выберем Cisco (в третей части Juniper).

IPV6 — это весело. Часть 1
Читать дальше →
Total votes 26: ↑20 and ↓6+14
Comments37

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity