As you probably know load balancers distribute traffic from Clients to the instances in your Availability Zones. Since clients communicate with load balancer via internet (public network) your load balancer must be in the public subnet of your VPC. And it must have targets instances to forward traffic to. Private addresses are for communication within the VPC and public subnets are used to communicate over the internet.
When you create a Network load balancer to be internet facing it will have a public IP and by default it will come with nodes (each node per AZ) depending on the number of AZs you have. The nodes will be the one having a private IP to communicate internally with instances.
Here is a link where you can read more about the Network Load Balancer: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html
Please feel free to give me back any feedback or if you would like more clarity on certain things.
Private Instance and Public ELB HTTPS Problem.
Why does ELB need one public IP address for each public subnet?asked 3 years ago
Updating the Elastic IP address of a Network Load Balancerasked 2 years ago
Do Elastic Beanstalk Web Server Environment Need A Public Elastic IPasked 5 months ago
max. number of IP free ip per subnet for multiple ALBAccepted Answerasked 4 years ago
Why it isn’t re-assigned a public IP address and public IP DNS for a Instance in a public subnet after stopped and started in case of attached 2 eni.Accepted Answerasked a month ago
Public ip address connectivity in AWSasked 8 months ago
Private IP requirements in VPC for Application Load BalancerAccepted Answerasked 2 years ago
Forwarding traffic from an AWS IP address to another IP addressasked 2 months ago
Is it possible Private EC2 Instance send outbound traffic to Public ELB?