Http/2 Based Load Balancers With Backend And Frontend Support

2.1k Views Asked by At

We as an enterprise company want to migrate to http/2 . Following is our infrastructure .

infrastructure We currently use the AWS ALB as the load balancer backed by EC2 instances on which we run the Apache Web Server . The Apache Web Server is the http server which then is connected to the tomcat servlet container via the mod_jk connector . The webapp is there in the tomcat .

We have enabled http/2 on the apache web server but the problem is that AWS ALB talks http/2 only with the frontend and not with the backend . I have read solutions to overcome this problem by making the AWS ALB run as a layer 4 load balancer (TCP mode or TCP pass through mode ) , following is one such link that talks about it . There can be several issues with this , as the information which is passed in the http/2 format from the client will get lost when it is converted to TCP at the load balancer , like the x-forwarded-for header which identifies the client . Also, I guess (and as per some blogs) the session stickiness will also go for a toss as this is also one feature which is supported at layer 7 only .

The question is how to support http/2 in AWS ALB in frontend and backend both without compromising on features like session stickiness and client identification .If not AWS ALB are there other load balancers which support end to end http/2 .

Is it okay to have http/2 enabled only with frontend and have http/1.1 between the AWS ALB and the backend instance (Apache Web Server) . My take on this question is if we have http/2 enabled in frontend there would be multiplexing of requests over one TCP connection between the browser and the ALB , but there would be one TCP connection per request between the load balancer and the apache web server and thus won't truly be request multiplexing .Please correct me if my understanding is wrong here .

As present in the infrastructure diagram we also use AWS Cloudfront as the CDN . A similar problem exists with cloudfront as well . AWS cloudfront talks http/2 with the client but http/1.1 with backend (here backend refers to AWS ALB) . What is the status of server push on AWS cloudfront ? It is not categorically mentioned in their documentation . Server push would be one feature which we would like to exploit .

0

There are 0 best solutions below