Здравствуйте, есть 3 ноды, которые добавлены в upstream на nginx. На них подняты службы:
1) Веб
2) Передачи/приема данных по tcp (аббревиатура mci)
На каждом порту есть свой API. Задача следующая - необходимо делать проверку доступности серверов используя их api с помощью get(для web) и post(для tcp) запроса.
stream {
upstream mci_balancing {
server 172.22.5.32:37911 fail_timeout=3s;
server 172.22.5.33:37911 fail_timeout=3s;
server 172.22.5.34:37911 fail_timeout=3s;
#По MCI - вот такой POST запрос <IRIS Version="1" Message="StatusRequest"></IRIS>
}
server {
listen 37911;
proxy_pass mci_balancing;
proxy_timeout 3s;
proxy_connect_timeout 1s;
}
}
http {
upstream web_server {
ip_hash; #для сохранения сессии авторизации
server 172.22.5.32:8001;
server 172.22.5.33:8001;
server 172.22.5.34:8001;
#GET /?{%22request%22:%22ping%22
keepalive 64;
}
server {
listen 80;
location / {
proxy_pass http://web_server;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
К тому же, для MCI необходимо направлять весь трафик на 1 любую рабочую ноду и только при ее отвале переключать весь трафик на другую.
Подскажите, как можно реализовать стандартными или не очень средствами бесплатного nginx'a