Skip to content

Svalker1989/Disaster_recovery

Repository files navigation

Домашнее задание к занятию "Disaster recovery и Keepalived" - Стрекозов Владимир


Задание 1

  • Дана схема для Cisco Packet Tracer, рассматриваемая в лекции.
  • На данной схеме уже настроено отслеживание интерфейсов маршрутизаторов Gi0/1 (для нулевой группы)
  • Необходимо аналогично настроить отслеживание состояния интерфейсов Gi0/0 (для первой группы).
  • Для проверки корректности настройки, разорвите один из кабелей между одним из маршрутизаторов и Switch0 и запустите ping между PC0 и Server0.
  • На проверку отправьте получившуюся схему в формате pkt и скриншот, где виден процесс настройки маршрутизатора.
Скриншот вывода команд sho standby, на которых видно что для интерфейсов g0/0 g0/1 настроен hsrp preempt, позволяет сделать роутер активным сразу как приоритет становится большим по отношению к партнеру.
А так же настроен standby track, который позволяет отслеживать состояние того или иного интерфейса и изменять приоритет интерфейса

Z1

Файл packet tracer

Задание 2

  • Запустите две виртуальные машины Linux, установите и настройте сервис Keepalived как в лекции, используя пример конфигурационного файла.
  • Настройте любой веб-сервер (например, nginx или simple python server) на двух виртуальных машинах
  • Напишите Bash-скрипт, который будет проверять доступность порта данного веб-сервера и существование файла index.html в root-директории данного веб-сервера.
  • Настройте Keepalived так, чтобы он запускал данный скрипт каждые 3 секунды и переносил виртуальный IP на другой сервер, если bash-скрипт завершался с кодом, отличным от нуля (то есть порт веб-сервера был недоступен или отсутствовал index.html). Используйте для этого секцию vrrp_script
  • На проверку отправьте получившейся bash-скрипт и конфигурационный файл keepalived, а также скриншот с демонстрацией переезда плавающего ip на другой сервер в случае недоступности порта или файла index.html

Tracking script

keepalived запускает скрипт с определенным интервалом, если скрипт возвращает статус 0, то ничего не происходит, если 1, то keepalived переходит в статус fault.

Получившийся bash-скрипт

script

Конфигурационный файл keepalived с настройкой tracking script

config_script

Результат переезда плавающего ip на другой сервер в случае недоступности порта или файла index.html

Задание 3

  • Изучите дополнительно возможность Keepalived, которая называется vrrp_track_file
  • Напишите bash-скрипт, который будет менять приоритет внутри файла в зависимости от нагрузки на виртуальную машину (можно разместить данный скрипт в cron и запускать каждую минуту). Рассчитывать приоритет можно, например, на основании Load average.
  • Настройте Keepalived на отслеживание данного файла.
  • Нагрузите одну из виртуальных машин, которая находится в состоянии MASTER и имеет активный виртуальный IP и проверьте, чтобы через некоторое время она перешла в состояние SLAVE из-за высокой нагрузки и виртуальный IP переехал на другой, менее нагруженный сервер.
  • Попробуйте выполнить настройку keepalived на третьем сервере и скорректировать при необходимости формулу так, чтобы плавающий ip адрес всегда был прикреплен к серверу, имеющему наименьшую нагрузку.
  • На проверку отправьте получившийся bash-скрипт и конфигурационный файл keepalived, а также скриншоты логов keepalived с серверов при разных нагрузках

Tracking files

keepalived смотрит значение в отслеживаемом файле. Базовый вес приоритета 244, итоговый результат определяется как умножение значения в файле для отслеживания на вес, указанный в keepalive.conf и + базовый вес.

Получившийся bash-скрипт для отслеживания нагрузки на ЦПУ. Начинает отслеживать если нагрузка > 50%. В зависимости от нагрузки записывает в отслеживаемый файл числно, на которое уменьшится приоритет. По логике чем больше нагрузка, тем меньше приоритет.

script

Конфигурационный файл keepalived с настройкой tracking file

config_file

Скриншот, на котором видно как меняется приоритет хоста в зависимости от значения в отслеживаемом файле

Z3

P.S.

Для создания нагрузки на ЦПУ использовал

for i in 1 2 3 4; do while : ; do : ; done & done

Releases

No releases published

Packages

No packages published

Languages