Назад | Перейти на главную страницу

haproxy подключается только к одному внутреннему серверу

У меня возникли проблемы с базовой конфигурацией на сервере Ubuntu 16.04, чтобы использовать haproxy для балансировки входящих метрик в двух процессах углеродного реле. Haproxy создает TCP-соединение только с первым сервером в списке серверов в разделе «прослушивание». Кроме того, когда я tcpdump и наблюдаю за обоими портами углеродного реле, только один из подключенных получает какие-либо метрики от haproxy, но если я включу параметр «check» в записях сервера, проверки работоспособности будут отображаться в выходных данных tcpdump.

Если я закомментирую первый сервер или изменю их порядок, он подключается к другому серверу, а другое тестирование не указывает на какие-либо проблемы с процессами углеродного реле, поэтому я не понимаю, почему он будет подключаться только к один сервер.

Я также пробовал roundrobin, static-rr и lessconn для параметра баланса.

Вот суть с соответствующими разделами haproxy.cfg и carbon-relay.conf, а также вывод netstat, показывающий порты прослушивания и TCP-соединение с одним сервером.

https://gist.github.com/Calygos/b1442e0936adafb27fc80a76477235e9

Учитывая, что у вас только один клиент (локальный collectd process), HAProxy работает именно так, как должен.

Он получает соединение от collectdи выбрать один из двух внутренних серверов. Если бы у вас было больше клиентов, он бы начал балансировать трафик для обоих.

Если вы хотите это проверить, установите balance алгоритм для roundrobin и перезапустить collectd. Юу должен увидеть, что это новое соединение попало на другой внутренний сервер.

В качестве альтернативы вы можете запустить второе соединение (с collectdили даже telnet), и он должен найти путь ко второму серверу.