Forum Discussion

pjcampbell_7243's avatar
May 13, 2010

Send a request to all pool members?

Our developers have some sort of thing that updates something or other on each web server via an http request.

 

 

Is it possible to make an iRule that would send the request to all servers? Let's just assume we don't care about the response or are assuming it's going to work properly?

 

 

The other way I would think of doing it would be to have the original request hit a PHP script that takes the request and then calls each server and logs the response.

 

5 Replies

  • Hi,

     

     

    There isn't a simple way with LTM to broadcast TCP traffic to all pool members. People have tried serially retrying a request but I don't think it's feasible to do with production traffic.

     

     

    Aaron
  • In few cases, using the "log" command with external IP of SYSLOG servers is a way (even if it is not very "standard") to do this kind of job. Perhaps we can imagine something like that (should work between 2 boxes, not sure if this can work on the same box). On your standard VS, send the request to "broadcast" to all the nodes of a pool, using the "log" command and targetting another VS in charge of reverting the syslog message to an HTTP REQUEST (my example take care only of the HTTP request, not the headers, cookies and so on): like: when HTTP_REQUEST { if { [HTTP::uri] ends_with "/broadcast"}{ log 2.2.2.2 local0.info "NODE-IP:1.2.3.4 - URI:[HTTP::uri]" local0.info "NODE-IP:1.2.3.5 - URI:[HTTP::uri]" local0.info "NODE-IP:1.2.3.6 - URI:[HTTP::uri]" } } On the VS 2.2.2.2, port 514 UDP, create another iRule, in charge of catching the trafic, converting it to the original URI, and sending it using the pool member ... command, to the node extracted from the log. It is not a very beautiful way to do the job, but it is an idea ;-)
  • Hi, I tried looking up in the wiki, and the commands make me wonder if i could do something like

    set poolName [LB::server pool]
    pool $poolName member 192.168.10.100 80
    clone pool $poolName member 192.168.10.101 80
    

    But I have to specify all the members in the pool, and if it changes I have to modify the rule too.

    Given that the command [active_nodes -list [LB::server pool]] returns the list of the active members' IP, is there a way to cycle the clone?

    Something like this could help?

    • Michele_Cereda_'s avatar
      Michele_Cereda_
      Icon for Nimbostratus rankNimbostratus
      I found out that, I quote: "Any responses to cloned traffic from pool members will be ignored", while I need the response to be considered and forwarded. Do multiple host commands forward the request to all the destinations? Is there any way to do this?
    • Michele_Cereda_'s avatar
      Michele_Cereda_
      Icon for Nimbostratus rankNimbostratus
      I also found out that the "clone" command works only with the parameters "pool" and "$poolname" (no "member", the balancer says the command has too many arguments)