Понимание keepalive между клиентом и cockroachdb с помощью haproxy

Мы сталкиваемся с проблемой, когда наш клиент называет это A. Пытается подключиться к серверу БД (Cockroach) с именем B, сбалансированным по нагрузке через ha-proxy

A < -- > haproxy < -- > B 

Теперь на каждом, пока наш клиент А получает Broken Pipe ошибка.

Но я не могу понять, почему?

Сервер тараканов уже имеет значение по умолчанию ниже, то есть 60 секунд.

COCKROACH_SQL_TCP_KEEP_ALIVE ## which is enabled to send for 60 second

Плюс наш конфиг haproxy имеет следующую настройку.

defaults
    mode                tcp
    # Timeout values should be configured for your specific use.
    # See: https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-timeout%20connect
    timeout connect     10s
    timeout client      1m
    timeout server      1m
    # TCP keep-alive on client side. Server already enables them.
    option              clitcpka

опция clitcpka

Итак, что вызывает разрыв соединения TCP, когда keepalive включен на каждом конце.

1 ответ

Keepalive - это то, что отключает соединения, если одна из конечных точек умерла, не закрыв соединение. Расследовать в этом направлении.

Единственный раз, когда keepalive фактически поддерживает соединение, связан с плохо настроенным межсетевым экраном, который сбрасывает неактивные соединения.

Другие вопросы по тегам