Forum Discussion

Ahmed_Saeed_329's avatar
Ahmed_Saeed_329
Icon for Nimbostratus rankNimbostratus
Dec 16, 2017

Inter-VIP communication

Hello,

 

Is there a way to redirect/communicate to another VIP. I have following scenario:

 

Step 1: Clients are hitting successfully VIP.37

 

Step 2: VIP.37 requires to communicate with VIP.38

 

Step 3: VIP.38 requires communication with VIP.36 to fetch some files.

 

Note: Individual VIPs are functioning without any issue. But inter VIP communication is not happening.

 

VIP.37 = 192.168.100.37

 

VIP.38 = 192.168.100.38

 

VIP.36 = 192.168.100.36

 

I think in my above query iRule will help but I don't know how to write an iRule , so it would be great if somebody helps me with complete script using my VIPs IPs.

 

Thanks in anticipation

 

8 Replies

  • Yes you can with an iRule, in the iRule you need to use the virtual Command however this has an issue. When you use virtual you can’t check the status of the virtual server you are forwarding to before so it is a blind forward unless you know and check the associated pools.

    when HTTP_REQUEST {
      if { [HTTP::uri] starts_with “/vs2”} {
       Send request to a new virtual server
        virtual vs2
      }
    }
    

    A better approach might be to forward to different pools instead of different virtual servers.

    The only two reasons I have used virtual is for Data Centre Affinity and automatically selecting virtual for different SSL profiles.

    when HTTP_REQUEST {
      if { [HTTP::uri] starts_with “/vs2”} {
       Send request to a new virtual server
        pool vs2_pool
      }
    }
    
  • The first iRule using virtual will do inter VIP communication for you, just edit to match your requirements and names.

     

  • I have applied following iRule on vs.37 to communicate with vs.38 when HTTP_REQUEST { if { [HTTP::uri] starts_with “/vs37”} { virtual vs.38 }

     

    }

    and applied following iRule on vs.38 to build communication b/w vs.38 and vs.36 when HTTP_REQUEST { if { [HTTP::uri] starts_with “/vs38”} { virtual vs.36 } } Kindly confirm the syntax and applied method please.

     

  • I have tested the above commands but it couldn't make inter-VIPs communication successfully.

     

  • could you explain this better?

    Step 1: Clients are hitting successfully VIP.37
    
    Step 2: VIP.37 requires to communicate with VIP.38
    
    Step 3: VIP.38 requires communication with VIP.36 to fetch some files.
    

    how is that communication exactly happening? or how do you believe it should be happening?

    is vip.37 going to a pool with nodes or ...? are there links on the website (is it a website? for vip.37 pointing to vip.38?

    in the general the idea with the virtual ... is how it works, but it must make sense as in general just a virtual server doesn't communicate with another one. a pool member might, or another irule might do it.

  • The iRules only forward if the URI starts with the specified, e.g. Request to /vs37/some/uri/path which hits Virtual Server vs37 will be forwarded to vs38.

     

    Let us know how you want to decide if traffic needs to be forwarded from my vs37 to vs38, part of the a HTTP Request or the client IP address etc?

     

    Same for forwarding between vs38 and vs36?