LINUX.ORG.RU
ФорумAdmin

Nginx 1 клинет на два разных бэкенд

 


0

1

Сейчас всё работает так, некие клиенты, прилетают либо на 1 бэкенд либо на 2 другой. Нужно как то реализовать, что бы для начала 1 клиент прилетал одновременно на два разных бэкенда. Сейчас такой конфиг и он рабочий.

       map $cookie_src $backend {
                default test01;
                AB:AB:AB:AB:AB test02;
        }

upstream test01 {
                server 3.3.3.3;
}
upstream test02 {
                server 4.4.4.4;
}

server {
        listen 1.1.1.1:80;
        listen 2.2.2.2:8881;

        server_name NAME.ru;

        access_log on;
        access_log /var/log/nginx/test-access.log;
        error_log /var/log/nginx/test-error.log;

        location / {
                proxy_set_header Host 0.0.0.0.ru;
                proxy_pass http://$backend;
        }
}

Вот так уже не работает:
       map $cookie_src $backend {
                default test01;
                AB:AB:AB:AB:AB test02;
                AB:AB:AB:AB:AB test01;
        }

Я стесняюсь спросить - какая задача решается?

zolden ★★★★★ ()

Вот так уже не работает:

Работает. Просто ты не понимаешь, что сделал

router ★★★★★ ()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

это в прямом смысле одинаковые мак-адреса лог: conflicting parameter «ab:ab:ab:ab:ab:ab» in /etc/nginx/sites-enabled/default:4

forzasakh ()
Ответ на: комментарий от zolden

просто проксирование «по» мак-адресам клиентов одновременно на разные сервера =)

forzasakh ()
Ответ на: комментарий от forzasakh

Ответ клиент тоже от обоих бекендов должен получать?

Deleted ()
Ответ на: комментарий от forzasakh

Ну тогда можешь попробовать накостылять зеркалирование трафика с помощью mirror.

Deleted ()
Последнее исправление: MyLittleLoli (всего исправлений: 1)
Ответ на: комментарий от Deleted

Почитал, посмотрел, так а мне всё равно для этого нужно будет описывать в map те мак-адреса которые мне нужно будет и направлять на test02 и на mirror, а nginx не даёт два одинаковых мак-адреса прописать. Сейчас у меня прилетает 200+ клиентов, а нужно что бы из этих 200, 100 было на test01, а остальные 100 были и на test02 и на mirror... Или может чего то не понимаю?) По докам nginx'a непонятно как применить mirror к моему конфигу....

forzasakh ()
Ответ на: комментарий от Deleted

точнее что бы 100 было и на test01, а остальные 100 были на test01, и на test02

forzasakh ()
Ответ на: комментарий от forzasakh
map $backend $reverse_backend {
    test1 test2;
    test2 test1;
}

...

location / {
    ...
    mirror /devnull;
}

location = /devnull {
    internal;
    proxy_pass http://$reverse_backend$request_uri;
}

Как-то так, наверно. Либо ставить за nginx какой-нибудь teeproxy, или через iptables дублировать трафик.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.