There are different options to distribute network traffic using Microsoft Azure. These options work differently from each other, have different feature sets, and support different scenarios. They can each be used in isolation or in combination.
Azure Load Balancer
Works at transport layer (level 4 of OSI network stack)
Provides network-level distribution of traffic across instances of the application running in the same Azure datacenter
Use Load Balancer to:
Balance incoming traffic to VMs from the Internet (Internet-facing load balancing)
Balance traffic between VMs in the VNets or cloud services (Internal Load Balancer)
Balance traffic between on-premises servers and VMs (Internal Load Balancer)
Forward traffic to specific VM
Configure Load Balancer Requirement
Distribution mode for Azure load balancer
Hash-based distribution mode
Source IP affinity mode / session affinity
Configure Load Balancer:
Service Monitoring to probe the health of the various server instances (see LoadBalancerProbe Schema)
Deploy Network Load Balancer: Azure Classic vs Azure Resource Manager
The most important point to understand is that Traffic Manager works at the DNS level.
Uses DNS responses to direct end-user traffic to globally distributed endpoints running in different datacenters around the world.
Clients connect directly to endpoints
Azure-managed HTTP load-balancing solution based on layer-7 load balancing.
Works as a reverse-proxy service
Client connections are terminated at gateway and then forwarded to application
Application Gateway supports layer-7 application delivery for the following:
HTTP load balancing
Cookie-based session affinity
Secure Sockets Layer (SSL) offload
URL-based content routing
Application Gateway HTTP layer 7 load balancing is useful for:
Applications that require requests from the same user/client session to reach the same back-end virtual machine.
Applications that want to free web server farms from SSL termination overhead.
Applications, such as a content delivery network, that requires multiple HTTP requests on the same long-running TCP connection to be routed or load balanced to different back-end servers.
Application Gateway Health Monitoring
Azure Application Gateway by default monitors the health of all resources in its back-end pool and automatically removes any resource considered unhealthy from the pool. Application Gateway continues to monitor the unhealthy instances and adds them back to the healthy back-end pool once they become available and respond to health probes.