У меня возникли проблемы с базовой конфигурацией на сервере 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), и он должен найти путь ко второму серверу.