Antes de tirar por desactivar HTTP/2 en el backend, mira los keepalive del transport. En Traefik 2.10 el default es maxIdleConnsPerHost=200 y idleConnTimeout=90s, pero si tu backend cierra conexiones antes (típico con keepalive_timeout de Nginx o Go en 60s) y Traefik intenta reutilizar una conexión ya cerrada, el stream HTTP/2 se queda colgado hasta el timeout del forwardingTimeouts.responseHeaderTimeout. Se manifiesta como http2: stream closed bajo carga, justo lo que describes.
Puedes forzar esto sin tocar el esquema del backend:
traefik.http.services.myservice.loadbalancer.serverstransport=keepalive@file
Y en el file provider defines un ServerTransport con idleConnTimeout alineado con el keepalive del backend, o directamente disableHTTP2=true solo en el transport interno si el backend no es gRPC. Eso es más quirúrgico que cambiar el scheme a http y te deja el HTTP/2 end-to-end cuando lo necesites.
Ojo también con GODEBUG=http2server=0 en el contenedor de Traefik: hay reportes en Swarm donde el offload de checksum con overlay network rompe la multiplexación. Si el tráfico va por ingress network, prueba a publicar el puerto con mode: host en lugar de ingress y compara.