Понимание 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 фактически поддерживает соединение, связан с плохо настроенным межсетевым экраном, который сбрасывает неактивные соединения.