When I deployed CF in AWS, I put an ELB in front of my two Go Routers to balance the incoming traffic. After the CF deployment completes all the VMs are running. However, one of the Go Router is showed as out of service in the Instances tab in the ELB dashboard.

To debug this problem I looked in these three locations:
1) Check ELB itself
2) Check if the Go Router is working
3) Check networking between the Go Router and ELB

First I start by curling the ELB without problems and one of the Go Router instance is in service, so ELB itself should not be a problem.

Second, I then run bosh vms to verify the Go Router is running, ssh into the Go Router VM and run monit summary, all the processes are running.

Those quick checks lead me to look into the third possibility. I observed that the subnet which the "out of service" Go Router belongs to is not configured in the Availability Zones for the ELB. In order to make the ELB route traffic to an AZ we have to configure it in the Availability Zones.

The fix is pretty simple, go to AWS console, find Load Balancers in EC2 dashboard, select the ELB we are debugging and then click Instances Tab, click Edit Availability Zones, add the subnet which the "out of service" Go Router belongs to, click Save. Now I can see both of my Go routers are in Service in my ELB!

中文版请见: 处理 AWS ELB 中GoRouter实例失效(Out of Service).