You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2010/11/30 22:12:30 UTC

svn commit: r1040775 - in /synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide: samples.xml samples/sample52.xml samples/sample53.xml

Author: hiranya
Date: Tue Nov 30 21:12:30 2010
New Revision: 1040775

URL: http://svn.apache.org/viewvc?rev=1040775&view=rev
Log:
sample 52, 53


Modified:
    synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
    synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample52.xml
    synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample53.xml

Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml?rev=1040775&r1=1040774&r2=1040775&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml Tue Nov 30 21:12:30 2010
@@ -60,7 +60,7 @@
                         <li><a href="samples/sample50.html">Sample 50: POX to SOAP conversion</a></li>
                         <li><a href="samples/sample51.html">Sample 51: MTOM and SwA optimizations and request/response correlation</a></li>
                         <li><a href="samples/sample52.html">Sample 52: Session less load balancing between 3 endpoints</a></li>
-                        <li><a href="samples/sample53.html">Sample 53: Failover sending among 3 endpoints</a></li>
+                        <li><a href="samples/sample53.html">Sample 53: Fail-over routing among 3 endpoints</a></li>
                         <li><a href="samples/sample54.html">Sample 54: Session affinity load balancing between 3 endpoints</a></li>
                         <li><a href="samples/sample55.html">Sample 55: Session affinity load balancing between fail over endpoints</a></li>
                         <li><a href="">Sample 56: WSDL endpoint</a></li>

Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample52.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample52.xml?rev=1040775&r1=1040774&r2=1040775&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample52.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample52.xml Tue Nov 30 21:12:30 2010
@@ -23,7 +23,7 @@
         <title>Apache Synapse - Sample 52</title>
     </properties>
     <body>
-        <section name="Sample 52: ">
+        <section name="Sample 52: Session-less Load Balancing Between 3 Endpoints">
             <div class="xmlConf">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
 
     &lt;sequence name="main" onError="errorHandler"&gt;
@@ -72,14 +72,22 @@
 &lt;/definitions&gt;</div>
             <subsection name="Objective">
                 <p>
-
+                    Demonstrate the ability of Synapse to act as a load balancer for a set of
+                    servers hosting stateless services
                 </p>
             </subsection>
             <subsection name="Pre-requisites">
                 <p>
                     <ul>
                         <li>
-                            Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
+                            Deploy the LoadbalanceFailoverService in the sample Axis2 server (go to
+                            samples/axis2Server/src/LoadbalanceFailoverService and run 'ant')
+                        </li>
+                        <li>
+                            Start 3 instances of the Axis2 server on different ports as follows
+                            <div class="command">./axis2server.sh -http 9001 -https 9005 -name MyServer1
+./axis2server.sh -http 9002 -https 9006 -name MyServer2
+./axis2server.sh -http 9003 -https 9007 -name MyServer3</div>
                         </li>
                         <li>
                             Start Synapse using the configuration numbered 52 (repository/conf/sample/synapse_sample_52.xml)
@@ -92,11 +100,49 @@
                 </p>
             </subsection>
             <subsection name="Executing the Client">
-                <div class="command">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</div>
-
-                <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006 SimpleStockQuoteService :: Generating quote for : IBM</div>
-
-                <div class="consoleOutput">Standard :: Stock price = $95.26454380258552</div>
+                <p>
+                    Invoke the sample client as follows
+                </p>
+                <div class="command">ant loadbalancefailover -Di=100</div>
+                <p>
+                    This will send 100 requests to the LoadbalanceFailoverService through Synapse.
+                    Synapse will distribute the load among the three endpoints mentioned in the
+                    configuration in round-robin manner. LoadbalanceFailoverService appends the name
+                    of the server to the response, so that client can determine which server has
+                    processed the message. If you examine the console output of the client, you can
+                    see that requests are processed by three servers as follows:
+                </p>
+                <div class="consoleOutput">[java] Request: 1 ==&gt; Response from server: MyServer1
+[java] Request: 2 ==&gt; Response from server: MyServer2
+[java] Request: 3 ==&gt; Response from server: MyServer3
+[java] Request: 4 ==&gt; Response from server: MyServer1
+[java] Request: 5 ==&gt; Response from server: MyServer2
+[java] Request: 6 ==&gt; Response from server: MyServer3
+[java] Request: 7 ==&gt; Response from server: MyServer1
+...</div>
+                <p>
+                    Now run the client without the -Di=100 parameter to send requests indefinitely.
+                    While running the client shutdown the server named MyServer1. Then you can observe
+                    that requests are only distributed among MyServer2 and MyServer3. Console output
+                    before and after shutting down MyServer1 is listed below (MyServer1 was shutdown
+                    after request 63):
+                </p>
+                <div class="consoleOutput">...
+[java] Request: 61 ==&gt; Response from server: MyServer1
+[java] Request: 62 ==&gt; Response from server: MyServer2
+[java] Request: 63 ==&gt; Response from server: MyServer3
+[java] Request: 64 ==&gt; Response from server: MyServer2
+[java] Request: 65 ==&gt; Response from server: MyServer3
+[java] Request: 66 ==&gt; Response from server: MyServer2
+[java] Request: 67 ==&gt; Response from server: MyServer3
+...</div>
+                <p>
+                    Now restart MyServer1. You can observe that requests will be again sent to all 
+                    three servers within 60 seconds. This is because we have specified
+                    &lt;suspendDurationOnFailure&gt; as 60 seconds in the configuration. Therefore,
+                    load balance endpoint will suspend any failed child endpoint only for 60 seconds
+                    after detecting the failure.
+                </p>
             </subsection>
         </section>
         <p><a href="../samples.html">Back to Catalog</a></p>        

Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample53.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample53.xml?rev=1040775&r1=1040774&r2=1040775&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample53.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample53.xml Tue Nov 30 21:12:30 2010
@@ -23,7 +23,7 @@
         <title>Apache Synapse - Sample 53</title>
     </properties>
     <body>
-        <section name="Sample 53: ">
+        <section name="Sample 53: Fail-over Routing Among 3 Endpoints">
             <div class="xmlConf">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
 
     &lt;sequence name="main" onError="errorHandler"&gt;
@@ -72,14 +72,23 @@
 &lt;/definitions&gt;</div>
             <subsection name="Objective">
                 <p>
-
+                    Demonstrate the fail-over routing capabilities of Synapse. In fail-over routing
+                    messages are sent to a designated primary endpoint. When the primary endpoint
+                    fails, Synapse fails over to the one of the backup endpoints.
                 </p>
             </subsection>
             <subsection name="Pre-requisites">
                 <p>
                     <ul>
                         <li>
-                            Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
+                            Deploy the LoadbalanceFailoverService in the sample Axis2 server (go to
+                            samples/axis2Server/src/LoadbalanceFailoverService and run 'ant')
+                        </li>
+                        <li>
+                            Start 3 instances of the Axis2 server on different ports as follows
+                            <div class="command">./axis2server.sh -http 9001 -https 9005 -name MyServer1
+./axis2server.sh -http 9002 -https 9006 -name MyServer2
+./axis2server.sh -http 9003 -https 9007 -name MyServer3</div>
                         </li>
                         <li>
                             Start Synapse using the configuration numbered 53 (repository/conf/sample/synapse_sample_53.xml)
@@ -92,11 +101,40 @@
                 </p>
             </subsection>
             <subsection name="Executing the Client">
-                <div class="command">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</div>
-
-                <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006 SimpleStockQuoteService :: Generating quote for : IBM</div>
-
-                <div class="consoleOutput">Standard :: Stock price = $95.26454380258552</div>
+                <p>
+                    Above configuration sends messages with the fail-over behavior. Initially the
+                    server at port 9001 is treated as primary and other two are treated as backups.
+                    Messages are always directed only to the primary server. If the primary server
+                    fails, next listed server is selected as the primary. Thus, messages are sent
+                    successfully as long as there is at least one active server. To test this, run
+                    the loadbalancefailover client to send infinite requests as follows:
+                </p>
+                <div class="command">ant loadbalancefailover</div>
+                <p>
+                    You can see that all requests are processed by MyServer1. Now shutdown MyServer1
+                    and inspect the console output of the client. You will observe that all subsequent
+                    requests are processed by MyServer2. (MyServer 1 was shutdown after request 127)
+                </p>
+                <div class="consoleOutput">...
+[java] Request: 125 ==&gt; Response from server: MyServer1
+[java] Request: 126 ==&gt; Response from server: MyServer1
+[java] Request: 127 ==&gt; Response from server: MyServer1
+[java] Request: 128 ==&gt; Response from server: MyServer2
+[java] Request: 129 ==&gt; Response from server: MyServer2
+[java] Request: 130 ==&gt; Response from server: MyServer2
+...</div>
+                <p>
+                    You can keep on shutting servers down like this. Client will get a response untill
+                    you shutdown all listed servers. Once all servers are shutdown, the error sequence
+                    is triggered and a fault message is sent to the client as follows.
+                </p>
+                <div class="consoleOutput">[java] COULDN'T SEND THE MESSAGE TO THE SERVER.</div>
+                <p>
+                    Once a server is detected as failed, it will be added to the active servers
+                    list again after 60 seconds (specified in &lt;suspendDurationOnFailure&gt; in
+                    the configuration). Therefore, if you have restarted any of the stopped servers,
+                    messages will be directed to the newly started server within 60 seconds.
+                </p>
             </subsection>
         </section>
         <p><a href="../samples.html">Back to Catalog</a></p>