Как добавить проверку работоспособности на несколько портов в балансировщике нагрузки nginx?

Мы используем nginx для балансировки нагрузки нашего приложения. Есть 4 узла, которые необходимо балансировать по циклической нагрузке. Балансировка нагрузки работает нормально.

Служба среды выполнения прослушивает порт 9001, который выполняет внутреннее перенаправление на другую службу на том же узле.

Итак, мы определили восходящий поток в nginx.conf с файлом состояния cluster.state. Ниже приведена выдержка из nginx.conf.

upstream cluster {
        zone cluster 64k;
        state /var/nginx/state/cluster.state;
}

Ниже приведен фрагмент блока сервера для маршрутизации вызовов:

location /apipattern {
    proxy_set_header Host $host:$server_port;
    proxy_read_timeout 300s;
    proxy_pass http://cluster/;
}
        

Ниже приведена выдержка из файла cluster.state (полные доменные имена изменены, но порт правильный)

server foobar1.com:9001 resolve;
server foobar2.com:9001 resolve;
server foobar3.com:9001 resolve;
server foobar4.com:9001 resolve;

Требование состоит в том, чтобы установить проверку работоспособности (для узлов, упомянутых в cluster.state). Службы проверки работоспособности (2 службы) на этих узлах доступны через порты 8081 и 8082 с uri=/healthcheck/isup (и НЕ на 9001)

Как настроить эти проверки работоспособности?


person Sanjay Negi    schedule 14.07.2020    source источник


Ответы (1)


вы можете добавить несколько директив health_check в директиву местоположения с настраиваемым портом и uri, чтобы иметь составные/несколько мониторов для восходящего потока. Это возможно только с NGINX plus, который предлагает активную проверку работоспособности.

location /juice {
proxy_set_header Host $host;
proxy_pass http://juice/;
health_check port=800 uri=/custom.html;
health_check port=8081 uri=/hello.html;
}
    
person Mandrake007    schedule 28.10.2020