You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

10 KiB

Задания

1.

Настройте nginx в high available конфигурации с помощью модуля nginx - ngx_http_upstream_module. Сконфигурируйте nginx на трёх виртуальных машинах. Для тестировании используйте машину отличную от этих трёх.

Пример конфигурации 1:

                 ________
                |        |
                | клиент | (ноутбук)
                |________|
                    |
                  роутер  public IP 193.32.63.185:[22,80,443] -> private IP 10.160.179.25:[22,80,443] 
                    |
                    | ens18 в vlan499 с доступом в интернет с IP 10.160.179.25/24
             _______|_______
            |               | 
            |     proxy     |    
            |_______________|   
                    | ens19 в vlan X с IP 192.168.X.1/24
                    | 
          +---------+--------+
          | 192.168.X.2/24   | 192.168.X.3/24
    ___________         ___________    
   |           |       |           |   
   |  nginx 1  |       |  nginx 2  |
   |___________|       |___________|

Пример конфигурации 2:

     ________
    |        |
    | клиент | (ноутбук)
    |________|
        | 
      роутер 193.32.63.185:[22,80,443] -> 10.160.179.25:[22,80,443]
        | 
        +--------------------+---------------------+
        | 10.160.179.25/24   | 10.160.179.180/24   | 10.160.179.181/24
 _______|_______        ___________           ___________            
|               |      |           |         |           |    
|     proxy     |      |  nginx 1  |         |  nginx 2  |  
|_______________|      |___________|         |___________| 

Для конфигурации 2 используйте IP из блоков по 10 адресов, согласно следующему списку соответствий X - первый IP блока:

1 - 10.160.179.40/24 | 6 - 10.160.179.90/24   | 11 - 10.160.179.140/24
2 - 10.160.179.50/24 | 7 - 10.160.179.100/24  | 12 - 10.160.179.150/24
3 - 10.160.179.60/24 | 8 - 10.160.179.110/24  | 13 - 10.160.179.160/24
4 - 10.160.179.70/24 | 9 - 10.160.179.120/24  | 14 - 10.160.179.170/24
5 - 10.160.179.80/24 | 10 - 10.160.179.130/24 | 15 - 10.160.179.180/24

На машинах nginx 1 и nginx 2 установите nginx, отредактируйте приветственную страницу по-умолчанию /var/www/html/index.nginx-debian.html, добавив номер сервера и проверьте, что сайт доступен по локальному адресу стандартному порту 80.

Отредактируйте конфигурацию по-умолчанию /etc/nginx/sites-enabled/default. Используйте блок upstream на машине proxy для настройки прокси-сервера с функцией балансировки нагрузки и резервирования. Укажите в блоке ip адреса двух серверов nginx 1 и nginx 2 и укажите для одного из них параметр backup (этот узел будет резервным). Пример конфигурации 2 для stud15:

upstream backend {
  server 10.160.179.180;
  server 10.160.179.181 backup;
}
server {
  location / {
    proxy_pass http://backend;
  }
}

Проверьте работоспособность сайта по адресу прокси сервера для случаев когда nginx 1 и nginx 2 виртуальные машины включены, отключена основная, отключена резервная.

2.

Настройте nginx в high available конфигурации с проекта keepalived.

Проект keepalived включает в себя три компонента:

  • демон-watchdog, контролирующий работоспособность двух других компонентов,
  • реализация сетевого протокола VRRP (Virtual Router Redundancy Protocol), предназначенный для увеличения доступности маршрутизаторов, выполняющих роль шлюза по умолчанию,
  • процесс healthcheck для определения того, работает ли служба (например, веб-сервер или сервер базы данных).

VRRP гарантирует, что основной узел keepalived доступен в любое время. Резервный узел прослушивает оповещательные пакеты VRRP от первичного узла. Если он не получает оповещательный пакет в течение периода, более в три раза превышаемого заданного интервала, резервный узел берёт на себя функции первичного и назначает настроенный VIP себе.

Это задание можно выполнить в разных конфигурациях. Настроим для следующей:

                ________
               |        |
               | клиент | (ноутбук)
               |________|
                   |
                 роутер  public IP 193.32.63.185:[22,80,443] -> private IP 10.160.179.25:[22,80,443] 
                   | 
         +---------+--------+
         |                  | 10.160.179.25/24 в роли virtual IP
         | ens19            | ens19
    ___________         ___________    
   |           |       |           |   
   |  nginx 3  |       |  nginx 4  |
   |___________|       |___________|
         | ens18 в vlan X    | ens18 в vlan X
         | 192.168.X.1/24    | 192.168.X.2/24
         +-------------------+

Нам потребуется 3 машины: клиент (браузер или командная строка на ноутбуке), две машины с nginx c настроенным по-умолчанию сайтом.

2.1

Установите nginx и keepalived на nginx 3 и nginx 4:

sudo apt install nginx keepalived

2.2

Отредактируйте приветственную страницу по-умолчанию /var/www/html/index.nginx-debian.html, добавив номер сервера и проверьте, что сайт доступен по локальному адресу стандартному порту 80.

2.3

Настройте keepalived на обоих узлах, используя следующую конфигурацию /etc/keepalived/keepalived.conf согласно схеме приведённой выше. Пример конфигурации для узла nginx 3:

global_defs {
  vrrp_version 3
}
vrrp_script check_nginx {
  script "/etc/keepalived/check_nginx.sh"
  interval 2
}
vrrp_instance VI1 {
  state MASTER
  interface ens19
  virtual_router_id 1
  priority 110
  advert_int 1
  mcast_src_ip 192.168.X.1
  virtual_ipaddress {
    10.160.179.25/24
  }
  virtual_routes {
    default via 10.160.179.1
  }
  track_script {
    chech_nginx
  }
}

Служебная информация (vrrp-объявления от keepalived-лидера о том, что узел работоспособен) будет передаваться через сетевой интерфейс ens18 vlanX. Работоспособность узла отслеживается скриптом chech_nginx, указанным в блоке track_script. Скрипт настраивается в блоке vrrp_script, где указывается путь к исполняемому файлу и другие параметры. Keepalived пакет предоставляет документацию man для конфигурационного файла - man keepalived.

Поменяйте параметр state на BACKUP и уменьшите параметр priority для резервного узла, поменяйте адрес mcast_src_ip, используемый для передачи служебной информации.

На обеих машинах создайте скрипт для проверки работы nginx /etc/keepalived/check_nginx.sh и отключения keepalived процесса, в случае неработоспособности nginx сервиса (не найден pid процесса nginx).

#!/bin/sh
if [ -z "`/bin/pidof nginx`" ]; then
	systemctl stop keepalived.service
	exit 1
fi

2.4

Проверьте работоспособность сайта по адресу http://IP (IP - virtual IP или соответствующему ему белому IP по адресу) для случаев когда nginx 3 и nginx 4 виртуальные машины включены, отключена основная, отключена резервная. Выведите информацию о назначенных IP для сетевых интерфейсов для каждого случая.

3.

Дополнительное задание.

Модифицируйте настройки на машинах первого и второго задания для обеспечения балансировки нагрузки.

Релевантные источники