18-Jul-2011 23:47

Игорь Сысоев образует nginx company

Сегодняшнее письмо Игоря Сысоева гласит, что nginx станет развиваться стремительнее и целенаправленнее. Для меня это радостная новость, большАя часть веб-серверов в Яндексе - именно nginx. В некоторых местах все еще используется lighttpd, но скорее всего лишь исторически. Желаю Игорю удачи в этом крайне правильном направлении =)
18-Jul-2011 00:10

Rambler.Почта переходит с FreeBSD на Linux

Во, ребята сподобились. Не то чтоб я был против FreeBSD, но кажется, во многих местах всё к этому постепенно идет. Кстати, там чудесный холивар в комментариях, must read.
13-Jul-2011 15:01

Ребрендинг

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

Зато у меня накопилось много разных тем по разработке на Ruby on Rails, что как бы не укладывается в текущий формат. Также есть некоторое количество тем, связаных с архитектурой веб-приложений и веб-сервисов. Это тоже лежит немного в стороне от текущего формата.

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

Итог: блог все время был моим личным блогом и им и останется, потеряв ремарку "system administrator blog", тем станет побольше, рамки станут пошире, шапка опять же поменяется =) Готовьтесь (с)
12-Jul-2011 16:20

Марсианские пакеты

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

Марсианские пакеты - это сетевые пакеты, пришедшие на хост откуда-то снаружи, но в заголовках пакета источником прописан сам хост, на который пришел пакет. То есть машина как бы получила пакет от самой себя, но почему-то снаружи. Ядро линукса с такими пакетами поступает сурово: просто дропает их.
(читать дальше)
03-May-2011 14:12

Курсы информационных технологий

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

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

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

21-Mar-2011 10:09

OpenVZ container reboot

Сегодня один коллега пришел с вопросом, мол, ребутнул виртуалку, а она не поднялась.
На самом деле проблема была в отсутствии линков на initscript ssh-сервера поголовно во всех rc*.d директориях, т.е. контейнер нормально запустился, а вот ssh в нем был погашен.

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

root@alien:~# vzlist -a
CTID NPROC STATUS IP_ADDR HOSTNAME
1004 111 running - viert.org.ru
root@alien:~# vzctl enter 1004
entered into CT 1004
viert.org.ru:/# reboot
viert.org.ru:/# got signal 15
exited from CT 1004

root@alien:~# vzlist -a
CTID NPROC STATUS IP_ADDR HOSTNAME
1004 - mounted - viert.org.ru


После команды reboot, контейнер сначала ведет себя аналогично обычной linux-системе, но после того, как нас благополучно выкинуло обратно на хост-машину, как мы можем убедиться, виртуалка не стартовала. Она осталась в состоянии mounted и провисит так еще какое-то время. На самом деле OpenVZ просто отслеживает такие контейнеры в состоянии mounted и запускает их кроновым заданием на хост-системе. Возможно, в различных сборках это происходит с различной периодичностью, у нас - раз в 5 минут:

root@alien:~# cat /etc/cron.d/vz
# Cron jobs needed for OpenVZ
...
# Start containers marked as rebooted.
*/5 * * * * root /usr/share/vzctl/scripts/vpsreboot
16-Jul-2010 11:47

SysRq Magic

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

Поэтому расскажу про sysrq-trigger. Есть комбинация клавиш, которая распознается ядром и позволяет выполнять разные низкоуровневые действия. Комбинация зовется Alt-SysRq-<код>. К примеру, Alt-SysRq-B немедленно перегружает систему. Эта операция не приводит к аккуратной остановке всех процессов, к синхронизации кэша файловой системы, поэтому ребут происходит мгновенно и работает практически всегда, ценой аварийного завершения всех процессов. Дабы минимизировать потери от такого ребута, можно воспользоваться комбинациями Alt-SysRq-S - это синк дисков, и Alt-SysRq-U - ядро попытается перемонтировать все файловые системы в ReadOnly-режиме.

Команды sysrq-триггера можно так же послать в ядро через файловую систему /proc:

echo b > /proc/sysrq-trigger

В большинстве случаев, если потребовался sysrq-reboot, значит консоль вам уже не отвечает, но тем не менее =)

Такая функциональность ядра потенциально опасна, поэтому в некоторых дистрибутива она по умолчанию отключена. Включить ее можно, отправив что-либо кроме 0 в /proc/sys/kernel/sysrq:

echo 1 > /proc/sys/kernel/sysrq


Соответственно, отправив туда 0, можно sysrq-trigger выключить. Полное описание кодов триггера можно почитать тут. Там есть еще некоторое количество вкусного, например вывод статистики по памяти в консоль, списка процессов, управления kexec, если он есть в ядре и всякое другое. Feel free to use.
09-Jul-2010 22:20

В ответ неясному ажиотажу в комментах k001

Нехорошо прямо получилось. Я даже знаю, почему. Просто когда пишешь об одном, не нужно одновременно работать с другим. Когда я писал про эмуляцию дисковой подсистемы, я отчетливо видел в голове не чрут, а hdd-образ в файле, то же самое произошло с демоном, о котором до сих пор троллят большевики в комментариях жж k001, речь конечно про гипервизор, а совсем не про openvz. Однако, говоря про точность ограничения ресурсов, я подразумевал именно распределение физической памяти, тут я останусь при своих. Прочитал сегодня, что готовится релиз, позволяющий лимитировать именно physical pages, буду ждать с нетерпением.

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

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

Желающим троллить - огромный привет и добро пожаловать в комментарии.
09-Jul-2010 12:15

Euro 2008 vs World Wide Web Consortium

Я решил немного повременить с мегапостами и написать историю, которая произошла летом 2008 года. Лето 2008 отличалось от других лет других годов как минимум наличием чемпионата Европы по футболу, где какое-то время довольно-таки успешно выступала наша сборная. Отдел спецпроектов не мог остаться в стороне от такого события и начали делать информационный проект euro2008.yandex.ru. В проекте предполагались онлайн-стенограмма во время матча, динамический блог с текущим счетом и прочие плюшки, создающие дополнительную нагрузку, а так же серьезно ограничивающие процесс кэширования.

Так как количество часто обновляющейся динамики на сайте зашкаливало за разумные пределы, а ожидания по посещаемости сервиса были обоснованно наполеоновскими, нужно было строить сервис с применением максимально быстрых технологий, которые существовали в Яндексе на тот момент. Выбор пал на стремительно развивающийся xscript 5 - xslt-процессор, написаный внутри компании и выложенный в open source. На xscript 4 работало в тот момент множество проектов компании, но xscript 5, тогда еще не сильно распространенный, уже выигрывал в архитектуре и производительости, к тому же не ограничивал в выборе используемого веб-сервера.

Казалось бы, ничто не предвещало беды, но дальше произошло совпадение двух казалось бы несвязанных факторов: на разработку проекта был брошен xml/xsl-мегамозг компании @maxmaximov, а целевой платформой для продакшна была выбрана ubuntu 8.04 "храброцапля". Ubuntu тогда еще мало использовали в Яндексе, поэтому спецэффекты еще предстояло отлавливать.
(читать дальше)
08-Jul-2010 11:10

Виртуализация I: Основы

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

Свою первую виртуалку я заводил дома под одеялом, пока никто не видит на десктопе в 2005 году тогда еще под управлением триального Virtual PC. Тогда я испытал нереальный восторг в духе "Ололо! У меня в окошке еще один компьютер!", но юзкейс "поиграть под DOS6.22 в Cannon Fodder" выглядел как-то несерьезно. Сейчас же в некоторых сервисах Яндекса виртуальных машин используется больше, чем реальных физических серверов.
(читать дальше)