Forum Discussion

Andy_60758's avatar
Andy_60758
Icon for Nimbostratus rankNimbostratus
May 12, 2011

Using F5 for high availability

Hi,

 

 

 

I am trying to put together a high level solution that uses f5 (ltm) in front of a pair of servers.

 

 

 

Machine A has 6 services/daemons running.

 

 

 

In the event of failure, the failed service is started on Machine B ( i have other software doing this failover).

 

 

 

What I am trying to work out, is how to make f5 route the traffic to a specific machine, depending on where that service is running.

 

 

 

Can f5 poll/heartbeat for tcp/ip traffic for a given port? so if Service A on Machine A users port 1.

 

 

 

This service fails, my software brings service A up on Machine B. Can F5 transparently route any requests to Machine A port 1 to MAchine B port 1??

 

 

Hopefully this terminology is correct - is this called a "service name"? so do I have six service names ? S1 to S6, and make all my software reference the service name instead of any machine or dns alias for the machine?

 

Apologies if this seems elementary.

 

 

 

Thanks.

 

 

 

Andy.

 

 

3 Replies

  • Hi Andy,

     

     

    By default, LTM monitors and load balanced based on the pool member IP:port. So if each service is running on a separate TCP port, you could just configure the IP:port combinations in a pool and use a monitor to check the service is answering before using the pool member. You can use the 'action on service down' property on the pool to specify what LTM should do for existing connections if a pool member is marked down.

     

     

    Which protocol(s)/applications is this for? If it's a generic TCP service, you could use a TCP monitor or a TCP half open monitor. If it's HTTP or HTTPS you could configure one of those monitors.

     

     

    Aaron
  • Hi Aaron,

     

     

    Thanks for the prompt response.

     

     

     

    Yes - each service will be running on a separate port, and just generic TCP, no http(s) on these boxes.

     

     

     

    The applications in question are SAS software and Platform Computing. Between the 2, i think I have a reasonable HA story, I just want to make sure I've got the right ends of the sticks!

     

     

    Based on your explanation above. Am I correct to say - I would have 1 pool that contains all 6 services. Using a monitor within f5, I can check whether the service being requested is available. Action on service down can be configured to direct this request to the second machine.

     

    Lastly, do I communicate with this pool? for example, If i want to call service A on Machine A, which based on the above is in Pool A. Can I call Pool A:port from my software instead of MachineA:port?

     

     

    Thanks again,

     

     

     

    Andy.

     

     

  • I'd group the IP:ports by application. So if each of the six ports on one server are running a different application, I'd create one pool per app. Then add all of the corresponding ports serving the same application on the second server to the same pools as the apps on the first server. In other words:

     

     

    server 1 (1.1.1.1)

     

    port 80(app1)

     

    port 81(app2)

     

    port 82(app3)

     

     

    server 1 (1.1.1.1)

     

    port 80(app3)

     

    port 81(app2)

     

    port 82(app1)

     

     

    app1_pool

     

    1.1.1.1:80

     

    1.1.1.2:82

     

     

    app2_pool

     

    1.1.1.1:81

     

    1.1.1.2:81

     

     

    app3_pool

     

    1.1.1.1:82

     

    1.1.1.2:80

     

     

    The default LTM behavior for load balancing between pool members is to select a different pool member if a new connection comes in and a previously used server is down. The 'action on service down' setting is only used for new connections. For a TCP application, it's generally best to set it to reject so the client immediately gets a TCP reset and knows to retry the connection.

     

     

    Aaron