📖 Scenario: You are setting up a simple Network Load Balancer (NLB) in AWS to distribute incoming TCP traffic to backend servers. This is a common task when you want to improve availability and scalability of your application.
🎯 Goal: Build an AWS CDK stack that creates a Network Load Balancer with one listener on port 80 and a target group with two IP targets.
📋 What You'll Learn
Create a Network Load Balancer named myNLB in the default VPC
Add a listener on port 80 for TCP protocol
Create a target group named myTargetGroup with TCP protocol on port 80
Add two IP targets with IP addresses 10.0.0.10 and 10.0.0.11 to the target group
💡 Why This Matters
🌍 Real World
Network Load Balancers are used to distribute TCP traffic efficiently to backend servers, improving availability and scalability of applications.
💼 Career
Understanding how to configure NLBs with AWS CDK is important for cloud engineers and developers managing scalable network architectures.
Progress0 / 4 steps
1
Create the Network Load Balancer
Create a Network Load Balancer called myNLB in the default VPC using AWS CDK. Use the NetworkLoadBalancer construct from @aws-cdk/aws-elasticloadbalancingv2 and set internetFacing to true.
AWS
Hint
Use new elbv2.NetworkLoadBalancer(this, 'myNLB', { vpc, internetFacing: true }) to create the NLB.
2
Add a listener on port 80
Add a listener to the Network Load Balancer myNLB on port 80 using TCP protocol. Use the addListener method with port: 80 and protocol: elbv2.Protocol.TCP.
AWS
Hint
Use myNLB.addListener('Listener', { port: 80, protocol: elbv2.Protocol.TCP }) to add the listener.
3
Create a target group with TCP protocol
Create a target group called myTargetGroup with TCP protocol on port 80 in the default VPC. Use the NetworkTargetGroup construct from @aws-cdk/aws-elasticloadbalancingv2.
AWS
Hint
Use new elbv2.NetworkTargetGroup(this, 'myTargetGroup', { vpc, port: 80, protocol: elbv2.Protocol.TCP }) to create the target group.
4
Add IP targets to the target group and attach to listener
Add two IP targets with IP addresses 10.0.0.10 and 10.0.0.11 to the target group myTargetGroup. Then attach myTargetGroup to the listener listener using the addTargetGroups method.
AWS
Hint
Use myTargetGroup.addTarget(new elbv2.IpTarget('10.0.0.10', 80)) and similarly for the second IP. Then attach with listener.addTargetGroups('TargetGroupAttachment', { targetGroups: [myTargetGroup] }).
Practice
(1/5)
1. What is the primary purpose of an AWS Network Load Balancer (NLB)?
easy
A. To efficiently distribute TCP/UDP traffic at the connection level
B. To manage HTTP requests with advanced routing rules
C. To store and retrieve data in a scalable way
D. To provide a user interface for managing AWS resources
Solution
Step 1: Understand NLB's traffic handling
NLB works at the connection level and handles TCP/UDP traffic efficiently.
Step 2: Compare with other AWS services
Unlike Application Load Balancer, NLB does not manage HTTP features but focuses on low latency and high throughput for TCP/UDP.
Final Answer:
To efficiently distribute TCP/UDP traffic at the connection level -> Option A
Quick Check:
NLB purpose = TCP/UDP load balancing [OK]
Hint: NLB handles TCP/UDP, not HTTP features [OK]
Common Mistakes:
Confusing NLB with Application Load Balancer
Thinking NLB manages HTTP routing
Assuming NLB stores data
2. Which of the following is a valid characteristic of an AWS Network Load Balancer (NLB)?
easy
A. Only supports HTTP and HTTPS protocols
B. Requires manual scaling for high traffic
C. Automatically modifies HTTP headers
D. Supports static IP addresses for the load balancer
Solution
Step 1: Identify NLB features
NLB supports static IP addresses, which is useful for fixed IP requirements.
Step 2: Eliminate incorrect options
NLB does not only support HTTP/HTTPS (it supports TCP/UDP), does not modify HTTP headers, and scales automatically.
Final Answer:
Supports static IP addresses for the load balancer -> Option D
Quick Check:
Static IP support = true for NLB [OK]
Hint: NLB supports static IPs, unlike ALB [OK]
Common Mistakes:
Thinking NLB only supports HTTP/HTTPS
Assuming NLB modifies HTTP headers
Believing NLB requires manual scaling
3. Given an NLB configured to balance TCP traffic across three targets, what happens if one target becomes unhealthy?
medium
A. NLB stops sending traffic to the unhealthy target and continues with healthy ones
B. NLB sends traffic evenly to all targets regardless of health
C. NLB shuts down until the unhealthy target recovers
D. NLB redirects traffic to a backup Application Load Balancer
Solution
Step 1: Understand NLB health checks
NLB performs health checks and routes traffic only to healthy targets.
Step 2: Analyze behavior on unhealthy target
If a target is unhealthy, NLB excludes it from routing until it recovers.
Final Answer:
NLB stops sending traffic to the unhealthy target and continues with healthy ones -> Option A
Quick Check:
Health checks exclude unhealthy targets [OK]
Hint: NLB routes only to healthy targets [OK]
Common Mistakes:
Assuming NLB sends traffic to unhealthy targets
Thinking NLB stops completely on failure
Believing NLB redirects to ALB automatically
4. You configured an NLB but notice it is not distributing UDP traffic as expected. What is the most likely cause?
medium
A. Health checks are disabled for the target group
B. The target group is configured for TCP instead of UDP
C. NLB does not support UDP traffic
D. NLB requires HTTP listeners for UDP traffic
Solution
Step 1: Check protocol configuration
NLB supports UDP, but the target group must be set to UDP to handle UDP traffic.
Step 2: Identify misconfiguration
If the target group is set to TCP, UDP traffic won't be routed correctly.
Final Answer:
The target group is configured for TCP instead of UDP -> Option B
Quick Check:
Target group protocol must match traffic [OK]
Hint: Match target group protocol to traffic type [OK]
Common Mistakes:
Thinking NLB does not support UDP
Ignoring target group protocol settings
Assuming health checks cause traffic issues
5. You need to design a highly scalable system that requires static IP addresses and low latency for millions of TCP connections. Which AWS load balancer should you choose and why?
hard
A. Gateway Load Balancer, because it manages HTTP and TCP traffic with static IPs
B. Application Load Balancer, because it supports HTTP routing and static IPs
C. Network Load Balancer, because it supports static IPs and handles millions of TCP connections with low latency
D. Classic Load Balancer, because it is the newest and fastest option
Solution
Step 1: Identify requirements
The system needs static IPs, low latency, and support for millions of TCP connections.
Step 2: Match requirements to load balancer features
NLB supports static IPs, is designed for extreme scalability, and handles TCP traffic efficiently with low latency.
Step 3: Eliminate incorrect options
ALB focuses on HTTP, Classic LB is older and less scalable, Gateway LB is for network appliances, not general TCP load balancing.
Final Answer:
Network Load Balancer, because it supports static IPs and handles millions of TCP connections with low latency -> Option C
Quick Check:
Static IP + TCP + scalability = NLB [OK]
Hint: For static IP and TCP scale, choose NLB [OK]
Common Mistakes:
Choosing ALB for TCP static IP needs
Confusing Classic LB as newest
Assuming Gateway LB handles general TCP load balancing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.