We are having an application that heavily relies on websockets. As our Application is software-as-a-service, our clients can use their own domains (and forward them via CNAME to our servers). At the moment, we use a reverse proxy to balance the incoming traffice between multiple fixed-ip backend servers.
We now want to migrate our architecture to docker, supporting dynamic up- and downscaling, so our current reverse proxy isn't vaiable anymore ad it cannot automatically find the backend services in our AWS ECS Docker Cluster.
The Intended Infrastructure Looks something like:
+-> Docker Container 1
Clients --> Load Balancer --+-> ...
+-> Docker Container n
However, we have multiple restraints:
- We need to support the ACME Protocol for getting Let's Encrypt or AWS ACM SSL Certificates
- We need to have sticky connections for the websockets (until one node goes down)
- The Connection between the Load Balancer and the Backend Servers needs to be encrypted
- each of our customers is having an own domain, so we need to support incoming HTTPS-Connections for several hundred different domains.
- multiple different domains may not share one ssl-certificate to prevent lookups of our customer base
- the load balancer needs to find new containers from the same service
any suggestions what Load Balancer is viable for us?
Edit: The Application Load Balancer is not Vaiable for our use as they have a limit of 25 Certificates at the moment