Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 13

Если у вас headless‑сервисы или SRV‑записи — придётся городить костыли или писать свой лоадер.

не вводите людей в заблуждение
https://nginx.org/ru/docs/http/ngx_http_upstream_module.html#server

поддерживается и SRV и балансировка по headless service (server hdls-svc resolve)

Вот три плотных и технически насыщенных блока, каждый по заявленной теме. Написаны в едином стиле статьи — лаконично, глубоко и по существу, с комментариями «от старшего разраба».

Даже не вычитано и не почищено после ИИ...

Просим прощения, удалили этот момент, не повторится

чукча не читатель, чукча писатель, к тому же с наивной надеждой, что ИИ всё знает

Статья хорошая, несмотря на пару нюансов которые заметили в комментариях. Редкое на хабре

спасибо, что заметили. Убрали, во время работы пропустили этот момент

Догадываюсь, что имелось в виду, но всё равно звучит занятно:
- Статья хорошая.
- Спасибо, пропустили этот момент, теперь убрали.

Хватит минусовать, там не пара нюансов, а дофига ошибок. Но конструкция

http {
    resolver 8.8.8.8 1.1.1.1 valid=5s ipv6=off;
    resolver_timeout 2s;

    map $upstream_http_x_healthcheck $backend_host {
        default "api-primary.example.com";
        "fail" "api-fallback.example.com";
    }

    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
    }

    server {
        listen 80;

        location /api/ {
            proxy_pass http://$backend_host;
            proxy_http_version 1.1;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

Верная и мало где встречается в интернете, из-за чего инженеры её мало используют, а она очень полезная.

А я честно говоря не понял откуда берется переменная upstream_http_x_healthcheck и кто её может выставлять в fail

https://nginx.org/en/docs/http/ngx_http_upstream_module.html

$upstream_http_name

Сохраняет заголовки ответов сервера апстрима. Например, поле заголовка ответа «Server» доступно через $upstream_http_serverпеременную. Правила преобразования имен полей заголовка в имена переменных такие же, как и для переменных, начинающихся с префикса « $http_ ». Сохраняются только поля заголовка из ответа последнего сервера.

HTTP Header x-healthcheck: bla-bla, который отдаст ваш бекенд апстрима будет доступен через эту переменную.

http { resolver 8.8.8.8 1.1.1.1 valid=5s ipv6=off; resolver_timeout 2s;
...

кусок повторяется 2 раза.

странно не вычитать статью.

Ну, с кем не бывает, просим прощения. Спасибо, что заметили. Исправимся

"Встроенный DNS‑резолвер NGINX не поддерживает fallback на TCP" - это неправда, как и множество других ошибок и неточностей в статье

Зарегистрируйтесь на Хабре, чтобы оставить комментарий