Back to GlassFishV2Architecture, or GlassFishV2Architecture Info
| At line 3 removed 2 lines. |
| This document describes the high-level concepts and architecture for Clustering |
| support in GlassFish V2 |
| At line 6 changed 1 line. |
| An installation of GlassFish consists of one or more <i>administration |
| <font |
| face="Times New Roman, serif"><font size="3">This document describes the high-level concepts and architecture for Clustering |
| support in GlassFish V2</font> |
| <font |
| face="Times New Roman, serif"><font size="3">An installation of GlassFish consists of one or more <i>administration |
| At line 12 changed 1 line. |
| of applications and configuration information. </span></font></font><font |
| of applications and configuration information. </span></font><font |
| At line 20 changed 1 line. |
| Here are some important terms and concepts: |
| !! Overall Architecture |
| At line 25 added 7 lines. |
| The architecture diagram below, showing a sample GlassFish |
| installation (a single domain), will be used to illustrate the basic |
| concepts. |
| <p> |
| [{Image src='cluster-arch.jpg' align='base'}] |
| </p> |
| The architecture consists of the following components: |
| At line 34 added 144 lines. |
| <p class="western" style=""><font size="3"><b>Domain Administration |
| Server (DAS). </b><span style="">The DAS, a fully functional Java EE 5 |
| server instance, facilitates <span lang="en-US">administration </span>for |
| the Domain. All administrative operations (e.g. initiated via the CLI, |
| GUI, NetBeans IDE, and other tools) are routed to the DAS rather than |
| to server instances directly. For aggregate operations that encompass |
| more than one server instance, the DAS will be responsible for |
| broadcasting administration requests to instances. DAS is able to |
| administer instances running on remote hosts. When the DAS is not |
| running administative operations are not possible. No special efforts |
| are made to make the DAS highly available except for simple watchdog |
| and restart capability. Instances and clusters in the domain can |
| function normally even if the DAS is not running. </span></font> </p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Administrative Client |
| Applications (CLI, JSR 77, AMX)</b>. Administrative clients include the |
| asadmin CLI (command line interface) utility, and modules that plug |
| into the Studio. These applications reside either inside or outside the |
| firewall and communicate exclusively with the Domain Admin Server (and |
| not server instances directly). All application deployment makes use of |
| the JSR 88 APIs. Configuration and application deployment are done |
| exclusively via<span lang="en-US"> JMX MBeans </span>(some of which |
| are standardized by JSR 77). These clients clients use JSR160 JMX |
| connectors to access the DAS. To cross firewalls, the protocol of |
| choice implemented in the connector is HTTP(S). There is also an |
| MBEan interface called AMX that exposes all the functionality through |
| API.<br> |
| </font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Browser Based Administrative |
| GUI. </b><span style="">The browser based administrative GUI |
| (graphical user interface) application is deployed in the Java EE 5 |
| instance hosting the Domain Admin Server. This forms the administration |
| “console” of the application server. </span></font> </p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Web Client<span lang="en-US"> |
| Applications </span>(web clients, web services clients). </b><span |
| style="">A web client communicates with the server instance using http |
| via a web browser or a web service invocation. In clustered |
| configurations all web clients are optionally routed through the load |
| balancing tier which performs load balancing and optionally some level |
| of failover (Failover functionality is under development for |
| GlassFish). </span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Rich client (RMI/IIOP) |
| applications. </b><span style="">A rich client runs in a process |
| remote from the server instances and communicates with the server |
| instances via a generated client stub over the RMI/IIOP protocol. The |
| rich client may be hosted in the server's Application Client Container |
| (ACC) in which case it has access to all JNDI resources defined in the |
| server, or it may be running as a stand alone RMI/IIOP client relying |
| purely on the client side ORB. Rich clients typically reside within the |
| firewall boundary, but the architecture should not limit this. Like web |
| clients, rich clients should be load balanced to lightly loaded server |
| instances and should be able to failover if the server instance to |
| which they are communicating fails.</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Load Balancers (LB). </b><span |
| style="">The load balancer is responsible for directing new incoming |
| requests to the least loaded host machine, recognizing failed nodes, |
| retrying operations if necessary,<span lang="en-US"> and maintaining </span>affinity |
| <span lang="en-US">(stickiness)</span> with a particular host on |
| which a session has been<span lang="en-US"> established. </span>There |
| are a wide variety of load balancing solutions in addition to the |
| software load balancer. <br> |
| </span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Node Agent (NA). </b><span |
| style="">A lightweight agent (e.g. hosting a JMX runtime only) will be |
| needed on each node in the domain to facilitate remote lifecycle |
| management of instances. Its primary purpose will be to start, stop, |
| and create server instances as instructed by the DAS. The Node Agent |
| will also act as a watchdog and restart failed processes (e.g. in the |
| absence of web core). Like the DAS, the Node Agent should only be |
| required for certain administrative operations and should not be |
| expected to be highly available. However, the NA is an “always on” |
| component, and will be configured to be started by the native O/S node |
| bootstrap (e.g. Solaris/Linux inetd, or as a Windows service). A Node |
| Agent is not required for the DAS, and as such GlassFish installations |
| will not contain a Node Agent.</span></font></p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Server Instance (SI). |
| </b>An instance is a<span lang="en-US"> Java </span>VM hosting a |
| Java EE 5 application server. Bi-directional communication between the |
| server instances and the DAS relies on remote MBean method invocations |
| via JSR160. The standard JSR 160 RMI connector is used for all server |
| to DAS communication. This means that the DAS will host two JSR160 JMX |
| connectors -- a proprietary HTTP connector for crossing firewalls for |
| use by the admin CLI and the standard RMI connector.<br> |
| </font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Administration API.</b><span |
| style=""> A subset of the administration JMX Mbeans in the DAS will be |
| exposed and made available to customers. These interfaces will |
| communicate with the DAS using the standard JSR 160 RMI connector.</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Central Repository. </b><span |
| style="">There are 2 main repositories storing information shared by |
| all instances in the domain. The configuration repository contains |
| domain configuration information, and the application repository |
| contains deployed J2EE applications. The central<span lang="en-US"> |
| repository </span>is maintained and written to only by the DAS using |
| an API (configuration MBeans) and persisted on the file system<span |
| lang="en-US">. The</span> central repository will typically be rooted |
| under a single directory and as such can easily be backed up and |
| restored.</span></font></p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Local Repository |
| Cache. </b><span style="">To avoid forcing high availability |
| constraints on the DAS, and speedier startup, each instance maintains, |
| on its local file system, a cache of its configuration from the Central |
| Repository. The cache will be synchronized with the Central Repository |
| each time the instance restarts. The cache will be a subset of the |
| Central Repository (e.g. since an instance only needs the referenced |
| subset of applications in the domain).</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>JMX Runtime. </b><span |
| style="">The JMX infrastructure provides the administrative<span |
| lang="en-US"> infrastructure </span>used to carry out <span |
| lang="en-US">administration</span> and configuration operations. The |
| JMX runtime includes the agent services (MBean server, timer service, |
| monitoring service, etc.), the MBean instrumentation level, as well as |
| distributed <span lang="en-US">devices</span> such as connectors |
| (JSR160) that are used for virtually all inter-server and client |
| communication. All server instances, Node Agents, and the DAS itself |
| host JMX runtimes. </span></font> </p> |
| </li> |
| </ul> |
| !! Here are some important terms and concepts: |
| <ul> |
| <li> |
| At line 239 removed 150 lines. |
| !! Overall Architecture |
| The example below, showing a sample GlassFish |
| installation (a single domain), will be used to illustrate the basic |
| concepts. |
| The |
| architecture consists of the following components:</font> |
| <ul> |
| <li> |
| <p class="western" style=""><font size="3"><b>Domain Administration |
| Server (DAS). </b><span style="">The DAS, a fully functional Java EE 5 |
| server instance, facilitates <span lang="en-US">administration </span>for |
| the Domain. All administrative operations (e.g. initiated via the CLI, |
| GUI, NetBeans IDE, and other tools) are routed to the DAS rather than |
| to server instances directly. For aggregate operations that encompass |
| more than one server instance, the DAS will be responsible for |
| broadcasting administration requests to instances. DAS is able to |
| administer instances running on remote hosts. When the DAS is not |
| running administative operations are not possible. No special efforts |
| are made to make the DAS highly available except for simple watchdog |
| and restart capability. Instances and clusters in the domain can |
| function normally even if the DAS is not running. </span></font> </p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Administrative Client |
| Applications (CLI, JSR 77, AMX)</b>. Administrative clients include the |
| asadmin CLI (command line interface) utility, and modules that plug |
| into the Studio. These applications reside either inside or outside the |
| firewall and communicate exclusively with the Domain Admin Server (and |
| not server instances directly). All application deployment makes use of |
| the JSR 88 APIs. Configuration and application deployment are done |
| exclusively via<span lang="en-US"> JMX MBeans </span>(some of which |
| are standardized by JSR 77). These clients clients use JSR160 JMX |
| connectors to access the DAS. To cross firewalls, the protocol of |
| choice implemented in the connector is HTTP(S). There is also an |
| MBEan interface called AMX that exposes all the functionality through |
| API.<br> |
| </font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Browser Based Administrative |
| GUI. </b><span style="">The browser based administrative GUI |
| (graphical user interface) application is deployed in the Java EE 5 |
| instance hosting the Domain Admin Server. This forms the administration |
| “console” of the application server. </span></font> </p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Web Client<span lang="en-US"> |
| Applications </span>(web clients, web services clients). </b><span |
| style="">A web client communicates with the server instance using http |
| via a web browser or a web service invocation. In clustered |
| configurations all web clients are optionally routed through the load |
| balancing tier which performs load balancing and optionally some level |
| of failover (Failover functionality is under development for |
| GlassFish). </span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Rich client (RMI/IIOP) |
| applications. </b><span style="">A rich client runs in a process |
| remote from the server instances and communicates with the server |
| instances via a generated client stub over the RMI/IIOP protocol. The |
| rich client may be hosted in the server's Application Client Container |
| (ACC) in which case it has access to all JNDI resources defined in the |
| server, or it may be running as a stand alone RMI/IIOP client relying |
| purely on the client side ORB. Rich clients typically reside within the |
| firewall boundary, but the architecture should not limit this. Like web |
| clients, rich clients should be load balanced to lightly loaded server |
| instances and should be able to failover if the server instance to |
| which they are communicating fails.</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Load Balancers (LB). </b><span |
| style="">The load balancer is responsible for directing new incoming |
| requests to the least loaded host machine, recognizing failed nodes, |
| retrying operations if necessary,<span lang="en-US"> and maintaining </span>affinity |
| <span lang="en-US">(stickiness)</span> with a particular host on |
| which a session has been<span lang="en-US"> established. </span>There |
| are a wide variety of load balancing solutions in addition to the |
| software load balancer. <br> |
| </span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Node Agent (NA). </b><span |
| style="">A lightweight agent (e.g. hosting a JMX runtime only) will be |
| needed on each node in the domain to facilitate remote lifecycle |
| management of instances. Its primary purpose will be to start, stop, |
| and create server instances as instructed by the DAS. The Node Agent |
| will also act as a watchdog and restart failed processes (e.g. in the |
| absence of web core). Like the DAS, the Node Agent should only be |
| required for certain administrative operations and should not be |
| expected to be highly available. However, the NA is an “always on” |
| component, and will be configured to be started by the native O/S node |
| bootstrap (e.g. Solaris/Linux inetd, or as a Windows service). A Node |
| Agent is not required for the DAS, and as such GlassFish installations |
| will not contain a Node Agent.</span></font></p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Server Instance (SI). |
| </b>An instance is a<span lang="en-US"> Java </span>VM hosting a |
| Java EE 5 application server. Bi-directional communication between the |
| server instances and the DAS relies on remote MBean method invocations |
| via JSR160. The standard JSR 160 RMI connector is used for all server |
| to DAS communication. This means that the DAS will host two JSR160 JMX |
| connectors -- a proprietary HTTP connector for crossing firewalls for |
| use by the admin CLI and the standard RMI connector.<br> |
| </font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Administration API.</b><span |
| style=""> A subset of the administration JMX Mbeans in the DAS will be |
| exposed and made available to customers. These interfaces will |
| communicate with the DAS using the standard JSR 160 RMI connector.</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>Central Repository. </b><span |
| style="">There are 2 main repositories storing information shared by |
| all instances in the domain. The configuration repository contains |
| domain configuration information, and the application repository |
| contains deployed J2EE applications. The central<span lang="en-US"> |
| repository </span>is maintained and written to only by the DAS using |
| an API (configuration MBeans) and persisted on the file system<span |
| lang="en-US">. The</span> central repository will typically be rooted |
| under a single directory and as such can easily be backed up and |
| restored.</span></font></p> |
| </li> |
| <li> |
| <p class="western" style=""><font size="3"><b>Local Repository |
| Cache. </b><span style="">To avoid forcing high availability |
| constraints on the DAS, and speedier startup, each instance maintains, |
| on its local file system, a cache of its configuration from the Central |
| Repository. The cache will be synchronized with the Central Repository |
| each time the instance restarts. The cache will be a subset of the |
| Central Repository (e.g. since an instance only needs the referenced |
| subset of applications in the domain).</span></font></p> |
| </li> |
| <li> |
| <p class="western"><font size="3"><b>JMX Runtime. </b><span |
| style="">The JMX infrastructure provides the administrative<span |
| lang="en-US"> infrastructure </span>used to carry out <span |
| lang="en-US">administration</span> and configuration operations. The |
| JMX runtime includes the agent services (MBean server, timer service, |
| monitoring service, etc.), the MBean instrumentation level, as well as |
| distributed <span lang="en-US">devices</span> such as connectors |
| (JSR160) that are used for virtually all inter-server and client |
| communication. All server instances, Node Agents, and the DAS itself |
| host JMX runtimes. </span></font> </p> |
| </li> |
| </ul> |