{"id":1171,"date":"2012-08-28T09:39:27","date_gmt":"2012-08-28T01:39:27","guid":{"rendered":"http:\/\/rmohan.com\/?p=1171"},"modified":"2012-08-28T09:50:03","modified_gmt":"2012-08-28T01:50:03","slug":"http-load-balancing-using-application-request-routing-iis-7","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=1171","title":{"rendered":"HTTP Load Balancing using Application Request Routing &#8211; IIS 7"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>This topic leads the reader through the steps to configure Application Request Routing to load balance HTTP requests to achieve high availability and scalability.\u00a0 The walkthrough also highlights a couple of core features on how Application Request Routing monitors the health of the content servers and affinitizes requests from a client to a content server.<\/p>\n<h2><strong>Goal<\/strong><\/h2>\n<p>To load balance HTTP requests across several content servers using Application Request Routing, as shown below:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1194\" alt=\"\" border=\"0\" \/><\/p>\n<h2>Prerequisites<\/h2>\n<p>This walkthrough requires the following prerequisites:<\/p>\n<ul>\n<li>IIS 7.0 or above on Windows 2008 (any SKU) or newer.<\/li>\n<li>Microsoft Application Request Routing Version 1 and dependent modules.<\/li>\n<li>Minimum\u00a0of two\u00a0content servers with working sites and applications.<\/li>\n<\/ul>\n<p>If Application Request Routing\u00a0Version 1 has not been installed, it is available for download at:<\/p>\n<ul>\n<li>Microsoft Application Request Routing Version 1 for IIS 7 (x86)\u00a0<a href=\"http:\/\/iis.net\/downloads\/default.aspx?tabid=34&amp;g=6&amp;i=1709\">here<\/a>.<\/li>\n<li>Microsoft Application Request Routing Version 1 for IIS 7 (x64)\u00a0<a href=\"http:\/\/iis.net\/downloads\/default.aspx?tabid=34&amp;g=6&amp;i=1712\">here<\/a>.<\/li>\n<\/ul>\n<p>Follow the steps outlined in <a href=\"http:\/\/learn.iis.net\/page.aspx\/482\/install-application-request-routing\/\">this<\/a> document to install Application Request Routing.\u00a0<\/p>\n<p>Another prerequisite is that the reader has defined and configured a server farm using the steps outlined in <strong><a href=\"http:\/\/learn.iis.net\/page.aspx\/485\/define-and-configure-an-application-request-routing-server-group\/\">Define and Configure an Application Request Routing (ARR) Server Group<\/a><\/strong>.<\/p>\n<h2>Step 1 \u2013 Verify URL rewrite rules<\/h2>\n<p>Provided that the server farm has been created using the steps outlined in <strong><a href=\"http:\/\/learn.iis.net\/page.aspx\/485\/define-and-configure-an-application-request-routing-server-group\/\">Define and Configure an Application Request Routing (ARR) Server Group<\/a><\/strong>, the URL rewrite rules have already been created for a simple load balancing scenario.<\/p>\n<p><strong>To\u00a0verify URL rewrite rules\u00a0using the UI:<\/strong><\/p>\n<p>1.\u00a0\u00a0Launch IIS Manager.<\/p>\n<p>2.\u00a0\u00a0Select the server farm, <strong>myServerFarm<\/strong>, which was created in <a href=\"http:\/\/learn.iis.net\/page.aspx\/485\/define-and-configure-an-application-request-routing-server-group\/\"><strong>Define and Configure an Application Request Routing (ARR) Server Group<\/strong><\/a>.<\/p>\n<p>3.\u00a0 The following icons are shown:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1199\" alt=\"\" border=\"0\" \/><\/p>\n<p>4.\u00a0 Double-click <strong>Routing Rules<\/strong>.<\/p>\n<p>5.\u00a0 Verify that the\u00a0<strong>Use URL Rewrite to inspect incoming requests<\/strong> checkbox is checked.<\/p>\n<p><a href=\"http:\/\/learn.iis.net\/file.axd?i=1202\"><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1202\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>6.\u00a0 SSL offloading is enabled by default.\u00a0 When this feature is enabled, all communication between the ARR server and the application servers are done in clear text, even for HTTPS requests from clients to the ARR server.\u00a0 When both the ARR server and the application servers are deployed within a trusted network, such as within the same datacenter, enabling SSL offloading does not sacrifice security.\u00a0 Also, enabling this feature can further help to\u00a0maximize the server resources on the application servers, since they do not have to spend cycles in encrypting and decrypting requests and responses.<\/p>\n<p>To disable SSL offloading, uncheck the\u00a0<strong>Enable SSL offloading<\/strong> checkbox, and then click <strong>Apply<\/strong>.<\/p>\n<p>7.\u00a0 Open a browser and send several requests to the ARR server.<\/p>\n<p>8.\u00a0 To verify that the requests are being load balanced equally between the application servers, select <strong>myServerFarm<\/strong>.\u00a0 Double-click <strong>Monitoring and Management<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1199\" alt=\"\" border=\"0\" \/><\/p>\n<p>9.\u00a0 In the dashboard view, verify that the requests are being evenly distributed.<\/p>\n<p><a href=\"http:\/\/learn.iis.net\/file.axd?i=1203\"><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1203\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>To\u00a0verify URL rewrite rules\u00a0using the command-line:<\/strong><\/p>\n<p>1.\u00a0 Open a command prompt with <strong>administrator<\/strong> privileges.<\/p>\n<p>2.\u00a0 Navigate to <strong>%windir%\\system32\\inetsrv<\/strong>.<\/p>\n<p>3.\u00a0 To verify that the URL rewrite rules have been created correctly, enter <strong>appcmd.exe list config -section:system.webServer\/rewrite\/globalRules<\/strong>.\u00a0 It returns the globalRules that looks like the following:<\/p>\n<p><samp>&lt;system.webServer&gt;<br \/>\u00a0 &lt;rewrite&gt;<br \/>\u00a0\u00a0\u00a0 &lt;globalRules&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;rule name=&#8221;ARR_myServerFarm_loadbalance&#8221; patternSyntax=&#8221;Wildcard&#8221; stopProcessing=&#8221;true&#8221;&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&#8221;*&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&#8221;Rewrite&#8221; url=&#8221;http:\/\/myServerFarm\/{R:0}&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/rule&gt;<br \/>\u00a0\u00a0\u00a0 &lt;\/globalRules&gt;<br \/>\u00a0 &lt;\/rewrite&gt;<br \/>&lt;\/system.webServer&gt;<\/samp><\/p>\n<p>4.\u00a0 To disable SSL offloading, first remove all URL rewrite rules:<\/p>\n<ul>\n<li>\n<div><strong>appcmd.exe clear config -section:system.webServer\/rewrite\/globalRules<\/strong><\/div>\n<\/li>\n<\/ul>\n<p>\u00a0\u00a0\u00a0\u00a0 Then, create the URL rewrite rules to forward HTTPS traffic.\u00a0 More specifically, with this rule, ARR forwards requests using SSL if the incoming requests are HTTPS:<\/p>\n<ul>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/+&#8221;[name=&#8217;ARR_myServerFarm_loadbalance_SSL&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;]&#8221; \/commit:apphost<\/strong><\/div>\n<\/li>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/[name=&#8217;ARR_myServerFarm_loadbalance_SSL&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].match.url:&#8221;*&#8221;\u00a0 \/commit:apphost<\/strong><\/div>\n<\/li>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/+&#8221;[name=&#8217;ARR_myServerFarm_loadbalance_SSL&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].conditions.[input='{HTTPS}&#8217;,pattern=&#8217;On&#8217;]&#8221; \/commit:apphost<\/strong><\/div>\n<\/li>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/[name=&#8217;ARR_myServerFarm_loadbalance_SSL&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].action.type:&#8221;Rewrite&#8221; \/[name=&#8217;ARR_myServerFarm_loadbalance_SSL&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].action.url:&#8221;https:\/\/myServerFarm\/{R:0}&#8221;\u00a0 \/commit:apphost<\/strong><\/div>\n<\/li>\n<\/ul>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 Finally, create the URL rewrite rules to forward HTTP traffic in clear text to the application servers:<\/p>\n<ul>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/+&#8221;[name=&#8217;ARR_myServerFarm_loadbalance&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;]&#8221; \/commit:apphost<\/strong><\/div>\n<\/li>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/[name=&#8217;ARR_myServerFarm_loadbalance&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].match.url:&#8221;*&#8221;\u00a0 \/commit:apphost<\/strong><\/div>\n<\/li>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:system.webServer\/rewrite\/globalRules \/[name=&#8217;ARR_myServerFarm_loadbalance&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].action.type:&#8221;Rewrite&#8221; \/[name=&#8217;ARR_myServerFarm_loadbalance&#8217;,patternSyntax=&#8217;Wildcard&#8217;,stopProcessing=&#8217;True&#8217;].action.url:&#8221;http:\/\/myServerFarm\/{R:0}&#8221;\u00a0 \/commit:apphost<\/strong><\/div>\n<\/li>\n<\/ul>\n<p>5.\u00a0 To verify that the URL rewrite rules have been created correctly with SSL offloading disabled, enter <strong>appcmd.exe list config -section:system.webServer\/rewrite\/globalRules<\/strong>.\u00a0 It returns the globalRules that looks like the following:<\/p>\n<p><samp><br \/>&lt;system.webServer&gt;<br \/>\u00a0 &lt;rewrite&gt;<br \/>\u00a0\u00a0\u00a0 &lt;globalRules&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;rule name=&#8221;ARR_myServerFarm_loadbalance_SSL&#8221; patternSyntax=&#8221;Wildcard&#8221; stopProcessing=&#8221;true&#8221;&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&#8221;*&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add input=&#8221;{HTTPS}&#8221; pattern=&#8221;On&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&#8221;Rewrite&#8221; url=&#8221;https:\/\/myServerFarm\/{R:0}&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/rule&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;rule name=&#8221;ARR_myServerFarm_loadbalance&#8221; patternSyntax=&#8221;Wildcard&#8221; stopProcessing=&#8221;true&#8221;&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&#8221;*&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/conditions&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&#8221;Rewrite&#8221; url=&#8221;http:\/\/myServerFarm\/{R:0}&#8221; \/&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/rule&gt;<br \/>\u00a0\u00a0\u00a0 &lt;\/globalRules&gt;<br \/>\u00a0 &lt;\/rewrite&gt;<br \/>&lt;\/system.webServer&gt;<\/samp><\/p>\n<p>&nbsp;<\/p>\n<h2>Step 2 \u2013 Configure health check monitoring<\/h2>\n<p>Application Request Routing monitors the health of the content servers in two ways:<\/p>\n<ul>\n<li>Via the live traffic<\/li>\n<li>Via an explicit URL testing<\/li>\n<\/ul>\n<p>The live traffic testing is performed automatically by default when the requests are made to Application Request Routing.\u00a0 The explicit URL testing is an additional test that can be used with the live traffic testing.\u00a0 In this section, the walkthrough guides you through configuring the explicit URL testing.<\/p>\n<p><strong>To configure health check monitoring using the UI:<\/strong><\/p>\n<p>1.\u00a0\u00a0\u00a0The URL testing requires a specific URL to test.\u00a0 To satisfy this requirement, use Notepad to create a text file named <strong>healthCheck.txt<\/strong>\u00a0that contains the sentence \u201c<strong>I am healthy.<\/strong>\u201d<\/p>\n<p>2.\u00a0\u00a0\u00a0Place the <strong>healthCheck.txt<\/strong> file on the application servers.<\/p>\n<p>3.\u00a0\u00a0\u00a0Verify that the <strong>healthCheck.txt<\/strong> is rendering properly by opening the page in a browser.<\/p>\n<p>4.\u00a0\u00a0\u00a0In IIS Manager, select the server farm, <strong>myServerFarm<\/strong>.\u00a0 The following icons are shown:<\/p>\n<p>\u00a0 <img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1199\" alt=\"\" border=\"0\" \/><\/p>\n<p>5.\u00a0 Double-click <strong>Health Test<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1201\" alt=\"\" border=\"0\" \/><\/p>\n<p>6.\u00a0 Enter <strong>http:\/\/(server name or FQDN of ARR server)\/healthCheck.txt<\/strong> as the <strong>URL<\/strong> value.<\/p>\n<p>7.\u00a0 Enter <strong>healthy<\/strong> as the <strong>Response match<\/strong> value.\u00a0 Response match is an optional test to make sure that the body of the response contains the expected string.\u00a0 In this case, since <strong>healthCheck.txt<\/strong> contains the sentence &#8220;<strong>I am healthy.<\/strong>&#8220;, Response match will look for the word &#8220;<strong>healthy<\/strong>&#8220;.<\/p>\n<p>8.\u00a0 Click <strong>Apply<\/strong> to save the changes.<\/p>\n<p>9.\u00a0\u00a0To verify the functionality of health check monitoring, stop the monitored site on one of the application servers.\u00a0 Since the <strong>Interval (seconds)<\/strong> value is set to 30 seconds, wait for 30 seconds for the next health check.<\/p>\n<p>10.\u00a0After waiting for 30 seconds, send several requests to the ARR server.<\/p>\n<p>11. To verify that all requests are going to the healthy server(s), double-click <strong>Monitoring and Management<\/strong>, and then refresh the dashboard by using\u00a0the F5 key.\u00a0 Note that the runtime statistics have been reset.\u00a0 This is by design.\u00a0 You may want to send additional requests and refresh the dashboard, as needed.<\/p>\n<p><a href=\"http:\/\/learn.iis.net\/file.axd?i=1204\"><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1204\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>12.\u00a0 Health monitoring is also used to detect when an unhealthy server becomes healthy.\u00a0 To verify this functionality, start the site that was stopped in Step 9.\u00a0 Again, since the <strong>Interval (seconds)<\/strong> value is set to 30 seconds, wait for 30 seconds for the next health check.<\/p>\n<p>13.\u00a0 After waiting for 30 seconds, send several requests to the ARR server.<\/p>\n<p>14.\u00a0\u00a0 To verify that the requests are distributed evenly between servers, refresh the dashboard in IIS Manager.\u00a0 Note that the runtime statistics have been reset.\u00a0 This is by design.\u00a0You may want to send additional requests and refresh the dashboard, as needed.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>To configure health check monitoring using the command-line:<\/strong><\/p>\n<p>1.\u00a0 Open a command prompt with <strong>administrator<\/strong> privileges.<\/p>\n<p>2.\u00a0 Navigate to <strong>%windir%\\system32\\inetsrv<\/strong>.<\/p>\n<p>3.\u00a0 To set the URL to <strong>http:\/\/(server name or FQDN of ARR server)\/healthCheck.txt<\/strong> with <strong>I am healthy.<\/strong> as the string to match, enter:<\/p>\n<ul>\n<li>\n<div><strong>appcmd.exe set config\u00a0 -section:webFarms \/[name=&#8217;myServerFarm1&#8242;].applicationRequestRouting.healthCheck.url:&#8221;http:\/\/(server name or FQDN of ARR server)\/healthCheck.txt &#8221; \/[name=&#8217;myServerFarm1&#8242;].applicationRequestRouting.healthCheck.responseMatch:&#8221;I am healthy.&#8221;\u00a0 \/commit:apphost<\/strong><\/div>\n<\/li>\n<\/ul>\n<p>\u00a0\u00a0<\/p>\n<h2>Step 3 \u2013 Configure client affinity<\/h2>\n<p>Application Request Routing provides a client affinity feature that maps a client to a content server behind Application Request Routing for the duration of a client session.\u00a0 When this feature is enabled, the load balancing algorithm is applied only for the very first request from the client. From that point on, all subsequent requests from the same client would be routed to the same content server for the duration of the client session.\u00a0 This feature is useful if the application on the content server is stateful and the client\u2019s requests must be routed to the same content server because the session management is not centralized.<\/p>\n<p><strong>To configure client affinity using the UI:<\/strong><\/p>\n<p>1.\u00a0 Launch IIS Manager.<\/p>\n<p>2.\u00a0 Select the server farm, <strong>myServerFarm<\/strong>, which was created in <a href=\"http:\/\/learn.iis.net\/page.aspx\/485\/define-and-configure-an-application-request-routing-server-group\/\"><strong><span style=\"color: #3529ae;\">Define and Configure an Application Request Routing (ARR) Server Group<\/span><\/strong><\/a>.<\/p>\n<p>3.\u00a0 The following icons are shown:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1199\" alt=\"\" border=\"0\" \/><\/p>\n<p>4.\u00a0 Double-click <strong>Server Affinity<\/strong>.<\/p>\n<p>5.\u00a0 To enable client affinity, check the\u00a0<strong>Client affinity<\/strong> checkbox, and then click <strong>Apply<\/strong>.<\/p>\n<p><a href=\"http:\/\/learn.iis.net\/file.axd?i=1205\"><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1205\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>Application Request Routing uses a cookie to enable client affinity.\u00a0 The <strong>Cookie name<\/strong> will be used to set the cookie on the client.\u00a0 That said, the client must accept cookies for client affinity to work properly.<\/p>\n<p>6.\u00a0To verify the functionality of client affinity, send several requests to the ARR server.\u00a0 Refresh the dashboard in IIS\u00a0Manager (<strong>Monitoring and Management<\/strong>).\u00a0 Verify that the runtime statistics are changing for only one of the application servers to where the client is affinitized.\u00a0 You may want to send additional requests and refresh the dashboard, as needed.\u00a0<\/p>\n<p>&nbsp;<\/p>\n<p><strong>To configure client affinity using the command-line:<\/strong><\/p>\n<p>1.\u00a0 Open a command prompt with <strong>administrator<\/strong> privileges.<\/p>\n<p>2.\u00a0 Navigate to <strong>%windir%\\system32\\inetsrv<\/strong>.<\/p>\n<p>3.\u00a0 To enable client affinity, enter:<\/p>\n<ul>\n<li><strong>appcmd.exe set config\u00a0 -section:webFarms \/[name=&#8217;myServerFarm1&#8242;].applicationRequestRouting.affinity.useCookie:&#8221;True&#8221;\u00a0 \/commit:apphost<\/strong><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Step 4 \u2013 Disallow new connections<\/h2>\n<p>Disallowing new\u00a0connections on a server is a graceful way of taking the server out of the server farm environment.\u00a0 It is more meaningful when the client affinity feature is in use, because Application Request Routing will honor the existing sessions when disallowing new connections.\u00a0 That is,\u00a0when a client is affinitized to the server that is disallowing new connections, the client will continue to be routed to the same server and, therefore, there is no impact on the client.\u00a0 However, no new clients will be routed to the server that is disallowing new connections.<\/p>\n<p><strong>To disallow new connections using the UI:<\/strong><\/p>\n<p>1.\u00a0 Using the setup from Step 3 above, identify the server to which your client is affinitized.<\/p>\n<p>2.\u00a0 Select the server farm, <strong>myServerFarm<\/strong>, which was created in <a href=\"http:\/\/learn.iis.net\/page.aspx\/485\/define-and-configure-an-application-request-routing-server-group\/\"><strong><span style=\"color: #3529ae;\">Define and Configure an Application Request Routing (ARR) Server Group<\/span><\/strong><\/a>.<\/p>\n<p>3.\u00a0 The following icons are shown:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1199\" alt=\"\" border=\"0\" \/><\/p>\n<p>4.\u00a0 Double-click <strong>Monitoring and Management<\/strong>.<\/p>\n<p>5.\u00a0 Select the server to where your client is affinitized.\u00a0 In the <strong>Actions<\/strong> pane,\u00a0click <strong>Disallow New Connections<\/strong>.<\/p>\n<p>6.\u00a0 In the confirmation dialog box, click <strong>Yes<\/strong>.<\/p>\n<p><a href=\"http:\/\/learn.iis.net\/file.axd?i=1064\"><img decoding=\"async\" src=\"http:\/\/learn.iis.net\/file.axd?i=1064\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>7.\u00a0\u00a0To verify that the requests from your clients continue to get routed to the affinitized server, which is now disallowing new connections, send several requests to the ARR server.\u00a0 Refresh the dashboard in IIS Manager.\u00a0 Verify that the runtime statistics are changing only for the server to\u00a0where the client is affinitized.\u00a0 You may want to send additional requests and refresh the dashboard, as needed.<\/p>\n<p>8.\u00a0To verify that new clients are not being routed to the server that is disallowing new connections, remove the cookie set by Application Request Routing by closing and restarting the browser.<\/p>\n<p>9. Send several requests to the ARR server.\u00a0 Refresh the dashboard in IIS Manager.\u00a0 Verify that the runtime statistics are changing only for the servers that\u00a0are <strong>Available<\/strong>.\u00a0 More specifically, verify that the runtime statistics for the server that is disallowing new connections are not changed.\u00a0 You may want to send additional requests and refresh the dashboard, as needed.<\/p>\n<p><strong><\/strong>\u00a0<\/p>\n<h2>Summary<\/h2>\n<p>You have now successfully configured a number of settings for Application Request Routing to scale out and distribute the load evenly.\u00a0 For more advanced routing capabilities using Application Request Routing, refer to <a href=\"http:\/\/learn.iis.net\/page.aspx\/489\/using-the-application-request-routing-module\/\">Using Application Request Routing<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview <\/p>\n<p>This topic leads the reader through the steps to configure Application Request Routing to load balance HTTP requests to achieve high availability and scalability. The walkthrough also highlights a couple of core features on how Application Request Routing monitors the health of the content servers and affinitizes requests from a client to a content [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/1171"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1171"}],"version-history":[{"count":3,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/1171\/revisions"}],"predecessor-version":[{"id":1174,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/1171\/revisions\/1174"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}