cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

We are happy to announce the new Windchill Customization board! Learn more.

Configure F5 BIG IP for Windchill application cluster

gafoorgk
11-Garnet

Configure F5 BIG IP for Windchill application cluster

Hi,

 

I need help understanding how PTC HTTP Server responds to user requests on different scenario to configure my F5 BIG IP Load Balancer. I'll explain first what I have.

 

I created a lab with following configuration to test Windchill application clustering.

  1. WC11SRV01.lab.com - Database Server
  2. WC11SRV02.lab.com - Windchill Application Node 1 (SM, 2 MS, 1 BMS)
  3. WC11SRV03.lab.com - Indexing Search Server
  4. WC11SRV04.lab.com - Windchill Application Node 2 (SM, 2 MS, 1 BMS)
  5. BIGIP01.lab.com - F5 BIG IP LTM VE, which will work as load balancer
  6. W10CLIENT01.lab.com - A Windows 10 client

All installed, configured to accept connection on plm.lab.com, working OK as long as LB is load balancing between 2 Windchill application servers. But in a scenario, where Apache runs in one node and method servers stopped, LB still directs traffic on that node. This will return "service not running" exception to user.

 

My BIG IP virtual server members got a health monitor of type http, which sends following in every 30 seconds and response to that request decides whether member is online or not.

GET / HTTP/1.1\r\nHost: plm.lab.com\r\nConnection: Close\r\n\r\n

 

My intention is to configure my F5 device to load balance on only those nodes where at least one MethodServer + PTC HTTP Server are running. In any other conditions, the node should be marked as offline by BIG IP. This way I can avoid "no service running" message to user. Also, this will help user to continue with session even when the MS gets stopped on which the user started that session initially.

 

To configure BIG IP in above way, I need to know how PTC HTTP Server accepts request and responds back in case;

  1. When at least one method server is found working in the node
  2. When no method servers are working in the node.

I tried raising a support ticket, but it seems front line PTC TSEs are not good enough to answer that and immediate response I'm getting is "third party lbs are out of scope". It's getting difficult to convince them that help I need is on PTC HTTP Server about the way they work.

1 ACCEPTED SOLUTION

Accepted Solutions

Well, my request to PTC for help on understanding Apache response when no MS are running has been futile. Like most of the time, I spent lot of time with them without any result.

 

I was forced to do R&D here and finally got things working as required. Thought of sharing it here. Apache will return '503 - Service Unavailable' only when node health is checked with exact URL http://plm.lab.com/Windchill/servlet/WindchillGW. With this new knowledge on workings of Apache, F5 BIG IP is reconfigured.

 

So, health monitor Send String in F5 BIG IP box would be as following;

GET /Windchill/servlet/WindchillGW HTTP/1.1\r\nHost: plm.lab.com\r\nConnection: Close\r\n\r\n

Receive String regex need to configured with all good response codes as following;

HTTP/1\.[01] [23]0[0-6]

 

Now things are working as it is expected to.

View solution in original post

1 REPLY 1

Well, my request to PTC for help on understanding Apache response when no MS are running has been futile. Like most of the time, I spent lot of time with them without any result.

 

I was forced to do R&D here and finally got things working as required. Thought of sharing it here. Apache will return '503 - Service Unavailable' only when node health is checked with exact URL http://plm.lab.com/Windchill/servlet/WindchillGW. With this new knowledge on workings of Apache, F5 BIG IP is reconfigured.

 

So, health monitor Send String in F5 BIG IP box would be as following;

GET /Windchill/servlet/WindchillGW HTTP/1.1\r\nHost: plm.lab.com\r\nConnection: Close\r\n\r\n

Receive String regex need to configured with all good response codes as following;

HTTP/1\.[01] [23]0[0-6]

 

Now things are working as it is expected to.

Top Tags