Forum Discussion

Mayurtester's avatar
Mayurtester
Icon for Altostratus rankAltostratus
Jul 25, 2019

HTTP: retry technical questions

Hello,

I am reading the wiki article for HTTP: retry where I have few questions on "Re-sends a request to a server. Can be either the same or a different request, to the same or a different server."

  1. What does F5 do with server which sends the RESET/5XX error (after selecting different server from the pool)
  2. HAproxy does the HTTP retry for RoundRobin LB method, does F5 support other LB methods while selecting different server.
  3. is F5 doing HTTP retry for POST request where response from server is RESET
  4. How does F5 do TCP connection retry and is it for 1st connection packet?
  5. Correct me if I am wrong, HTTP : retry is for same server where response is 5xx and LB: reselect is for selecting next up server from the pool where response is 5XX?
  • Hi,

     

    I am not quite sure I get all your questions, but I'll give it a try. Do not hesitate to precise your request if not.

     

    1 - HTTP::retry is to be used in HTTP Response and Response_Data events only. Hence, it can process a 500 error received by the backend, but probably not a RESET (L4)

    2 - If you have LTM license, F5 supports many more LB Methods than Round Robin.

    3 - As mentionned, if the server response is reset, you will not trigger HTTP_RESPONSE events, hence, I don't think you can use the HTTP::retry command. It could be donewhen receiving specific HTTP Error status from the backend

    4 - This part is handled by TCP profiles (e.g. parameter Maximum Syn Retransmissions for SYN packet which is 3 by default, and maximum segment restransmission which is 8 by default)

    5 - HTTP Retry resubmits a request. As in the examples given in clouddocs, if you want to interfere with the pool member selection you will need to code it in the iRules.

     

    I hope this somehow helps you, otherwise, do not hesitate to complete, or detail precisely the problem you are trying to solve.

     

    Have a nice day.

     

    Yoann

    • Mayurtester's avatar
      Mayurtester
      Icon for Altostratus rankAltostratus

       

      Thank you for your reply and providing the insights. Please address my follow up question.

      • "if you want to interfere with the pool member selection you will need to code it in the iRules" So May I know if the service will be skipped (removed from the pool) if it is sending the 5xx error
      • I want to know what will happen to the service which has sent the 5xx error, will that remains in the server pool or will it be removed from the pool for some interval so that next request should not select this service. I am referring to LB:FAILED event (https://devcentral.f5.com/s/feed/0D51T00006i7ZpISAU)

       

      • Yoann_Le_Corvi1's avatar
        Yoann_Le_Corvi1
        Icon for Cumulonimbus rankCumulonimbus

        Hi

         

        That will depend of your monitor. If your monitor requires a 200 response status to be up, then the pool member sending a 500 should be marked down, and not be selected again in the load balancing decision.

         

        Sincerely