В быстрорастущем интернет-проекте, когда каждый день приходится управлять большим количеством инстансов, управление инфрастуктурой выглядит обычно так:
Варианта развития событий два. Либо админы сходят с ума, после 100500 деплоя приложения на сотню серверов, либо они начинают использовать лучшие рецепты DevOps. У тебя есть возможность пройти классный курс "DevOps для интернет-проектов", который проводится в рамках курсов Brainwashing. Курс ведут люди, которые многие годы занимались эксплуатацией в таких компаниях, как Skype, Groupon, КупиКупон, Оверсан-Скалакси. И вот, что они обещают:
За 2 дня разберём внедрение DevOps на практике. Научим устанавливать окружение сервера за 5 минут, делать выкатку простой и управляемой, настраивать мониторинг так, чтобы он помогал, а не спамил. Объясним, когда использовать облака и CDN, где лучше размещать проект и как не пострадать от падения марсианского корабля на датацентр.
При этом это не два дня лекций, а мастер-класс с закреплением теоретических знаний практикой (для этого на курс надо взять ноутбук с Linux или OS X на борту).
Курс платный, однако, место можно получить бесплатно, если первым максимально правильно и полно ответить на следующие вопросы.
- У вас в конфиге nginx следующее:
upstream fallback { server 127.0.0.1:80; } server { listen 80; server_name example.com www.example.com mobile.example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location /nginx-status { stub_status on; access_log off; } location / { proxy_set_header X-Real-IP $remote_addr; if ($host = 'mobile.example.com') { rewrite ^ http://example.com/mobile/$uri last; break; } proxy_pass http://fallback; } }
Перепишите этот конфиг так, как вы считаете должно быть правильно.
- В приложении вы выполняете некоторые запросы на read-only реплике, На особенно долгих запросах приложение пишет в лог:
- Развернуто расскажите в чем особенности ассинхронной модели ввода-вывода (epoll) и многотредовой модели (thread pool). В каких случаях удобней использовать одну модель а в каких другую? Сервис с какой моделью вы выбрали бы для работы с жестким диском?
- Что делает tcp, когда приемный буфер переполнен? Представьте, что вы создатель протокола tcp и как вы бы решили проблему переполнения буфера?
- Вы используете IO планировщик deadline и решили запустить скрипт на удаление файлов с пониженным приоритетом к диску. После старта, скрипт загрузил весь диск и стал мешать другим процессам. В чем причина?
- В чем отличие расчета значений load average в Linux и Freebsd (или Solaris), как вы сами бы сделали формулу подсчета этого параметра?
ActiveRecord::StatementInvalid: PGError: ERROR: canceling statement due to conflict with recovery DETAIL: User query might have needed to see row versions that must be removed. : SELECT …
Почему это может происходить и что надо сделать, чтобы это исправить?
Ответы принимаются до 19 сентября через эту форму.
P.S. Полная программа курса
День первый.Рассказ о подходах и практиках, введение в методологию. Инфраструктура: серверы и облака, как выбрать? Каналы связи, CDN — особенности и подводные камни. Как прогнозировать нагрузку, управление мощностями. Мониторинг. Первая практика — работа с vagrant и chef-solo, разворачиваем проект. Как не потерять данные и запросы к сайту — бэкапы и отказоустойчивость. Управление конфигурацией. Особенности начальной установки серверов.
День второй. Введение в Opscode Chef. Вторая практика — работа с knife и chef-server. Архитектура Сhef и анатомия Chef-run. Минимальный руби курс для работы с Chef. Третья практика — заменяем в своей инфраструктуре apache на nginx, используя Chef. Работа с аттрибутами, ролями и окружениями в Chef. Датабаги и управление данными. Четвертая практика — работа с данными в Chef. Пятая практика — LWRP, code reuse. Шестая практика — примеряем workflow работы с кукбуками. Седьмая практика — особенности выкатки с системой управления конфигурацией.