2015-07-06 6 views
2

Я работаю над своим личным проектом по «оценке производительности» Haproxy с помощью Docker Container. Я программирую Python и использую iperf для генерации трафика.udp трафик с Iperf для haproxy

Я создал несколько контейнеров Docker в качестве клиентов и серверов. Клиенты должны отправлять udp-трафик на серверы через контейнер Haproxy, который действует как балансировщик нагрузки.

Проблема в том, что я пытаюсь отправить udp-трафик с клиентов на серверы, Haproxy отказывается от соединений. Я не нашел в официальной документации, как связывать или прослушивать порт UDP.

Заранее благодарю вас за ваш ответ.

А вот копия моего haproxy.cfg.

global quiet nbproc 4 daemon listen tcp_haproxy 172.17.4.230:5001 balance roundrobin server server0 172.17.4.227:5001 server server1 172.17.4.228:5001 server server2 172.17.4.229:5001

ответ

5

Как я прочитал, этот вопрос больше о UDP балансировки нагрузки, чем Докер. Пожалуйста, не стесняйтесь исправить меня, если я неправильно понял вопрос.

Вам, вероятно, не понравится этот ответ, но здесь идет. HAProxy не поддерживает UDP. official homepage описывает HAProxy как TCP и HTTP прокси явно (подразумевается, это означает «нет UDP»). Есть также this question on ServerFault относительно темы балансировки нагрузки UDP, которая также обсуждает и быстро отклоняет HAProxy.

Поскольку мне не нравится «это невозможно, справитесь с этим» в качестве ответа, давайте посмотрим на альтернативы.

  1. Некоторые ресурсы, которые просят о балансировке нагрузки UDP в конечном итоге рекомендовать IPVS в качестве балансировки нагрузки. Это часть ядра Linux, что делает его плохим решением, если вы ищете что-то, основанное на Docker. Если это не дело выключатель для вас, есть short example on the Wikipedia page, которые могут быть отрегулированы к вашему сценарию с тремя UDP серверов:

    ipvsadm -A -u 172.17.4.230:5001 -s rr 
    ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.227:5001 -m 
    ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.228:5001 -m 
    ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.229:5001 -m 
    
  2. Быстрый поиск Google поворачивает вверх альтернативные решения с открытым исходным кодом, как Pen. Возможно, стоит посмотреть?

  3. Уверенный, что вы не можете использовать TCP вместо этого? ;)

+0

Да, это о UDP балансировки нагрузки, чем Докер. Я использовал контейнер Docker в качестве альтернативы виртуальным машинам ... С вами все в порядке. Я ценю ваш ответ. 1) Это просто оценка производительности между балансом и гапрокси. 2) спасибо за ссылку. 3) Мне нужно сравнить баланс и haproxy в режиме TCP и UDP, так как haproxy не поддерживает балансировку нагрузки udp, все в порядке. Еще раз спасибо – user2567806

+0

@ user2567806, рад помочь. Если это ответит на ваш вопрос, не забудьте принять ответ. ;) – helmbert

1

По состоянию на март 2016 года лучшим решением этой проблемы в настоящее время Nginx> = 1.9.13:

https://www.nginx.com/blog/announcing-udp-load-balancing/

Вы можете настроить HA и медосмотры для UDP выше по потоку, как и вы будет обратным прокси-сервером с обратным концом TCP. Для моего проекта мы реализовали решение, используя пользовательский контейнер из базового Nginx контейнера (который может иметь отношение к использованию докер случае ФП в), которые можно найти здесь:

https://hub.docker.com/_/nginx/

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

  • Нет связанных вопросов^_^