AWS Certified Solutions Architect – Professional — Question 460
You are migrating a legacy client-server application to AWS. The application responds to a specific DNS domain (e.g. www.example.com) and has a 2-tier architecture, with multiple application servers and a database server. Remote clients use TCP to connect to the application servers. The application servers need to know the IP address of the clients in order to function properly and are currently taking that information from the TCP socket. A Multi-AZ RDS MySQL instance will be used for the database.
During the migration you can change the application code, but you have to file a change request.
How would you implement the architecture on AWS in order to maximize scalability and high availability?
Answer options
- A. File a change request to implement Alias Resource support in the application. Use Route 53 Alias Resource Record to distribute load on two application servers in different Azs.
- B. File a change request to implement Latency Based Routing support in the application. Use Route 53 with Latency Based Routing enabled to distribute load on two application servers in different Azs.
- C. File a change request to implement Cross-Zone support in the application. Use an ELB with a TCP Listener and Cross-Zone Load Balancing enabled, two application servers in different AZs.
- D. File a change request to implement Proxy Protocol support in the application. Use an ELB with a TCP Listener and Proxy Protocol enabled to distribute load on two application servers in different Azs.
Correct answer: D
Explanation
To achieve high availability and scalability, an Elastic Load Balancer (ELB) is required to distribute incoming traffic across application servers in multiple Availability Zones. Because the application relies on TCP and needs the client's source IP address, which is normally lost at the transport layer during load balancing, Proxy Protocol must be enabled on the ELB. This requires a change request to update the application code to interpret the Proxy Protocol header containing the connection information.