Начало занятий в августе

Администратор Linux

Общая стоимость: 48 000 ₽
В месяц: 12 000 ₽
4 часа в неделю
5 месяцев
О курсе

Наиболее полный курс администрирования систем на базе Linux, преподаваемый специалистами с большим стажем работы в крупнейших проектах рунета. Курс формирует знания и навыки для построения и обслуживания высоконадёжных высокодоступных систем на базе Linux.

В результате выпускники смогут:
– развернуть платформу на базе Linux по ТЗ или предложить конфигурацию, наиболее подходящую под задачу;
– развернуть большинство типов онлайн-систем и обеспечить их бесперебойное функционирование;
– участвовать в разработке ПО и предлагать инструменты разработчикам;
– составлять исчерпывающий отчёт по сбоям для разработчиков, а в некоторых случаях и предлагать исправления.

Курс будет полезен системным администраторам и практикующим администраторам SMB, которые хотели бы пробить хрустальный потолок своего сектора рынка и вступить в игру онлайн-гигантов.

В процессе обучения мы ответим на следующие вопросы:
– что случилось с системой и как это понять?
– перезагрузил сервер после трёх лет аптайма и не загружается, что делать?
– loadAvg 50 это нормально или надо что-то делать?
– Apache повис и не реагирует ни на что, что делать?
– надо срочно поставить 50 машин, что делать?!
– как настраивать хостинг без регистрации и SMS?

Интенсивность: 2 онлайн-вебинара в неделю по 2 часа каждый и от 1 до 4 часов на домашнюю работу.

Программа курса
1
Архитектура Linux
2
Linux и сеть
3
Управление, безопасность и мониторинг
4
Сервисы на базе Linux
5
Проектная работа
В этом модуле будут разбираться базовые компоненты OS Linux. Будем разбирать, что такое ядро и его модули, загрузчик, процессы, дисковая и файловая системы, inodes и daemons.
Научимся устанавливать и обновлять и восстанавливать OS, управлять загрузкой, создавать и изменять RAID массивы, управлять логическими томами

Проект на весь модуль: делаем свою загрузочную флешку readonly, со своим ядром
Занятие 1: С чего начинается Linux
Знакомство.

Обзор базовых инструментов, которые понадобятся в течении курса - ssh и его клиенты, vagrant, git.

Какие версии LInux бывают.
Ядро Linux. Краткое введение. Syscalls.
Версии ядра. Обновление ядра. Ручная сборка ядра.
Модули ядра. Команды: modprobe, lsmod, rmmod.

Лабораторная работа. Установка с образа, обновление ядра, включение/выключение модулей.
ДЗ
Делаем собственную сборку ядра. Взять любую версию ядра с kernel.org
Подложить файл конфигурации ядра
Собрать ядро (попутно доставляя необходимые пакеты)
Прислать результирующий файл конфигурации
Прислать списк доустановленных пакетов, взять его можно из /var/log/yum.log
Устанавливать будем на следующем занятии =)
Занятие 2: Дисковая подсистема
Программный и аппаратный RAID. Получение информации о дисковой системе системе с помощью dmidecode, dmesg, smartctl.

MBR и GPT. Команды gdisk/fdisk/parted/partprobe. Знакомимся с multipath

Лабораторная работа: управление рейд массивом с помощью mdadm: создание, съем информации. Разбиваем на партиции
ДЗ
работа с mdadm. . добавить в Vagrantfile еще дисков
сломать/починить raid
собрать R0/R5/R10 на выбор
прописать собранный рейд в конф, чтобы рейд собирался при загрузке
создать GPT раздел и 5 партиций

в качестве проверки принимаются - измененный Vagrantfile, скрипт для создания рейда, конф для автосборки рейда при загрузке
* доп. задание - Vagrantfile, который сразу собирает систему с подключенным рейдом
Занятие 3: Файловые системы и LVM
LVM - облегчаем себе жизнь управления файловыми системами.
архитектура файловой системы Linux: суперблок, блоки, inodes, журналы.
разбираемся в многообразии файловых систем: ext2/3/4, xfs, raiserfs, btrfs, zfs, cephfs

Лабораторная работа: создаем и меняем размеры томов LVM и файловых систем. Знакомимся с mount, mkfs, fsck, resize2fs, /etc/fstab
ДЗ
Работа с LVM. на имеющемся образе
/dev/mapper/VolGroup00-LogVol00 38G 738M 37G 2% /

уменьшить том под / до 8G
выделить том под /home
выделить том под /var
/var - сделать в mirror
/home - сделать том для снэпшотов
прописать монтирование в fstab
попробовать с разными опциями и разными файловыми системами ( на выбор)
- сгенерить файлы в /home/
- снять снэпшот
- удалить часть файлов
- восстановится со снэпшота
- залоггировать работу можно с помощью утилиты screen

* на нашей куче дисков попробовать поставить btrfs/zfs - с кешем, снэпшотами - разметить здесь каталог /opt
Занятие 4: Загрузка системы
Как происходит загрузка системы. В чем разница между BIOS/UEFI. Знакомимся GRUB2 и учимся его настраивать. Управляем initrd с помощью dracut. Знакомимся с udev. Учимся восстанавливать сломанный загрузчик

Лабораторная работа: прописываем в grub несколько конфигурация с разными ядрами. Ставим хук в initrd
ДЗ
Работа с загрузчиком. 1. Попасть в систему без пароля несколькими способами
2. Установить систему с LVM, после чего переименовать VG
3. Добавить модуль в initrd

4(*). Сконфигурировать систему без отдельного раздела с /boot, а только с LVM
Репозиторий с пропатченым grub: https://yum.rumyantsev.com/centos/7/x86_64/
PV необходимо инициализировать с параметром --bootloaderareasize 1m
Занятие 5: Bash, awk, sed, grep и другие
Изучаем основные рабочие инструменты системного администратора. Базовое программирование. Переменные, условия, циклы, однострочники.
Знакомимся с командами интерпретатора bash.
Знакомимся с командами awk/sed/grep/egrep/cut/find/sort/uniq и другими

Лабораторная работа: пишем скрипт
ДЗ
Пишем скрипт. подготовить свои скрипты для решения следующих кейсов
1) watchdog с перезагрузкой процесса/сервиса
2) watchdog с отсылкой емэйла
3) анализ логов веб сервера/security лога - (на взлом/скорость ответа/выявление быстрых - медленных запросов, анализ IP адресов и кол-ва запросов от них)
4) крон скрипт с защитой от мультизапуска
5) любой скрипт на ваше усмотрение

желательно чтобы в скрипте были
циклы
условия
регекспы
awk
наличие в скрипте трапов и функций
Занятие 6: Инициализация системы. Systemd и SysV.
Учимся писать сценарии автозагрузки демонов. Изучаем разницу между systemd и SysV. учимся обращаться с systemctl и journalctl.

Лабораторная работа: сценарии автозапуска под systemd и Sys.V
ДЗ
Systemd. 1. Написать сервис, который будет раз в 30 секунд мониторить лог на предмет наличия ключевого слова. Файл и слово должны задаваться в /etc/sysconfig
2. Из epel установить spawn-fcgi и переписать init-скрипт на unit-файл. Имя сервиса должно так же называться.
3. Дополнить юнит-файл apache httpd возможностьб запустить несколько инстансов сервера с разными конфигами
4*. Скачать демо-версию Atlassian Jira и переписать основной скрипт запуска на unit-файл
Занятие 7: Управление процессами
Рассмотрим, что такое процесс, его атрибуты, жизненный цикл процесса.
Чем потоки отличаются от процессов.
Узнаем как мониторить процессы, в каком они состоянии, понимать чем они сейчас заняты.
Рассмотрим команды ps/top, подсистему /proc, а также команды gdb/strace/ltrace
Научимся менять приоритеты с мощью команд nice, ionice
Научимся посылать различные сигналы процессам.
ДЗ
работаем с процессами. Задания на выбор
1) написать свою реализацию ps ax используя анализ /proc
- Результат ДЗ - рабочий скрипт который можно запустить
2) написать свою реализацию lsof
- Результат ДЗ - рабочий скрипт который можно запустить
3) дописать обработчики сигналов в прилагаемом скрипте, оттестировать, приложить сам скрипт, инструкции по использованию
- Результат ДЗ - рабочий скрипт который можно запустить + инструкция по использованию и лог консоли
4) реализовать 2 конкурирующих процесса по IO. пробовать запустить с разными ionice
- Результат ДЗ - скрипт запускающий 2 процесса с разными ionice, замеряющий время выполнения и лог консоли
5) реализовать 2 конкурирующих процесса по CPU. пробовать запустить с разными nice
- Результат ДЗ - скрипт запускающий 2 процесса с разными nice и замеряющий время выполнения и лог консоли
Занятие 8: Управление пакетами. Дистрибьюция софта.
Как устанавливать софт в Linux. Как собирать из исходников. Репозитории, yum и rpm.
Docker как средство дистрибьюции, преимущества и недостатки.

Лабораторная работа: Будем настраивать собственные репозитории и создавать собственные rpm'ки.
Настраиваем и работаем с сетью в Linux. От хоста до маршрутизатора и брандмауэра.
Занятие 9: Архитектура сетей.
Обзор Модели OCI. Протоколы ARP, IP, TCP/UDP. Протоколы прикладного уровня. Сетевые интерфейсы в Linux.
Освоим команды ip/tc/ss/nstat, вспомним ifconfig/netstat/route, заглянем в /etc/sysconfig/network-scripts, поснифферим через tcpdump и ngrep

Лабораторная работа: строим маршрутизацию между подсетями
Занятие 10: Сетевые пакеты. VLAN'ы. LACP.
Изучаем UniCast/MultiCast/BroadCast/AnyCast.
Изучаем протокол LACP. Учимся аггрегировать интерфейсы через teaming и bonding.
Разбираемся что такое VLAN. Знакомимся с dot1q, macvlan
Осваиваем работу с nmcli
Лабораторная работа: аггрегируем интерфейсы в режиме active/active и failover
Занятие 11: Мосты, туннели и VPN
Разбираемся в терминах и протоколах - что такое мосты, туннели, VPN, PPP, PPTP, PPoE, IPoE, GRE, IPIP, IpSec, L2TP.
Строим VPN между линуксами, разбираем нюансы подключения к Cisco и Mikrotik.
Лабораторная работа: VPN через openvpn
Занятие 12: Статическая и динамическая маршрутизация
настраиваем простые маршруты с помощью route/ip/nmcli
разбираем что такое RIP/OSPF/BGP
настраиваем динамическую маршрутизацию с помощью bird и quagga
Лабораторная работа: настройка OSPF между 3мя сетями
Занятие 13: DNS - настройка и обслуживание
Узнаем как завести домен
Как управлять зонами (bind/powerdns)
Как обсулуживать свой домен самостоятельно
Разбираем dig/host/nslookup
Динамический DNS - consul
Лабораторная работа: настраиваем свой кеширующий днс (мастер/слейв) со своей локальной зоной
Занятие 14: Фильтрация трафика
Углубляемся в iptables/firewalld
разбираем цепочки и таблицы
учимся правильно защищать свою сеть
строим NAT, проксируем трафик, пробрасываем порты
Лабораторная работа: защищаем веб сервер от DOS атак
Занятие 15: немного DHCP и практическое занятие
настраиваем DHCP сервер
привязываем адреса по MAC
разбираем leases
работа на стенде, ответы на вопросы, разбор различных ситуаций
строим полноценный маршрутизатор для небольшого офиса
Занятие 16: Семинар по модулю
Разбор непонятых тем
Ответы на вопросы
Рассматривание рабочих ситуаций от слушателей курса
В этом модуле мы рассмотрим задачи и рабочие инструменты для управления системой, обеспечения безопасности, контроля прав и доступов. Также мы рассмотрим инструменты для мониторинга, логгирования и анализа проблем производительности и сбоев. Будем учится решать проблемы и производить ретроспективный анализ.
Занятие 17: Автоматизация администрирования. Ansible.
Автоматизируем рутинные задачи администрирования. Изучаем ansible - хосты, модули, плейбуки, роли, перменные. Знакомися с другими инструментами - chef/puppet/salt.

Лабораторная работа: пишем скрипт для апгрейда системы после установки и измения конфигов.
Занятие 18: Пользователи и группы. Авторизация и аутентификация
рассмотрим механизмы авторизации и аутентификации. Узнаем как кие бывают права у пользовталей. Научимся управлять правами с помощью sudo, umask. sgid, suid и более сложными инструментами как PAM и ACL, PolicyKit

Лабораторная работа: даем пользователю A возможность запускать скрипт, принадлежащий пользователю B
Занятие 19: LDAP. Централизованная авторизация и аутентификация.
Что такое LDAP и зачем нужен. Разбираем базовую настройку LDAP на примере.
Занятие 20: SELinux - когда все запрещено.
Разбираемся, что такое SELinux
Занятие 21: Мониторинг производительности
Мониторим занятые ресурсы: CPU, память, диск, сеть.
Изучаем инструменты ps, top , sar, htop, atop, netstat, ss, vmstat, iostat, iotop, pidstat
Смотрим, что находится в /proc
Узнаем, что делать с неотзывчивой системой
Занятие 22: Сбор и анализ логов.
Разбираем настройку логгирования с помощью rsyslog и logrotate.
Знакомимся с модными система логгирования - ELK, graylog
Занятие 23: Мониторинг и алертинг
Изучаем Zabbix. Знакомимся с Prometheus
Занятие 24: Резервное копирование.
Обсуждаем политики и методики резерного копирования. Работаем с инструментами rsync, tar, dd и bacula.
Мы научимся как запускать настраивать и поддерживать в Linux такие сервисы как WEB, почта, файловые хранилища, базы данных
Занятие 25: Web сервера
Изучаем протоколы HTTP/HTTPS, HTTP 2.0
Разбираемся с SSL
Устанавливаем и настраиваем Apache и Nginx
Настраиваем vhosts
Занятие 26: Динамический веб контент
разбираем CGI/FCGI/WSGI/mod_xxx
настраиваем uwsgi/php_fpm
разбираемся с python/perl/php/ruby
Занятие 27: Mysql
Учимся администрировать mysql
Устанавливаем, запускаем, мониторим
Создаем схемы, делаем простые запросы
Учимся делать бэкап и репликацию
Занятие 28: PostgreSQL
Учимся администрировать PostgreSQL
Установка, настройка, создаем пользователей и роли
выдаем права, создаем базы,
мониторим, делаем бэкапы
Занятие 29: Redis, Memcached, RabbitMQ
Разбираем что это такое и зачем нужны эти сервисы.
Устанвливаем и настраиваем их
Запускаем в работу.
Занятие 30: Почта: SMTP, IMAP, POP3
разрабираем почтовые протоколы.
Устанавливаем и настраиваем Postfix и Dovecot
Занятие 31: Почта: безопасность и другие задачи
Занятие 32: Файловые хранилища - NFS, SMB, FTP
Строим файловое хранилище на основе Linux
Занятие 33: Asterisk и FreePBX
Разюираем протоколы SIP, RTP
Строим офисную АТС на базе Asterisk
Овновные понятия Asterisk - extensions, trunks, inbound/outbound routes
Обсуждаем как решать типичные проблемы - нет слышимости, NAT, совместимость кодеков
Будем учится строить высокодоступные кластера, настраивать балансировщики, динамические адреса, общие хранилища.


В течении модуля делаем курсовой проект. Создаем скрипты деплоя HA кластера на виртуалках. На кластере разворачиваем либо собственный веб проект, либо веб проект коллег с других курсов. Также приветствуются разворачивание любых систем, например: gitlab, wordpress, youtrack, bigbluebutton и других на ваш выбор
Занятие 34: строим кластер - Pacemaker, Corosync, Heartbeat
Занятие 35: VRRP и динамический DNS
разбираем методики и настройку для обеспечения HA
c диначеского IP и динамического доменного уровня (ConsulDNS)
Занятие 36: Балансировка нагрузки на основе HAproxy
Настраиваем баласировку для вебсерверов и mysql базы
Разбираем конфиги
Проверяем работу балансировки на стенде
Занятие 37: Распределнные файловые системы: GlusterFS и CEPH
Занятие 38: ISCSI, multipath и класерные файловые системы: GFS2
настраиваем ISCSI
настраиваем multipath

Лабораторная работа: разбираем работу системы на стенде, 2 таргета, 2 клиента, общая файловая система
Занятие 39: Виртуализация - cgroups, LXC
Занятие 40: Виртуализация - KVM, Proxmox
Занятие 41: Итоговое занятие
обсуждение вопросов
обсуждение проекта
Минимальные требования для прохождения курса

Требования к поступающим:
– знания основ Linux: что такое ядро, «командная строка», базовые команды linux shell, базовые утилиты gnu;
– понимание основ сетей: адресация и статический роутинг в сетях на базе IPv4;
– опыт установки системы Linux и настройки своего рабочего места (проходить курс лучше всего на своей машине с ОС Linux);
– опыт установки систем виртуализации: VirtualBox или что-то kvm-based.

Преподаватели
Александр Румянцев
Database administrator в компании Postgres Professional. Большой опыт руководства отделами администраторов в Wikimart, Rambler и Ru-Center. В отрасли более 15 лет: из них 10 – в highload и более 5 лет на позиции руководителя
Алексей Цыкунов
Системный архитектор, Oracle DBA, разработчик perl/python, опыт в отрасли - 20 лет
В настоящее время работает на аутсорсе. Работал в интернет-провайдерах и телекоме. Имел опыт внедрения и разработки продуктов в госструктурах, таких как минздрав и соцфонд. Был главным разработчиком стартап проекта Ipstudio AMBS (биллинг для VoIP). Участвовал в проектировании и разработке OLTP систем. Проектировал и развертывал серверные системы в датацентрах.

Закончил Кыргызско-Российский Государственный Университет, 2001, Инженер автоматизированных систем.
Собственный технический блог на - dbadmins.ru
Работодатели