I am using Windows Network Load Balancing to keep my apps available even when one of the servers is down.
The problem is that it only detects when a whole machine is down. It happens sometimes that only one service is down, but its host is up, then the request are still sent to this endpoint but it doesn't answer.
Is there any solution that addresses this problem? There is any way to configure Windows NLB or a third party one to check the status of a specific port?
why not use failover clustering? NLB is just that NETWORK load balancing nothing about application level fault tolerance is implied at all.
What I use for this (and it certainly isn't windows specific) is a hardware load balancer to stand in front of the cluster.
I've got a pair of Kemps (http://www.kemptechnologies.com) in a cluster configuration, and the services are pointed at them. They relay the request from the source to one of the members of the pool of servers behind them. The order of servers queried can be decided one of several ways.
Kemp isn't the only provider that does this, and using this method. Most hardware-based load balancers will work the same way. It's the most reliable way to provide highly-available services, short of tens and hundreds of thousands of dollars in network infrastructure.