Я пытался настроить форварда с помощью haproxy.
listen POC-2019-02-03
bind 0.0.0.0:8083
timeout connect 14000
timeout client 180000
timeout server 180000
mode http
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpclose
option httpchk GET / HTTP/1.1
http-check expect rstring "Welcome"
server S-ONE 127.0.0.1:6001 check
server S-TWO 127.0.0.1:6002 check backup
который обычно будет служить следующим образом при запросе http://127.0.0.1:8083:
503 Сервис недоступен
Нет доступных серверов для обработки этого запроса.
Затем второй запрос обслуживается через S-TWO
Затем он непрерывно обслуживается S-TWO. После этого я запускаю S-ONE и, очевидно, запрос все еще обслуживается от S-TWO, что меня устраивает.
Я отказываюсь S-TWO затем, не показывая никаких ошибок, он обслуживает S-ONE, Что круто. Но в этом сценарии я не получаю обратного.
Есть что-нибудь, что я должен здесь настроить?
Ты должен посмотреть на падение и меж:
падение <количество>
Параметр «fall» указывает, что сервер будет считаться мертвым после последовательных неудачных проверок работоспособности. Если не указано иное, это значение по умолчанию равно 3. См. Также параметры «проверка», «интер» и «подъем».
inter <задержка>
Параметр «inter» устанавливает интервал между двумя последовательными проверками работоспособности в миллисекундах. Если не указано иное, задержка по умолчанию составляет 2000 мс.
Я никогда не пробовал этот точный сценарий, но подозреваю, что до того, как он фактически пометит хост как неработающий (и, таким образом, активирует резервную копию (и)), ему больше некуда направлять трафик, поэтому он продолжает отправлять его на {{s-ONE }} до тех пор, пока он официально не отключится.