HAProxy HTTP против TCP

17

HAProxy дает вам возможность установить режим TCP или HTTP. Это также позволяет вам установить порт.

Так зачем мне выбирать между HTTP и TCP, если он позволяет мне выбирать и порт? Конечно, если бы я хотел HTTP, я мог бы просто выбрать TCP и порт 80?

Почему только TCP и HTTP? Кажется, подразумевается, что HTTP не TCP. Почему бы не иметь TCP, HTTP, SNMP, FTP и т. Д., И т. Д. И т. Д.

Почему только HTTP и TCP? Зачем использовать любой из этих вариантов, если HTTP является TCP? Это очень сбивает с толку, и очень сложно найти какую-либо информацию о службах балансировки нагрузки, отличных от http (s).

marflar
источник

Ответы:

28

Используя метод HTTP в конфигурации HAProxy, вы получаете доступ к нескольким специфичным для HTTP опциям. Например, вы можете выбрать разные бэкэнды на основе URL в HTTP-запросе. При указании режима TCP HAProxy не оценивает заголовки HTTP в пакете.

Таким образом, вы определенно можете использовать TCP для HTTP-трафика, но у вас не будет дополнительных опций HTTP. В качестве примечания: если вы не используете функции SSL, вам придется использовать TCP для HTTPS-трафика, поскольку пакеты зашифрованы и HAProxy не может просматривать заголовки HTTP.

Пол Крон
источник
Благодарю. Это действительно помогло понять все это для меня. Приветствия.
Marflar
6

Кто-то написал сообщение в блоге об этом: http://www.linickx.com/645/load-balance-anything-with-haproxy

Во всяком случае, я не знаю, почему люди, которые поддерживают haproxy, используют выбранный ими синтаксис, мне это не очень нравится, потому что я нахожу его вводящим в заблуждение (говоря что-то может быть HTTP или TCP винтами с моим мозгом), но оказывается, вы можно балансировать что угодно с HAProxy, и если это не HTTP (s), тогда просто идите с TCP и правильным номером порта.

marflar
источник
HTTP - это TCP на транспортном уровне, поэтому все приложение - это просто TCP с некоторой специализацией для HTTP. Хорошая ссылка, кстати.
Signus