b_a_t: (daemon)
b_a_t ([personal profile] b_a_t) wrote2011-05-17 04:23 pm
Entry tags:

А гентушники у меня во френдах есть :)?

Требуется помощь зала :) На собеседовании задали вот такие вопросы, даже не знаю, что им и ответить по-серьезному:

1. Какие линуксовые ядерные патчи вы бы посоветовали для высоконагруженного Веб-сервера?
2. Как бы вы организовали контроль версий веб-приложений на Gentoo/PHP для кластера из 500+ узлов, при условии, что на них устанавливается один и тот же код. Как бы вы организавали обновление ОС в таких условиях - локальная или удаленная сборка, перезагрузка узлов которые уже используются в продакшене. Как бы вы спланировали обновления PHP в таких условиях? Объясните ваш выбор.
3. Предоставьте дизайн системы, которая бы позволяла на основе Apache access.log сделать обзор, какие страницы были посещены с определенного IP адреса. Система должна маштабироваться для 500+ узлового веб-кластера. Предоставьте ваши конфигурационные файлы/скрипты и объясните ваше решение и насколько оно маштабируемо.
4. Предоставьте скрипт бекапа базы MySQL, без ее остановки. Размер данных 100+ Гб и в нее постоянно ведется запись, так что приостановка соединений/записи даже на 0.1сек невозможна.
5. Предоставьте скрипт, который изменяет таблицу роутинга таким образом, что весь исходящий трафик с адреса 192.168.10.15 уходит через гейт 192.168.10.254, а весь остальной - через 10.0.0.254.
6. Как бы вы организовали устойчивый к падениям load balancer, способный обрабатывать поток в 500-1000Mbit пакетов SYN/ACK/FIN. Серверы распологаются в разных подсетях. Используйте OpenSource решения. Объясните, насколько маштабируемо такое решение.

[identity profile] dil.livejournal.com 2011-05-17 02:31 pm (UTC)(link)
свят-свят.. генту, php, куды ты вляпался??

1. Я бы посоветовал пользоваться готовыми ядрами, которые собирают специализирующиеся на этом люди.

2. rsync? сборка однозначно локальная, какой смысл собирать одно и то же на 500 одинаковых машин.

5 я еще как-то смогу написать, почитав мануал от ip route, а остальное - совсем ПИЧАЛЬ.

[identity profile] b-a-t.livejournal.com 2011-05-17 02:40 pm (UTC)(link)
Да это местный вариант Фейсбука. Вот с какго-то хрена у них Генту. Посему, видимо все надо пилить руками :(

1. Ну, надо знать, где их искать, эти ядра.
2. Ну, rsync первым в голову приходит, но может есть более маштабные решения - все же, синхронизировать 500+ машин - это долго.

Вот, тебя тоже не возьмут :)

[identity profile] danfe.livejournal.com 2011-05-17 03:27 pm (UTC)(link)
Ну, rsync первым в голову приходит, но может есть более маштабные решения - все же, синхронизировать 500+ машин - это долго.

По идее, для этого есть pssh, там и prsync в комплекте.

[identity profile] dil.livejournal.com 2011-05-17 03:45 pm (UTC)(link)
ну так распараллелить его. там интерактивность никакая не нужна, потом логи почитать на всякий случай, и всё

[identity profile] oldmann.livejournal.com 2011-05-17 02:36 pm (UTC)(link)
а они не хотят сначала забашлять тебе ДЕСЯТЬ ТЫСЯЧ ЕВРО, особенно за написание скриптов?

[identity profile] b-a-t.livejournal.com 2011-05-17 02:37 pm (UTC)(link)
Я думаю, они бедные и хотят решить проблемы со скриптами путем собеседований :)

[identity profile] oldmann.livejournal.com 2011-05-17 02:40 pm (UTC)(link)
ну а чо, устраиваешь собеседования, на них приходят люди, все тебе делают бесплатно, системный архитектор по хайлоаду не нужен. сплошной профит.
ты их сразу в хуй послал, или был убийственно вежлив?

[identity profile] b-a-t.livejournal.com 2011-05-17 02:42 pm (UTC)(link)
Не, не могу послать - ты меня к себе не берешь, я на грани нищеты, очень хочется кушать!

[identity profile] -vvs-.livejournal.com 2011-05-17 02:53 pm (UTC)(link)
Иди к нам, у нас радио, тв и бабы 24 часа в сутки. Забудешь про свои генту, пхп и прочий лоад балансер.

[identity profile] b-a-t.livejournal.com 2011-05-17 03:03 pm (UTC)(link)
Дык, а денег-то давать будут :)? И за что :)?

[identity profile] foodski.livejournal.com 2011-05-17 09:09 pm (UTC)(link)
тебе-ж сказали - тв и бабы 24 часа в сутки :))

[identity profile] b-a-t.livejournal.com 2011-05-17 02:36 pm (UTC)(link)
4-й, я думаю, влет решается выделенным backup-slave. Но какие скрипты?! Наливай да пейБери и бекапь, как хочешь.

5-й - типичный, source routing. Думаю, с помощью команды ip делается тоже легко(?).

С load-balancer непонятно - из чего его собирать.
Edited 2011-05-17 14:37 (UTC)

[identity profile] dil.livejournal.com 2011-05-17 03:49 pm (UTC)(link)
в общем, да, других альтернатив практически нету.
RedHat cluster suite заточен под RH, а High Availability Linux какой-то не очень живой.

[identity profile] samuel-smith.livejournal.com 2011-05-17 04:51 pm (UTC)(link)
LVS как-то слабо согласуется с тем, что "разные сети", или я неправ?

[identity profile] foodski.livejournal.com 2011-05-18 04:40 am (UTC)(link)
LVS-TUN задизайнен для работ с разными сабнетами

[identity profile] samuel-smith.livejournal.com 2011-05-17 02:59 pm (UTC)(link)
Я к генту использую только ненависть. По пунктам:

1) Лучше всего НЕ использовать патчи в случае отсутствия явной необходимости это делать. Особенно это касается свежих ядер - в старые по понятным причинам (ентерпрайз) бекпортят кучу вкусностей из новых.
2) Ну логично что удаленная только. По поводу PHP могу посоветовать никогда не обновлять major (5.2 -> 5.3) без длительного общения с разрабами и q&a по поводу этого.
3) Ну я бы на перле сделал локальные задачки которые раз в минуту (или в режиме тейла) читают аксес лог и сливают выжимки (или даже раудата) в главный мискл. Главный мискл и отвечает за выборки. Я бы рекомендовал еще сделать мастер-слейв чтобы не перегружать мастер запросами и не блокировать запись.
4) Не бывает. Совсем. Никогда. Точнее - бывает когда есть zfs (фря, солярис). Снепшоты в лвм - говно и х.ета. Если все в иннодб - в принципе катит percona XtraBackup, скрипт в комплекте. Еще можно предложить построить слейв, бекапить его и иногда сверять с мастером через mk-query-checksum.
5) man source routing
6) Я бы наверное предложил LVS. Но меня смущают разные сети. В таком случае хапрокси или тот же варниш (речь же о tcp). Поток пакетов суть неграмотно, флоу примерно похуй в отличии от количества в секунду. И да, фря флоу в 700 мбит на среднем железе проксировала, думаю и линух да. Так как речь явно о tcp - можно юзать haproxy, например, но потеряется сорус. Для устойсивости к падениям - heartbit. Для масштабирования - группа балансеров и Л2 балансер перед ней, например.

Как-то так

[identity profile] m0na-sax.livejournal.com 2011-05-17 03:22 pm (UTC)(link)
счаз попытаюсь призвать [livejournal.com profile] loginex в псто :)

[identity profile] loginex.livejournal.com 2011-05-17 03:35 pm (UTC)(link)
4. невозможно, только при запуске slave сервера и бекап уже с него.
5. ip rule add from 192.168.10.15 table 10 priority 5
ip route add default via 192.168.10.254 table 10
ip route add default via 10.0.0.254
6. freebsd с netgraph

[identity profile] kayakru.livejournal.com 2011-05-17 05:37 pm (UTC)(link)
плюсанусь - правда за фрю гентушники могут зобанить

[identity profile] loginex.livejournal.com 2011-05-17 06:21 pm (UTC)(link)
я сам гентушник, но при этом и сетевой инженер, на данный момент 8 фря лучше всего подходит для транзитной передачи траффика.

[identity profile] b-a-t.livejournal.com 2011-05-17 06:29 pm (UTC)(link)
Да, я сам удивился такому твоему признанию :)

А по 1-3 пунктам, с точки зрения Генту не можешь чего-нить подсказать :)? Пакетный менеджер у вас есть?
Edited 2011-05-17 18:30 (UTC)

[identity profile] loginex.livejournal.com 2011-05-17 06:43 pm (UTC)(link)
1. особо патчи никакие не нужны, можно использовать ванильное ядро, либо gentoo-source(Я использую последнее), весь тюнинг в sysctl и через echo blabla > /proc или /sys/. Для фаервола я раньше так же использовал патчи imq и ipset.
2. опыта на клайстерах у меня нет, но можно что-нибудь найти на проприитарном рынке для такого решения.
3. опять же из своего опыта ничего посоветовать не могу. Вообще вопросы из разряда:
-вы работали в хайлоаде с 500+ серверами ?
-нет.
-вопросов больше не имею.
а если серьезно, то это задача системного архитектора - реализовать маштабируемый программный продукт. Если админ будет делать на коленке, то можно тупо пройтись удаленно по ссш грепом аля ssh user@host -p pass "grep page.html /var/log/apache/access.log | grep ip | wc -l" просуммировав все эти значения мы получим что хотим. Может есть и готовые решения, но если ты в этом не работал, то врядли знаешь об этом.

пакетный менеджер в генту: emerge

[identity profile] b-a-t.livejournal.com 2011-05-17 06:51 pm (UTC)(link)
Ну, я так понимаю, им интересно оценить опыт работы и умение мыслить. Надеюсь у них внутре используются все-таки более солидные решения.

Готовые решения почти все коммерческие, да. Splunk вот тчо-то подобное делает, но для логов вообще, без анализа данных. Хотя, можно плагин написать.

А emerge не только для сборки используется? Т.е. можно получить какой-то архив/пакет, которые раскидать по машинам и поставить? Или сказать всем машинам обновить его из репозитария?

[identity profile] iron-hawk.livejournal.com 2011-05-17 09:03 pm (UTC)(link)
Если указать репозиторий откуда тянуть, то почему и нет? Никто не мешает прописать на одной машине внешний репозиторий, на остальных же указать в /etc/make.conf переменную GENTOO_MIRRORS, которая будет показывать на локальный сервак.

Алсо, если машины одинаковые то можно собрать бинарник, который потом можно раскидать по сети. Для оных целей существует пакетик quickpkg и нужные переменные для make.conf. Чуть более подробный процесс описания видел, например тут. Там же и описывается процесс забирания готового бинарника емерджем.

[identity profile] kayakru.livejournal.com 2011-05-17 07:25 pm (UTC)(link)
да я то против фри ничего не имею :) Даже как раз одобряю и использую - просто постановка задачи имхо подразумевает УПЕРТОГО гентушника в лице работодателя :))

[identity profile] duke-igthorn.livejournal.com 2011-05-17 06:49 pm (UTC)(link)
После субжа про генту я логично прочел "требуется помощь зла"

[identity profile] b-a-t.livejournal.com 2011-05-17 06:52 pm (UTC)(link)
Да! Зла не хватает!

[identity profile] iron-hawk.livejournal.com 2011-05-17 07:14 pm (UTC)(link)
По второму вопросу cfengine, puppet. Но скажу честно ,сам не юзал, но ребята из Apache Foundation гоняют это вовсю.

По остальному совсем печаль. Хайлоад видел только издали, но могу спросить конь-петентных товарищей.

[identity profile] amsterdanin.livejournal.com 2011-05-17 07:56 pm (UTC)(link)
странно, выглядит так, будто им нужен не новый сотрудник, а ответы на эти вопросы ))))

[identity profile] rusmafia.livejournal.com 2011-05-17 09:36 pm (UTC)(link)
а я больше не гентушник! ура ура ура!
Могу на пост не отвечать. ля-ля-ля-лляя!

гы.

[identity profile] kiltum.livejournal.com 2011-05-18 09:20 am (UTC)(link)
Ндас, ну ты и вляпался ...

1. Никакие. Стабильность вперед скорости. лучше серверов добавить, чем патчами баловаться.
2. елементарно. сделать свой, локальный ебилд, выделить тестовую зону и потом на остальные уже заливать бинарники. в общем, в манах на портедж расписано.
3. еще один велосипед. логи в базу и делай что хошь. или логи на одну машину и запарсистесь. в общем, надо смотреть
4. идиоты. а так - поднимает слейв сервер и его уже мучаем бекапами. но идиоты, да, в мускл 100 гигов пихать, а если он еще и один ...
5. лень читать маны по ip
6. всего гигабит? судя по вышеприведенным запросам, это вебовская херня. значит тупо ставим на фрот чего-нить быстро кеширующее. типа nginx и обвязываем скриптами мониторинга