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

Масштабирование удаленных рабочих столов RemoteApps с помощью HAProxy

В настоящее время я использую RDS RemoteApps и хотел бы добавить масштабирование и избыточность, в настоящее время работаю над ролями веб-доступа и шлюза. Я пробую это с HAProxy (я бы хотел избежать Windows NLB). У кого-нибудь это работает?

Текущая производственная установка:

rds01.domain.com - Web Access and Gateway roles
rds02.domain.com - Connection Broker
rds(03-10).domain.com - Session Hosts
Only port 443 open on external firewall to rds01.domain.com

Я хотел бы добавить второй сервер, который дублирует rds01, имеющий роли веб-доступа и шлюза, а затем сбалансировать их нагрузку. Моя текущая конфигурационная нагрузка нормально балансирует веб-доступ, но я никогда не могу запустить RemoteApp, я получаю следующую ошибку:

Remote Desktop can't connect to the remote computer for one of these reasons:
1)Remote access to the server is not enabled
2)The remote computer is turned off
3)The remote computer is not available on the network

Схема тестирования:

newrds01.domain.com (192.168.1.201) - Web Access & Gateway
newrds02.domain.com (192.168.1.202) - Web Access & Gateway
newrds.domain.com (192.168.1.207) - Internal & external FQDN and IP of HAProxy server
newrds03.domain.com - Connection Broker
newrds04.domain.com - Session Host

Deployment RD Gateway settings использует имя сервера: newrds.domain.com

DefaultTSGateway и на newrds01, и на newrds02 установлено значение newrds.domain.com (Я пробовал установить для них собственные имена серверов)

Конфигурация HAProxy:

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    maxconn 200000
    nbproc "2"
    cpu-map 1 0
    cpu-map 2 1
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private
    ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS:!3DES
    ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
    tune.ssl.default-dh-param 2048

defaults
    option log-health-checks
    mode    http
    option  dontlognull
    timeout connect 8000
    timeout client  60000s
    timeout server  60000s
    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

listen stats
    bind *:8282
    mode http
    stats enable
    stats uri /
    stats realm Haproxy\ Statistics
    stats show-desc "HAProxy WebStatistics"
    stats show-node
    stats show-legends
    stats auth admin:admin
    stats admin if TRUE

frontend fe_rds
  bind 192.168.1.207:80
  redirect scheme https if !{ ssl_fc }
  bind 192.168.1.207:443 name rds_web ssl crt newrds.domain.com.pem
  capture request header Host len 32
  log global
  option httplog
  timeout client 300s
  maxconn 1000
  acl path_rdweb path_beg -i /RDWeb/
  http-request redirect location /RDWeb/ if { path -i / /RDWeb }
  acl RDGW_PATH_0 path_beg -i /remoteDesktopGateway/
  http-request deny if RDGW_PATH_0
  default_backend be_rds


backend be_rds
  balance leastconn
  log global
  option httplog
  timeout connect 4s
  timeout server 300s
  option httpchk GET /RDWeb
  cookie RDPWEB insert nocache
  default-server inter 3s rise 2 fall 3
  server newrds01 192.168.1.201:443 maxconn 1000 weight 10 ssl check cookie newrds01 ca-file ca-certificates.crt
  server newrds02 192.168.1.202:443 maxconn 1000 weight 10 ssl check cookie newrds02 ca-file ca-certificates.crt

Мне что-то не хватает в моей конфигурации HAProxy? (Я пробовал другие настройки с отдельными серверами веб-доступа и шлюза, но тоже безуспешно)