Mastering High Availability: My Azure Load Balancer Implementation Journey

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MyrinNew
    Senior Member
    • Feb 2024
    • 5175

    #1

    Mastering High Availability: My Azure Load Balancer Implementation Journey

    The Challenge: Ensuring Application Reliability


    In today's digital landscape, application downtime is not an option. Whether you're running an e-commerce platform, internal business applications, or customer-facing services, a single server failure can mean lost revenue, decreased productivity, and damaged reputation.


    This was the challenge I set out to solve by implementing Azure's Internal Load Balancer - a solution that ensures applications remain available even when individual servers fail.


    Understanding Load Balancing

    At its core, load balancing is about distributing network traffic across multiple servers. Think of it like a traffic controller at a busy intersection:


    Without load balancer: One server handles all traffic (single point of failure)


    With load balancer: Traffic automatically routes to available servers (high availability)


    My Implementation Approach


    Building the Foundation: Virtual Network

    I started by creating a secure network environment:








    Virtual Network: IntLB-VNet with IP range 10.1.0.0/16








    Segmented Subnets:


    Backend subnet (10.1.0.0/24) for web servers


    Frontend subnet (10.1.2.0/24) for load balancer


    Bastion subnet for secure management











    This segmentation follows security best practices, separating different components into their own network spaces.


    Creating the Backend Servers


    Instead of using automated templates, I manually created three virtual machines to better understand the process:


    web1, web2, web3 - Identical Windows Server configurations


    Availability Set: Ensures VMs are distributed across multiple physical servers


    No Public IPs: Enhanced security through internal-only access














    The manual creation process, while more time-consuming, provided valuable insights into Azure VM configuration and networking.


    Installing Web Servers


    Each VM required individual configuration:


    Secure Connection: Using Azure Bastion for browser-based remote access


    IIS Installation: PowerShell commands to install web server functionality


    Custom Test Pages:


    web1: "Hello from Web Server 1"


    web2: "Hello from Web Server 2"


    web3: "Hello from Web Server 3"











    This hands-on approach revealed how enterprise applications are typically deployed across multiple servers.


    The Load Balancer Configuration


    Key Components Created:


    Backend Pool: Group containing all three web servers


























    Health Probe: Regular checks to ensure servers are responsive








    Load Balancing Rule: Distributes HTTP traffic on port 80








    Frontend IP: Internal IP address (10.1.0.7) for accessing the service


    Why Internal Load Balancer?

    I chose an internal load balancer because:


    The application doesn't need direct internet access


    Enhanced security through network isolation


    Perfect for internal business applications


    Cost-effective compared to public load balancers


    Testing and Validation


    The most exciting part was testing the solution:


    Connected to a test VM within the same network














    Accessed the load balancer IP (10.1.0.7)

















    Observed traffic distribution across all three servers








    The magic happened when refreshing the browser - each request was served by a different backend VM, demonstrating perfect load distribution.




    More...
Working...