smutosey / 10-05-haproxy-nginx

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Домашнее задание к занятию "10.5. Балансировка нагрузки. HAProxy/Nginx" - Александр Недорезов

Задание 1

Что такое балансировка нагрузки и зачем она нужна?

Приведите ответ в свободной форме.

Ответ

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

Это определение применимо ко всем аспектам обработки данных, а не только к работе с сетью. Операционные системы используют балансировку для диспетчеризации задач среди нескольких физических процессоров. Контейнерные оркестраторы вроде Kubernetes используют балансировку для диспетчеризации задач среди нескольких вычислительных кластеров. А сетевые балансировщики распределяют сетевые задачи среди доступных бэкендов.



Задание 2

Чем отличаются алгоритмы балансировки Round Robin и Weighted Round Robin? В каких случаях каждый из них лучше применять?

Приведите ответ в свободной форме.

Ответ

Round Robin, или алгоритм кругового обслуживания - самый простой алгоритм. Балансировщик держит обычную очередь из серверов. Первый сервер в очереди обрабатывает запрос и помещается в конец очереди и так по кругу. Таким образом сервера равномерно нагружены.

Weighted Round Robin — тот же round robin, но имеет дополнительное свойство — вес сервера. С его помощью мы можем указать балансировщику сколько трафика отправлять на тот или иной сервер. Так сервера помощнее будут иметь больший вес и, соответственно, обрабатывать больше запросов, чем другие сервера.

Таким образом,

  • Round Robin алгоритм отлично походит когда сервера в пуле имеют одинаковую мощность и время обработки запросов.
  • Weighted Round Robin следует применять в случаях, если наши сервера обладают различной мощностью, но при этом всех проблем с отказоустойчивостью алгоритм не решает. Более эффективную балансировку обеспечивают другие методы, в которых при планировании и распределении нагрузки учитывается большее количество параметров.


Задание 3

Установите и запустите Haproxy.

Приведите скриншот systemctl status haproxy, где будет видно, что Haproxy запущен

Ответ

ВМ для домашнего задания поднята с помощью Vagrantfile, все настройки для заданий 3-6 выполнены в provision config.sh

Статус сервиса: img



Задание 4

Установите и запустите Nginx.

Приведите скриншот systemctl status nginx, где будет видно, что Nginx запущен

Ответ

Статус сервиса: img



Задание 5

Настройте Nginx на виртуальной машине таким образом, чтобы при запросе:

curl http://localhost:8088/ping

он возвращал в ответе строчку:

"nginx is configured correctly".

Приведите конфигурации настроенного Nginx сервиса и скриншот результата выполнения команды curl http://localhost:8088/ping.

Ответ

Конфигурирование NGINX:

cat > /etc/nginx/sites-available/test.conf << "EOF"
server {
    listen 8088;

    server_name nedorezov.netology.com;

    location /ping {
        return 200 'nginx is configured correctly\n';
    }
}
EOF

ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf
sudo systemctl restart nginx

Результат curl: img



Задание 6*

Настройте Haproxy таким образом, чтобы при ответе на запрос:

curl http://localhost:8080/

он проксировал его в Nginx на порту 8088, который был настроен в задании 5 и возвращал от него ответ:

"nginx is configured correctly".

Приведите конфигурации настроенного Haproxy и скриншоты результата выполнения команды curl http://localhost:8080/.

Ответ

Конфигурирование HAProxy

cat > /etc/haproxy/haproxy.cfg << "EOF"
defaults
    mode http
    timeout client 10s
    timeout connect 5s
    timeout server 10s 
    timeout http-request 10s

frontend www
    bind :8080
    http-request set-path /ping
    default_backend web_servers

backend web_servers
    server me localhost:8088
EOF

sudo systemctl restart haproxy

Результат curl: img

About


Languages

Language:Shell 100.0%