Мониторинг доступности балансируемых серверов

Добрый день. Подскажите возможно ли мониторить доступность серверов в статусе?
Сейчас для теста использую дефолтный шаблон настроек stream модуля

upstream ssh_servers {
    least_conn;
    server 192.168.122.234:8022 max_fails=1 fail_timeout=15s;
    server 192.168.136.131:22 max_fails=1 fail_timeout=15s;
    server 192.168.136.132:22 max_fails=1 fail_timeout=15s;
    zone ssh_backend 1m;
}
server {
    listen     8022;
    proxy_pass ssh_servers;
    status_zone ssh_servers;
}

в статусе у сервера например

					"192.168.122.234:8022": {
						"server": "192.168.122.234:8022",
						"backup": false,
						"weight": 1,
						"state": "up",
						"selected": {
							"current": 0,
							"total": 0
						},

						"data": {
							"sent": 0,
							"received": 0
						},

						"health": {
							"fails": 0,
							"unavailable": 0,
							"downtime": 0
						},

						"sid": "383a41ff7d3de45f8c568493b8f6c5e1"
					},

state показывает up хотя порт по факту недоступен, можно ли каким то образом выводить информацию о доступности (up,down) сервера как например в haproxy?

Добрый день.

Судя по цифрам в статусе, этот бекенд ещё не был ни разу выбран при обработке клиентского соединения и не получил на одного запроса. А статус state опирается именно на клиентские запросы и, будучи по умолчанию up, изменится только неудавшейся попытки установления соединения с ним (max_fails =1). Неудачной попыткой считается ошибка или таймаут при установке соединения с сервером.

1 Like

Спасибо за разъяснение, я думал проверка происходит в постоянном активном режиме по типу как в HAProxy. Действительно после подключения к серверу и вывода его из работы повторное подключение показало что сервер неактивен.

Подскажите еще пожалуйста, сейчас если сервер был ранее недоступен то после доступности в активный статус он переход только после отключения пользователя от сервера. Балансирую ssh. Можно ли как то переводить в статус активного сразу же после подключения пользователя?
Так же в haproxy можно выставить в качестве параметра проверки ответ от сервера по типу tcp-check expect rstring SSH-2.0-OpenSSH.* есть ли такая же возможность у angie?

Можно ли как то переводить в статус активного сразу же после подключения пользователя?

Речь идёт об одном пользователе? fail_timeout=15s — интервал времени, в течение которого сервер будет оставаться недоступным, прежде чем снова будет проверен попыткой передачи на него клиентского соединения. (Документация)

есть ли такая же возможность у angie?

Активные проверки входят в Angie PRO.