Простая передача данных через HAProxy TCP приводит к очень низкой скорости передачи данных по сети

Простая передача данных через HAProxy TCP приводит к очень низкой скорости передачи данных по сети

Я настроил простой экземпляр haproxy на чистой установке Debian 10 Buster. Я добавил несколько простых необходимых настроек для включения сквозного доступа к рассматриваемому IP-адресу (который был отредактирован в приведенной ниже конфигурации).

Файл конфигурации:

global
    log /dev/log    local0
    log /dev/log    local1 notice

    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    # An alternative list with additional directives can be obtained from
    #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http


frontend myfrontend
  bind *:80
  mode tcp
  default_backend mybackendhttp

frontend myfrontendhttps
  bind *:443
  mode tcp
  use_backend mybackendhttps

backend mybackendhttp
  mode tcp
  option ssl-hello-chk
  server server1 ***********:80

backend mybackendhttps
  mode tcp
  option ssl-hello-chk
  server server1 ************:443

Изменения, которые я сделал (если сравнить с исходным файлом) (отредактированный IP):

+
+
+frontend myfrontend
+  bind *:80
+  mode tcp
+  default_backend mybackendhttp
+
+frontend myfrontendhttps
+  bind *:443
+  mode tcp
+  use_backend mybackendhttps
+
+backend mybackendhttp
+  mode tcp
+  option ssl-hello-chk
+  server server1 ***********:80
+
+backend mybackendhttps
+  mode tcp
+  option ssl-hello-chk
+  server server1 **********:443

Все работает правильно, но по какой-то причине производительность сети невероятно низкая при выполнении запроса браузера с моего ПК, запроса curl через командную строку или с мобильного устройства. Я получаю около 200-300 Кбит/с, хотя обычно я получаю примерно в 10 раз больше.

Если я попробую выполнить тот же запрос через curl на VPS, то получу гораздо более высокую скорость (5000 Кбит/с).

HAProxy работает на виртуальной машине вычислительного экземпляра GCP, поэтому я сомневаюсь, что это будет связано с пропускной способностью сети, но я могу попробовать настроить простую статическую службу http и посмотреть, как это сравнится.

В чем может быть причина проблемы? Как я могу это диагностировать? Даст ли включение журналов на haproxy лучшее понимание этой проблемы?

Я наткнулся на следующий вопрос, который, как мне кажется, также описывает похожее поведение:

Ответы HAProxy SSL очень медленные

Библиотеке OpenSSL необходимо правильно указать имя хоста в файле /etc/hosts

Однако мне не совсем ясно, что значит «правильно настроен».

решение1

Отвечаю, потому что у меня недостаточно репутации.

В /etc/hosts, вам нужно найти эту строку:

127.0.0.1 localhost

Замените localhostна ваше полное доменное имя, например haproxy.domain.com или как там его. Оно должно быть таким же, как имя хоста вашего сервера.

В Debian вы можете задать имя хоста с помощью этой команды:

hostname-ctl set-hostname haproxy.domain.com

Связанный контент