2014-05-09 5 views
1

У меня есть два сервера, один из которых действует как резервный, а другой активный. В режиме ожидания pgpool постоянно проверяет, работает ли postgres на другом сервере. Я пытаюсь смоделировать ситуацию, когда запрос pgpool на активный сервер истекает, и пытается использовать для этого iptables DROP.iptables DROP не отбрасывает пакеты

В соответствии с тем, что я прочитал, опция DROP тихо отбрасывает пакеты без источника, чтобы узнать об этом, и требуется много времени для отказа (для источника знать). Я использовал ниже запись в IPTables активного сервера

iptables -A INPUT -p tcp -s <standby server ip> -m state --state NEW,ESTABLISHED --dport 5432 -j DROP

Делая это, я мог имитировать тайм-аут, но раз слишком рано (даже не второй).

Может ли кто-нибудь объяснить, что это значит, «долгое время терпеть неудачу» во всех ссылках? и есть ли какой-либо вариант, который я могу использовать для увеличения времени, затраченного на провал.

+0

Предположим, что клиент ipv4 linux проверяет '/ proc/sys/net/ipv4/tcp_syn_retries'. Типичное значение - '5', дающее тайм-аут' ~ 60s'. –

+0

Спасибо, Дэниэл. Я проверил значения, и он там, как вы упомянули. Однако я обнаружил, что DROP на самом деле работает, но pgpool не соблюдает тайм-аут – spathirana

ответ

0

Я тестировал это снова, используя telnet вместо pgpool, и он ожидал 60 секунд, как ожидалось. Оказывается, проблема в самом pgpool, но не в iptables. Я предоставляю это как ответ всем, кто столкнется с этим. Спасибо всем за ответы

0

В зависимости от местоположения правила в вашем наборе правил он может не срабатывать, и пакеты от <standby server ip> могут быть использованы в качестве правила ALLOW.

Вы можете активно следить за iptables, чтобы увидеть, что правила стрельбы с использованием watch

$ sudo watch -n1 "iptables -vnL" 

«Возьмите много времени, чтобы потерпеть неудачу» означает, что DROP говорит IPTables не отвечать отправителю пакета с пакетом сброса TCP или icmp. Это приводит к тому, что отправитель должен дождаться указанного периода ожидания до закрытия попытки подключения.

+0

Спасибо Creek, я знаю, что он попадает в правило DROP, когда я получаю тайм-аут на моем активном сервере (источнике), как только я добавляю правило через скрипт. И начинает принимать запросы, когда я снова удаляю правило с помощью скрипта. Возможно, мне нужно проверить указанный период ожидания. – spathirana

Смежные вопросы