Я хочу загружать запросы балансировки на один и тот же порт на трех бэкэндах. У меня есть около 20 портов для пересылки, поэтому мне нужен способ сделать его динамическим. Это для балансировки нагрузки наших серверов prod, pre-prod, qa, dev, unit test для нескольких доменов. Итак, да, я могу сделать это, используя 20 бэкэндов, 20 acls и 20 use_backends. Но тогда забудьте об этом. Слишком много хлопот.
Таким образом, я хотел бы использовать переменную для обозначения «запрошенного порта». Я попробовал% [dst_port], потому что это работало в другой ситуации.
Я где-то читал один ответ от Willy T, что, если не указывать порт, он просто перенаправляется на тот же порт.
Но ему по-прежнему нужен либо сервисный порт, либо контрольный порт, о котором я не знаю заранее, если я не привяжусь к 20 различным интерфейсам.
Ошибка: сервер X не имеет ни сервисного порта, ни порта проверки, ни правила tcp_check «подключиться» с информацией о порте. Проверка отключена.
например.
listen load-balance
bind :28080
bind :42080
bind :48080
bind :58080
bind :38080
mode http
balance roundrobin
option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost
server X 10.20.30.1 check %[dst_port]
server Y 10.20.30.2 check %[dst_port]
server Z 10.20.30.3 check %[dst_port]
Видите ли, ему нужна переменная. Это возможно?
(Моя проблема еще более сложна, потому что технически мне нужна карта порта назначения для проверки порта, в идеале, но если бы я мог сделать этот трюк с динамическим портом, по крайней мере, тогда этого достаточно.)
Вам нужно настроить его с помощью
server X 10.20.30.1 check port 80
server Y 10.20.30.2 check port 80
server Z 10.20.30.3 check port 80
Вы можете установить только один порт для проверки работоспособности или использовать «команду external-check» для проверки вашего сервера с помощью собственного скрипта ...