Forum Discussion

Zhinjio_101470's avatar
Zhinjio_101470
Icon for Nimbostratus rankNimbostratus
Feb 15, 2012

Service Activation and Automation

So I've been trying to solve a problem. Here is the basic configuration...

 

 

For simplicity's sake in explaining this, I will explain this using Apache with vhosts configured. The actual products and services being used are being concealed to protect the innocent, or something...

 

 

Anyway, I will have a pool of servers, each configured identically with, let's say, 10 vhosts configured, each to its own port on the same VIP. Lets also assume that each port is actually a completely independent instance of apache, that can be started independently of one another.

 

 

On the F5, I will have separate VIPs configured (one per port).

 

 

The kicker is that of the pool of servers, I want to be able to arbitrarily add/remove nodes from the individual VIPs. Since every node can theoretically service ANY of the ports (by enabling/disabling the various instances of the web servers), I should be able to move these nodes between the various VIPs easily.

 

 

I know I can do this by hand... what I want to know is if there is any mechanism whereby adding a node to a VIP or pool can kick off the associated script on the node to enable the appropriate service. And likewise, removing a node would disable the service.

 

 

The goal is to make the pool of servers completely generic, be able to add/remove services from all nodes at the same time, and be able to have those nodes participate in the pools in a dynamic fashion. If I find that a certain service (port) is getting high load, I can enable the service on the node, add it into the pool, and leave it there until load subsides, and then drop it back down again after.

 

 

I also don't know if I'm explaining this well enough. Maybe a picture would be better. Anyway, feedback please... looking forward to reading your thoughts on the topic.

 

 

- ZJ

 

2 Replies

  • just curious if normal health monitor is usable although it is not the best solution. i mean creating health monitor with specific alias service port and assign it to pool member with any port. so, when you enable service port on node, pool member will be marked up by the monitor and start getting traffic.

     

     

    just my 2 cents.
  • Hmm, not sure if this is what you meant, but it sparked another thought. If only the services that are active will pass the health check, why not just have all nodes configured in each pool. Only the ones with the service active will actually pass the health check, and thus be sent traffic.

     

     

    Yes, ultimately, even a very basic HTML "GET" health check will validate the service on each port, so standard health checks (albeit on specific ports) will work. I still need to provide some automation, but I think the F5 side will essentially just automatically enable/disable the nodes based on which ones are passing/failing health checks.

     

     

    Not sure why this didn't occur to me, but thanks for the catalyst thought. Now I just need to find a way to provide automation around enabling/disabling services on the nodes, and upgrading/adding/removing services when new products/customers are configured and old ones removed. I think that is much easier if I don't approach it from the perspective of having the F5 itself provide the automation.

     

     

    - ZJ