Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We're implementing a pair of network load balancers for our externally and internally facing web servers. we do not plan to use session state services on either NLB, and accept that if a node goes down, the user will have to re-authenticate on the new server, and start a new session.

we have an ASP.Net4 application however which redirects to an external service (a payment processor) and then uses a statically configured link to return the user to our externally facing URL.

I have two questions:

  • When the user returns to the site after performing a payment, is there any way to make sure they connect to the server their session is currently on?

  • When a user on the Internally facing NLB completes a payment, the service will attempt to return them to the external NLB. is there a way to intercept and redirect them back to the internally facing cluster, and then the server upon which their active session resides?

share|improve this question

1 Answer 1

up vote 1 down vote accepted

For question #1 You can use NLBS affinity setting. See http://stackoverflow.com/questions/866108/how-to-keep-user-requests-on-the-same-server-when-using-iis-nlb

For question #2, there are a couple of options

  1. Use a split DNS setup. Basically you setup intneral DNS seperate from external DNS. Internal clients will use the intneral DNS and get pointed at the intneral NLBS IP and external clients will use the external DNS and get pointed at the external NLBS IP.
  2. Your payment processing vendor might support programatically changing the return URL. We use the PayPal Payflow Pro product. It allows us to programatically set the return URL. If your vendor supports this option then you can use ASP.NET to detect if the requester's address is internal and point them to the correct URL. You can use either of the properties below to get the requester's IP address

    HttpContext.Current.Request.UserHostAddress;
    or
    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
share|improve this answer
    
I think sticky-session/client-affinity will be useful, but I am still concerned that with a foreign referer following a crossdomain post to the payment providor will confuse the matter. I'm not entirely sure how #1 would help. we do have a separate internal dns, but since the callback from the payment providor is coming from outside our network, it would have to use the public DNS. as for evaluating the IP address, I may have to do just that. its lame, but I think I can pull it off. –  Frank Thomas Jul 9 '13 at 20:03
    
For split DNS, the "callback" is actually an HTTP redirect. The client being redirected handles the DNS lookup not the server. –  kheld Jul 29 '13 at 15:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.