Azure Traffic Manager shows endpoints degraded but they return 200

6k views Asked by At

Similar to this question, but I don't think it applies in my case.

I have two total endpoints that are both showing a status of "Degraded."

I read that this usually indicates that the monitor configuration is resulting in a response other than 200. However, testing with curl shows a 200 response for both endpoints. I initially had it set to probe the homepage (which also returned a 200), but added a dedicated 'probe' page just in case, which made no difference.

Here's my traffic manager configuration (classic portal, but that shouldn't matter):

enter image description here

Browser network inspector:

enter image description here

Here's my curl results:

enter image description here

Apparently if all endpoints are degraded, the traffic manager will still function, but I'm concerned that it may be affecting our geo-redundancy.

Thank you in advance for any help!

1

There are 1 answers

1
evilSnobu On BEST ANSWER

The -L in your curl invocation is for "follow redirects" which is throwing you off.

Traffic Manager won't follow HTTP redirects!

Because your endpoints now return a 301 Moved Permanently they are being rendered Degraded.

$ curl -Ii http://posguys-east.cloudapp.net/probe.html

HTTP/1.1 301 Moved Permanently
Content-Length: 147
Content-Type: text/html; charset=utf-8
Location: https://posguys.com/probe.html

This is most probably because you have a HTTP → HTTPS redirect configured in your web.config.

The solution is simple, remove and re-add endpoints with https:// instead.

LATER EDIT

It's not that simple, looks like your application is responding with a 301 redirect on https:// too.

$ curl -kIiL https://posguys-east.cloudapp.net/probe.html
HTTP/1.1 301 Moved Permanently
Content-Length: 147
Content-Type: text/html; charset=utf-8
Location: https://posguys.com/probe.html
Server: Microsoft-IIS/8.5

HTTP/1.1 200 OK
Cache-Control: max-age=5184000
Content-Length: 149
Content-Type: text/html

You'll need to address that part. Add an exception for /probe.html to whatever rewrite rule you're hitting there. Test with curl, but no -L this time.