@Jozo

Как настроить Health check load balancer на nginx?

Здравствуйте, есть 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
  • Вопрос задан
  • 5769 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mrquokka
ngx_stream_upstream_check_module для tcp (stream)
nginx_upstream_check_moduleдля http (upstream)

Но гораздо удобнее Haproxy, правда там лицензия GPL v2, что не подходит для меня.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы