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

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

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

Похожие вопросы