Балансировка нагрузки Nginx по эквивалентному порту на другом IP-адресе - PullRequest
0 голосов
/ 19 февраля 2019

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

upstream service0 {
    ip_hash;
    server 192.168.56.3:8000;
    server 192.168.56.4:8000;
}
upstream service1 {
    ip_hash;
    server 192.168.56.3:8001;
    server 192.168.56.4:8001;
}
upstream service2 {
    ip_hash;
    server 192.168.56.3:8002;
    server 192.168.56.4:8002;
}

server {
    listen 8000;
    location / {
        proxy_pass http://service0;
    }
}
server {
    listen 8001;
    location / {
        proxy_pass http://service1;
    }
}
server {
    listen 8002;
    location / {
        proxy_pass http://service2;
    }
}

Есть ли способ использовать встроенные переменные или любой другой параметр, чтобы не настраивать несколько вышестоящих служб и серверов?Я вижу $ server_port как одну из встроенных переменных в модуле http core http://nginx.org/en/docs/http/ngx_http_core_module.html#var_server_port, но не вижу эквивалентной переменной в вышестоящем модуле.http://nginx.org/en/docs/http/ngx_http_upstream_module.html

Ищете что-то вроде этого:

upstream service {
    ip_hash;
    server 192.168.56.3:$service_port;
    server 192.168.56.4:$service_port;
}

server {
    listen 8000;
    listen 8001;
    listen 8002;
    location / {
        proxy_pass http://service:$service_port;
    }
}

Ищете что-то похожее выше или эквивалентное, поскольку я не могу использовать $ service_port в секции upstream.

Возможно ли этодостичь в nginx?

Цените любую помощь по этому поводу.

...