From c5db7a0a2e654d24b78890a7407ceec356d05736 Mon Sep 17 00:00:00 2001 From: Vladimir Protsenko Date: Fri, 3 Nov 2023 13:51:16 +0000 Subject: [PATCH] Updated tasks --- .../00_bootloader/exam_portfolio_task_1.md | 3 ++ module2/03_nginx_ha/exam_portfolio_task_2.md | 44 +++++++++++++++++++ module2/03_nginx_ha/questions.md | 32 +++++++++++++- module2/03_nginx_ha/tasks.md | 3 +- 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 module2/00_bootloader/exam_portfolio_task_1.md create mode 100644 module2/03_nginx_ha/exam_portfolio_task_2.md diff --git a/module2/00_bootloader/exam_portfolio_task_1.md b/module2/00_bootloader/exam_portfolio_task_1.md new file mode 100644 index 0000000..55f3425 --- /dev/null +++ b/module2/00_bootloader/exam_portfolio_task_1.md @@ -0,0 +1,3 @@ +# Экзаменационное задание для портфолио 1 + +Подготовьте PXE boot сервер, который позволяет установить Debian по сети. Продемонстрируйте на чистой виртуальной машине, поключенной к той же сети, что установка завершается успешно. \ No newline at end of file diff --git a/module2/03_nginx_ha/exam_portfolio_task_2.md b/module2/03_nginx_ha/exam_portfolio_task_2.md new file mode 100644 index 0000000..d8fad6c --- /dev/null +++ b/module2/03_nginx_ha/exam_portfolio_task_2.md @@ -0,0 +1,44 @@ +# Экзаменационное задание для портфолио 2 + +Подготовьте демонстрацию работы nginx сервиса в режиме высокой доступности. Согласно схеме, сделайте так, что nginx на studX проксирует: + - все запросы по адресу `/ha/1/` узлу `gwX` для демонстрации работы сайта в режиме высокой доступности настроенном с помощью модуля `ngx_http_upstream_module`, + - все запросы по адресу `/ha/2/` узлу `10.160.179.140+X` для демонстрации работы сайта в режиме высокой доступности настроенном с помощью `keepalived`. + +``` + ________ + | | + | клиент | (ноутбук) + |________| + | + роутер public IP 193.32.63.170+X:[22,80,443] -> private IP 10.160.179.10+X:[22,80,443] + | + _______|_______ + | | + | studX |---------------------------+-------------------+ + |_______________| | | 10.160.179.25/24 в роли virtual IP + | | ens18 | ens18 + | ens18 в vlan499 ___________ ___________ + _______|_______ | | | | + | | | nginx 3 | | nginx 4 | + | gwX | |___________| |___________| + |_______________| | ens19 в vlan X | ens19 в vlan X + | ens19 в vlan X | 192.168.0.11/24 | 192.168.0.12/24 + | IP 192.168.0.1/24 +-------------------+ + +---------+--------+ + | 192.168.0.2/24 | 192.168.0.3/24 + ___________ ___________ + | | | | + | nginx 1 | | nginx 2 | + |___________| |___________| +``` + +На узлах ngix1 - nginx4 с помощью таймеров systemd каждую минуту должны происходить перезагрузки в определённый момент времени. + +Схема доступности сайта для узлов nginx1 и nginx2: +| Время | nginx1 | nginx 2| +|-------|--------|--------| +|0-10|True|True| +|10-25||True| +|25-35|True|True| +|35-50|True|| +|50-60|True|True| \ No newline at end of file diff --git a/module2/03_nginx_ha/questions.md b/module2/03_nginx_ha/questions.md index 4d02de0..bd9b809 100644 --- a/module2/03_nginx_ha/questions.md +++ b/module2/03_nginx_ha/questions.md @@ -9,4 +9,34 @@ 7. Где можно посмотреть документацию keepalived? 8. Требуется ли прокси-сервер для работы виртуального IP адреса? 9. В каком файле хранится конфигурация keepalived? -10. В каком конфигурационном файле nginx можно прописать блок upstream? \ No newline at end of file +10. В каком конфигурационном файле nginx можно прописать блок upstream? +11. В чём назначение sorry_server? +12. Какую задачу позволяет решить Linux Virtual Server? +13. В чём отличие LVS от VRRP? +14. Что настраивает параметр `virtual_server -> real_server -> CHECKER_TYPE`? +15. Приведите несколько возможных типов проверок доступности узла LVS. +16. Как связаны команда `ipvsadm` и `keepalived`? +17. Для чего может быть полезен расширенный синтаксис конфигурации `keepalived.conf`? +18. Какие три класса скриптов могут быть сконфигурированы в `keepalived.conf`? +19. По умолчанию от имени какого пользователя будут выполняться скрипты? +20. Какие 4 типа конфигурационных блоков доступны в `keepalived.conf`? +21. Какую задачу решает протокол BFD? +22. Опишите работу алгоритма BFS. +23. Как связаны VRRP приоритеты и состояние BFD инстанса? +24. Что хранится в параметре `bfd_instance -> multiplier`? +25. Чем отличаются активный и пассивный режимы BFD? +26. Для чего нужны параметры `rise` и `fall` в блоке `vrrp_script`? +27. Для чего с практической точки зрения могут понадобиться vrrp группы синхронизации? +28. Какая связь между `vrrp_instance` и сетевым интерфейсом: 1 к 1, многие к 1, 1 ко многим, многие к многим? +29. Как определяется начальное состоянием vrrp инстанса и как оно меняется со временем в зависимости от приоритета? +30. Содержат ли vrrp пакеты оповещения приоритет и идентификатор роутера? +31. Как часто передаются пакеты оповещения? +32. Что происходит, если оба `keepalived vrrp_instance` на разных узлах заявляют в пакетах оповещения об одинаковом приоритете? +33. Каковы последствия появления ситуации split-brain для сервиса высокой доступности `keepalived`? +34. Передаёт ли vrrp инстанс в состоянии BACKUP пакеты оповещения? +35. Для чего нужны параметры: track_process, track_file, track_bfd? +36. В каком блоке можно сконфигурировать маршруты, удаляемые из таблицы маршрутизации при переходе в состояние BACKUP? +37. Можно ли добавить/удалить правила сетевого фильтра при смене состояний: MASTER->BACKUP,BACKUP->MASTER? +38. Можно ли настроить `keepalived` для балансировки трафика? +39. Для чего нужен планировщик LVS? +40. Из чего состоит кворум LVS? Может ли размер кворума меняться во времени? \ No newline at end of file diff --git a/module2/03_nginx_ha/tasks.md b/module2/03_nginx_ha/tasks.md index 6c428b9..72da9a7 100644 --- a/module2/03_nginx_ha/tasks.md +++ b/module2/03_nginx_ha/tasks.md @@ -165,6 +165,7 @@ fi # Релевантные источники - https://nginx.org/ru/docs/http/ngx_http_upstream_module.html - https://ru.wikipedia.org/wiki/VRRP -- https://keepalived.readthedocs.io/en/latest/ +- `man keepalived.conf`, https://www.keepalived.org/manpage.html (на данный момент лучшая документация, идеально отражающая и документирующая все доступные функции) +- https://keepalived.readthedocs.io/en/latest/ (эта документация является устаревшей, поскольку является частичной и не отражает полный набор доступных функций) - https://datatracker.ietf.org/doc/html/rfc2338 - http://www.austintek.com/LVS/LVS-HOWTO/mini-HOWTO/LVS-mini-HOWTO.html \ No newline at end of file