Добрый день.
Подскажите в таком вопросе:
Есть конфигурация:
upstream sait-upstream {
server backend01.group:8443 max_fails=5 fail_timeout=300s;
server backend02.group:8443 max_fails=5 fail_timeout=300s;
}
server {
listen 443 ssl;
server_name my-sait.group;
access_log /var/log/angie/my-sait.group_access.log upstreamlog;
error_log /var/log/angie/my-sait.group_error.log;
ssl_certificate /etc/angie/ssl/my-sait.group.crt;
ssl_certificate_key /etc/angie/ssl/my-sait.group.key;
ssl_verify_depth 3;
## proxy_ssl_protocols TLSv1.2 TLSv1.3;
## ssl_prefer_server_ciphers on;
## ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
## ssl_session_tickets off;
client_max_body_size 10m;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
proxy_read_timeout 1800;
send_timeout 1800;
location / {
proxy_set_header Host $host;
proxy_pass https://sait-upstream;
proxy_set_header X-Forwarded-For $remote_addr;
## proxy_ssl_name $host;
## proxy_ssl_server_name on;
}
Где ## эти строки были добавлены позднее*.
Суть вопроса и проблемы заключается что при такой конфигурации если есть сетевая недоступность у одной из нод трафик должен идти на вторую ноду - верно?
В моем случае backend01 был постоянно не доступен по указанному порту - при проверке telnet получаем Connection refused
Судя из документации angie периодически отправляет запросы на проверку этой не активной ноды.
Ловили часто ошибку клиенты, как при работе fail2ban, примерно на 10-15 запросах меньше за минуту/две для конкретного клиента реверс прокси выдавал ошибки маршрутизации 502, на ~5 минут. Далее все норм, пока опять не начнет часто обновлять страницу*.
Но если этот клиент пойдет на прямую http://backend02.group:8443 - нет никаких блокировок.
При чем соседние публикации на данном реверс прокси, нормально отрабатывались у клиентов. На сервере приложений они же backend02 в логах нет ничего подозрительного и нет системы fail2ban.
Сменил конфигурацию на (то что ## добавил) сменил секцию upstream:
#server backend01.group:8443 max_fails=5 fail_timeout=300s;
server backend02.group:8443;
И все стало более стабильно работать. Вот собственно появились вопросы:
Вопрос №1:
Angie отправляет свой служебный запрос - или все таки при очередном цикле своей внутренней проверки он еще и легитимный трафик клиента тоже в этот момент отправляет на backend01 ? В логах локальных видно было что он некоторые запросы все таки пытался отправить на backend01…
Вопрос №2
Как angie все таки проводит проверку стандартную свою в секции upstream (pro версию не затрагиваем)? Что именно является “ошибкой” или фактором при встроенной проверки ноды апстрима? Например ошибки в рукопожатии ssl являются ли маркером для счетчика ошибок к backend02?
Вопрос №3
Почему временно “блокировало” только одного клиента, а не всех, если брать в учет что сработал счетчик ошибок к ноде, и angie должен был прекратить дальнейшую обработку трафика всех клиентов к данной ноде backen?
Версия Angie/1.6.0 (PRO)