none
Limits on the numbers of input and internal endpoints

Answers

  • rombooth -

    UPDATE: Steve Marx writes, in a final comment on the thread, that Frank Siegemund is correct in the following.

    The following is the entirety of a Ryan Dunn post in the thread you linked to:

    -- You are limited to 5 endpoints per role.  Additionally, you can have up to 5 input endpoints (external facing ones).  So that means you have have 25 total endpoints, but only 5 of which can be input endpoints and the rest internal.

    Given Ryan's role in the Azure team I would view this as definitive. However, Frank Siegemund, also of the Azure team, appears to correct Ryan in writing in the same thread:

    -- You can have a maximum of 5 incoming endpoints per role (input or internal, doesn't matter). You can have a maximum of 5 roles. 5 * 5 = 25.

    The difference being that Ryan states an Azure service can have a maximum of 5 input endpoints per service while Frank allows more than 5. This is easily testable - just create an Azure service with two worker roles and modify the number of input endpoints from 5 to 6.

    As Rajesh points out the MSDN documentation differs - and is wrong.

    It would probably be helpful if someone from the Azure team provided a definitive statement on the rules for the allowed numbers of endpoints per role and per service.

    Monday, September 6, 2010 4:46 PM
    Answerer

All replies

  • Marc,

    Here is MSDN documentation with relevant information about end points,

    http://msdn.microsoft.com/en-us/library/ee758711.aspx#InternalEndpoint

    Web role: 1 HTTP input endpoint , 1 HTTPS input endpoint and 1 HTTP Internal end point

    Worker role : Any number of HTTP/HTTPS/TCP input end points & any number of HTTP/TCP internal end points

    HTH,


    Please mark it as answer by clicking on "Propose As Answer", if it helps
    • Marked as answer by Marc Loeb Monday, September 6, 2010 4:36 PM
    • Unmarked as answer by Marc Loeb Monday, September 6, 2010 5:25 PM
    Monday, September 6, 2010 4:26 PM
  • rombooth -

    UPDATE: Steve Marx writes, in a final comment on the thread, that Frank Siegemund is correct in the following.

    The following is the entirety of a Ryan Dunn post in the thread you linked to:

    -- You are limited to 5 endpoints per role.  Additionally, you can have up to 5 input endpoints (external facing ones).  So that means you have have 25 total endpoints, but only 5 of which can be input endpoints and the rest internal.

    Given Ryan's role in the Azure team I would view this as definitive. However, Frank Siegemund, also of the Azure team, appears to correct Ryan in writing in the same thread:

    -- You can have a maximum of 5 incoming endpoints per role (input or internal, doesn't matter). You can have a maximum of 5 roles. 5 * 5 = 25.

    The difference being that Ryan states an Azure service can have a maximum of 5 input endpoints per service while Frank allows more than 5. This is easily testable - just create an Azure service with two worker roles and modify the number of input endpoints from 5 to 6.

    As Rajesh points out the MSDN documentation differs - and is wrong.

    It would probably be helpful if someone from the Azure team provided a definitive statement on the rules for the allowed numbers of endpoints per role and per service.

    Monday, September 6, 2010 4:46 PM
    Answerer
  • I did verify by adding input and internal end points manually in both definition file and wizard. There was no restriction as we have with web role end points. Looks like, error could occur during deployment time as reported in the thread.

    However, I expect MSDN documentation to be latest and greatest at least by now as endpoints feature has been there almost since initial version Azure release. I am going to add a comment on the documentation page.


    Please mark it as answer by clicking on "Propose As Answer", if it helps
    Monday, September 6, 2010 6:03 PM
  • Thanks Neil and Rajesh

    I did a test myself as well (see Service definiton below). it seems that msdn documentation is wrong - unfortunately. I was able to add the endpoints and I was able to run it in development fabric but when I published to Azure it failed with this message:

     HTTP Status Code: 400/nError Message: A parameter was incorrect. Details: Invalid number of endpoints for role AzureTalk.Service; maximum number permitted is 5.

    The answer is I guess 5 endpoints in a worker role is the max.

    Thanks for commenting MSDN docs, Rajesh.

    Cheers,

    Marc

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceDefinition name="AzureTalk" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
     <WorkerRole name="AzureTalk.Service" enableNativeCodeExecution="true">
      <ConfigurationSettings>
       <Setting name="DiagnosticsConnectionString" />
      </ConfigurationSettings>
      <Endpoints>
       <InputEndpoint name="ChatService" port="3030" protocol="tcp" />
       <InternalEndpoint name="NotificationService" protocol="tcp" />
       <InputEndpoint name="Input2" port="81" protocol="tcp" />
       <InternalEndpoint name="Internal1" protocol="tcp" />
       <InternalEndpoint name="Internal2" protocol="tcp" />
       <InternalEndpoint name="Internal3" protocol="tcp" />
       <InternalEndpoint name="Internal4" protocol="tcp" />
       <InternalEndpoint name="Internal5" protocol="tcp" />
       <InternalEndpoint name="Internal6" protocol="tcp" />
      </Endpoints>
     </WorkerRole>
    </ServiceDefinition>
    Monday, September 6, 2010 6:09 PM
  • I know this thread is a bit old, but just to make sure people who come across this see the definitive answer: Frank's answer on the linked thread is correct:

    "You can have a maximum of 5 incoming endpoints per role (input or internal, doesn't matter). You can have a maximum of 5 roles. 5 * 5 = 25."

    Wednesday, January 5, 2011 1:26 AM
  • Are you publishing the exact same package, or are you sharing code with your partner who is then rebuilding? (I'm wondering if there's a different SDK version involved, but frankly, I don't see why that would cause this either.)

    You might have to contact support on this: http://windowsazure.com/support.

    Wednesday, August 3, 2011 7:11 PM
  • Oh, it was pointed out that I misunderstood... both of you should be getting an error, because the limit on internal endpoints is five per role. (The limit for input endpoints is now 25 spread across everything.)

    So the mystery is why your subscription is allowing this. Is it possible your subscription is special in some way? Drop me an email at Steve.Marx@microsoft.com if you want, or support should be able to check your subscription to see if there's something odd about it.

    Wednesday, August 3, 2011 7:33 PM
  • We got this sorted out offline... please ignore.
    Wednesday, August 3, 2011 9:29 PM
  • Personally, I thing these limits should be reversed.

    It would seem that it is far more likely for a service to require a greater number of internal endpoints per role than 5, however I can't see having a single service that requires more than 25 input endpoints.

    And, when you state "25 spread across everything" - does that mean:

    • one role instance with 25 input endpoints or
    • 5 role instances with 5 input endpoints defined for the role (thus 25 total)?
    • Or one role with 25 instances and 1 input endpoint (thus 25)?

    (and one less if I turn on RDP access).

     


    Brian Ehlert (hopefully you have found this useful) http://ITProctology.blogspot.com
    Thursday, August 4, 2011 8:35 PM
  • What I mean is that you can declare 25 input endpoints (ports that your app will listen on). You can allocate those across your roles however you want. E.g., You could have one role that has 25 endpoints, or you could have a web role with 2 endpoints (80 and 443?) and a worker role with 23 endpoints, etc.

    It has nothing to do with the number of instances of each role. If you have a worker role with 25 endpoints, you could run one instance of that or 1,000, and it would still be fine.

    Note that for internal endpoints, you can use port ranges. From http://msdn.microsoft.com/en-us/library/gg432980.aspx:

    <InternalEndpoint name="InternalPoint1" protocol="tcp">
      <FixedPortRange min="1000" max="2000" />
    </InternalEndpoint>
    

    That generally means that five internal endpoints is sufficient. (You can just open up broad ranges if you need to.)

    Yes, the RDP plugin uses one input endpoint for the app as well as one internal endpoint on each role.

    Thursday, August 4, 2011 9:13 PM