Что такое балансировка нагрузки и зачем она нужна?
Приведите ответ в свободной форме.
В вычислительной технике балансировка нагрузки улучшает распределение рабочих нагрузок по нескольким вычислительным ресурсам: компьютерам, компьютерным кластерам, сетевым подключениям, центральным процессорам или дисковым устройствам. Балансировка нагрузки призвана оптимизировать использование ресурсов, максимально увеличить пропускную способность, минимизировать время отклика и избежать перегрузки отдельных ресурсов. Применение вместо одного компонента нескольких компонентов с балансировкой может повысить надёжность и доступность благодаря получившемуся запасу мощностей. Балансировка нагрузки обычно подразумевает использование специального ПО или оборудования вроде многоуровневого коммутатора или DNS-сервера.
Это определение применимо ко всем аспектам обработки данных, а не только к работе с сетью. Операционные системы используют балансировку для диспетчеризации задач среди нескольких физических процессоров. Контейнерные оркестраторы вроде Kubernetes используют балансировку для диспетчеризации задач среди нескольких вычислительных кластеров. А сетевые балансировщики распределяют сетевые задачи среди доступных бэкендов.
Чем отличаются алгоритмы балансировки Round Robin и Weighted Round Robin? В каких случаях каждый из них лучше применять?
Приведите ответ в свободной форме.
Round Robin, или алгоритм кругового обслуживания - самый простой алгоритм. Балансировщик держит обычную очередь из серверов. Первый сервер в очереди обрабатывает запрос и помещается в конец очереди и так по кругу. Таким образом сервера равномерно нагружены.
Weighted Round Robin — тот же round robin, но имеет дополнительное свойство — вес сервера. С его помощью мы можем указать балансировщику сколько трафика отправлять на тот или иной сервер. Так сервера помощнее будут иметь больший вес и, соответственно, обрабатывать больше запросов, чем другие сервера.
Таким образом,
- Round Robin алгоритм отлично походит когда сервера в пуле имеют одинаковую мощность и время обработки запросов.
- Weighted Round Robin следует применять в случаях, если наши сервера обладают различной мощностью, но при этом всех проблем с отказоустойчивостью алгоритм не решает. Более эффективную балансировку обеспечивают другие методы, в которых при планировании и распределении нагрузки учитывается большее количество параметров.
Установите и запустите Haproxy.
Приведите скриншот systemctl status haproxy, где будет видно, что Haproxy запущен
ВМ для домашнего задания поднята с помощью Vagrantfile, все настройки для заданий 3-6 выполнены в provision config.sh
Установите и запустите Nginx.
Приведите скриншот systemctl status nginx, где будет видно, что Nginx запущен
Настройте 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
Настройте 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