I am trying to reach two private subnet EC2 instances from ELB in public subnet. But the instances are always showing as unhealthy. I tried lot of options but nothing worked.

Here is the configuration I tried:

1.Created VPC
DNS resolution: Enabled
DNS hostnames: Disabled

2. Created 2 Public subnets and 2 Private Subnets. The only difference between these two is the Route table.
Auto-assign public IPv4 address is set to "No" in Public Subnet

I have added Internet gateway as a route in Route table of public subnet.

Public subnet - Route Table
[![enter image description here](https://i.stack.imgur.com/yGy7e.png)](https://i.stack.imgur.com/yGy7e.png)

Private subnet - Route table
[![enter image description here](https://i.stack.imgur.com/3atBd.png)](https://i.stack.imgur.com/3atBd.png)

1. Created Two EC2 instances in Private subnet . Userdata set to apache webserver
2. The Security group of the instances
[![enter image description here](https://i.stack.imgur.com/aB1FC.png)](https://i.stack.imgur.com/aB1FC.png)
3. Created an ALB in Public subnet

ALB Security group config is :

[![enter image description here](https://i.stack.imgur.com/Qmx1j.png)](https://i.stack.imgur.com/Qmx1j.png)

Have also added default security group in ALB:
[![enter image description here](https://i.stack.imgur.com/WVJsv.png)](https://i.stack.imgur.com/WVJsv.png)

Target group is showing unhealthy for the private EC2 instances
[![enter image description here](https://i.stack.imgur.com/DpihD.png)](https://i.stack.imgur.com/DpihD.png)

Any help on pointing out why this fails?