High availability is a system design approach and associated service implementation which ensures that a Leverage the power of JBoss EAP6 to successfully build high-availability clusters quickly and efficiently PDF下载地址( MB). From the basic uses of JBoss EAP6 through to advanced clustering techniques, this book is the perfect way to learn how to achieve a system. delves into the details of clustering JBoss for high availability and load balancing, as well as going into the details of setting up and managing a JBoss domain.
|Language:||English, Spanish, French|
|Genre:||Politics & Laws|
|ePub File Size:||25.48 MB|
|PDF File Size:||10.82 MB|
|Distribution:||Free* [*Regsitration Required]|
High Availability, configuration and best practices .. Once a JBoss EAP 6 cluster is configured and started, a web application simply needs to. High availability for web session state via state replication. .. cluster nodes, providing high availability in case the node handling a particular session fails or is ayofoto.info Selection from JBoss EAP6 High Availability [Book] you know that Packt offers eBook versions of every book published, with PDF and ePub files available?.
Regardless of the HA mode that is selected. Renan Cirello de Sa. JBoss EAP6 High Availability is the perfect guide for learning how to apply the newest technologies provided by JBoss to build your high availability system. You don't have anything in your cart right now. This pattern changes for a cluster of a different size. Some of the subsystems that can be made highly available include:
Title added to cart. Subscription About Subscription Pricing Login. Features Free Trial. Search for eBooks and Videos.
From the basic uses of JBoss EAP6 through to advanced clustering techniques, this book is the perfect way to learn how to achieve a system designed for high availability. Are you sure you want to claim this product using a token? Weinan Li December Quick links: What do I get with a Packt subscription? What do I get with an eBook?
What do I get with a Video? Frequently bought together. Learn more Add to cart. Paperback pages. Book Description High availability is a system design approach and associated service implementation which ensures that a prearranged level of operational performance will be met during a contractual measurement period. Table of Contents Chapter 1: Chapter 2: Chapter 3: Chapter 4: Chapter 5: Chapter 6: Clustering with SSL.
Chapter 7: Chapter 8: Developing Distributed Applications. Authors Weinan Li. He currently lives in Beijing with his wife and their three-year-old son. Read More. Read More Reviews. Recommended for You. WildFly Cookbook.
This structured approach enables you to select the pathway which best suits your knowledge level, learning style and task objectives. As a new user, these step-by-step tutorial guides will give you all the practical skills necessary to become competent and efficient. Beginner's Guide. Friendly, informal tutorials that provide a practical introduction using examples, activities, and challenges.
Fast paced, concentrated introductions showing the quickest way to put the tool to work in the real world. A collection of practical self-contained recipes that all users of the technology will find useful for building more powerful and reliable systems.
Guides you through the most common types of project you'll encounter, giving you end-to-end guidance on how to build your specific solution quickly and reliably. Take your skills to the next level with advanced tutorials that will give you confidence to master the tool's most powerful features. Starting Accessible to readers adopting the topic, these titles get you into the tool or technology so that you can become an effective user.
Progressing Building on core skills you already have, these titles share solutions and expertise so you become a highly productive power user.
Staying In Touch Join us on some of the popular social media sites where we keep our audience informed on new reference architectures as well as offer related information on things we find interesting. Like us on Facebook: Table of Contents 1 Executive Summary IPTables configuration Revision History Each cluster consists of three EAP instances running a custom profile based on the provided full-ha profile.
Through its new domain configuration. JBoss Enterprise Application Platform 6 EAP allows horizontal scaling by distributing the load between multiple physical and virtual machines and eliminating a single point of failure. Efficient and reliable group communication built on top of TCP or UDP enables replication of data held in volatile memory.
Through its clustering feature. In addition to the need for redundancy. A second-level cache is set up for the JPA layer with the default option to invalidate cache entries as they are changed. Through in-memory data replication. A service that is unavailable for even an hour can be extremely costly to a business. Within time and scope constraints. The goal of this reference architecture is to provide a thorough description of the steps required for such a setup.
EAP 6 mitigates governance challenges and promotes consistency among cluster nodes. This reference architecture stands up two EAP 6 Clusters. It provides high-availability clustering.
The new modular structure allows for services to be enabled only when required. In addition. In its simplest form. Session replication. Some of the subsystems that can be made highly available include: The alternative. JBoss EAP 6 supports clustering at several different levels and provides both load balancing and failover benefits. Session replication provides a copy of the session data. This architecture covers the use of a web server with a specific load balancing software but the principles remain largely the same for other load balancing solutions.
Such an approach quickly becomes problematic when the server holds non-persistent and in-memory state. Such a state is typically associated with a client session. Sticky load balancing attempts to address these concerns by ensuring that client requests tied to the same session are always sent to the same server instance. For web requests. While this sticky behavior protects callers from loss of data due to load balancing. Replicating data through network communication or persisting it on the file system is a performance cost and keeping in-memory copies on other nodes is a memory cost.
EAP 6 Cluster www. Figure 2. It works by simply creating and maintaining a copy of each session in all other nodes of the cluster. Replication 1 https: A replicated cache is preconfigured and will replicate all session data across all nodes of the cluster asynchronously. EAP 6 is configured to use the replication mode for this purpose. The replication mode is a simple and traditional clustering solution to avoid a single point of failure and allow requests to seamlessly transition to another node of the cluster.
The existence of an HTTP session makes a web application stateful and leads to the requirement of an intelligent clustering solution. B and C are created on all nodes. By default. This cache can be fine-tuned in various ways by configuring the predefined repl cache of the web cache container. Assuming a cluster of three nodes. Sticky load balancing behavior results in all HTTP requests being directed to the original owner of the session. The web cache container includes a preconfigured distributed cache called dist.
As the number of users increases and the size of the HTTP session grows. Each piece of data is copied to a number of other nodes. Infinispan allows the cluster to scale linearly as more servers are added.
For a larger cluster of four nodes with two sessions created on each node. The replication approach works best in small clusters. The number of owners determines the total number of nodes that will contain each data item. Under the distribution mode. The maximum number of active sessions or the idle time before passivation occurs can be configured through CLI. Reproducing the previous example of a larger cluster of four nodes.
The JNDI lookup of a stateless session bean returns an intelligent stub. This makes it easier to cluster stateless sessions beans. Such awareness can either be achieved by designating the bean as clustered or through EJB client configuration that lists all server nodes. Contrary to stateful HTTP conversations and stateful session beans. This cluster information is updated with each subsequent call so the stub has the latest available information about the active nodes of the cluster.
Once again. The ejb cache container can be independently configured to use one of these caches or a new cache that is set up by an administrator. JBoss EAP 6 uses an Infinispan cache to hold the state of the stateful session bean and enable failover in case the active node crashes. The sequence of calls made through the stub are treated as a conversation and the state of the bean is maintained on the server side. Much like HTTP session replication. Refer to the Red Hat documentation on configuring the transaction manager for further details5.
The node-identifier attribute of the transaction subsystem is provided for this purpose and should always be configured in a cluster so that each node has a unique identifier value. A successful outcome is a commit. This attribute is then used as the basis of the unique transaction identifier. The typical standard for a well-designed transaction is that it is Atomic.
In a roll-back. Whether it is JTS. Any change in data through other means may leave the cache stale. This cache is local and considering that it is short-lived and applies to individual requests.
Hibernate also provides additional features to the specification. As such. Possible values for this property include: Java EE 6 applications use the Java Persistence 2. When using JPA in a cluster. To configure an application to take advantage of this cache. It is a local data store of JPA entities that improves performance by reducing the number of required roundtrips to the database. First-level caching in JPA relates to the persistence context. JPA itself is considered stateless.
This cache is set up by default and uses an invalidation-cache called entity within the hibernate cache container of the server profile. With the use of second-level caching. Hibernate EntityManager implements the programming interfaces and life-cycle rules defined by the specification. For these purposes.
Once an entity is changed on one node. That results in the stale version of the entity being avoided on other nodes and an updated copy being loaded and cached on any node that requires it. Individual Entity classes may be marked with Cacheable true or Cacheable false to explicitly request caching or exclusion from caching. A proper JMS server clustering solution would fail over these messages. Java Messaging Service JMS providers use a system of transactions to commit or roll back changes atomically.
In the context of clustering. In other words. HornetQ uses the concept of connectors and acceptors as a key part of the messaging system. These messages are often set up to be persistent. JMS messages themselves can be considered the state of a cluster node. Two types of acceptors and connectors exist: A backup server is owned by only one live server. Most messaging systems also support a request-response mode.
HornetQ is a multi-protocol. HornetQ also supports flexible clustering solutions with load-balanced messages. When an EAP instance fails. Each configured connector is only successful in reaching a server if there is a matching acceptor configured on that server same protocol and if netty is used.
In a HornetQ cluster configured for high availability HA. HornetQ provides high availability HA with automatic client failover to guarantee message reliability in the event of a server failure. Backup servers are not operational until failover occurs. When failover occurs and a backup server takes over. This includes the paging directory. Shared Store: HornetQ allows the use of a high-performance shared file system. HornetQ supports two high availability modes: HornetQ HA: Shared Store www.
Only persistent messages received by the live server get replicated to the backup server. All the journals are replicated between the two servers as long as the two servers are within the same cluster and have the same cluster username and password. With shared store turned off. The backup-group-name configuration of HornetQ specifies which backup servers replicate refarch-feedback redhat.
When a shared store is used and the live server fails. In this scenario. The choice of high availability mode depends largely on the cluster environment. Such a backup server does not normally run active HornetQ components and therefore does not support all the functions of a regular HornetQ-enabled EAP instance.
The state of the live server is replicated to backup servers within the same backup group and as a result. Regardless of the HA mode that is selected. Message Replication: HornetQ now supports in-memory replication of the messages between a live server and a selected backup. To support load balancing and failover for various components. Message replication can result in some increased network traffic but a shared store requires a highperformance shared file system.
Message Replication As demonstrated in the figure above. To enable this feature. All live and backup servers would share the same cluster configuration and discovery and broadcast groups. Netty connectors and acceptors for each HornetQ servers must be assigned a unique port within the JVM. The invm acceptor and connector requires a server id that is also unique within a JVM. The redistribution feature of HornetQ can help us here. There are other HornetQ configuration constraints to take into account when setting up a cluster.
Each would have a different EAP profile. In case node 2 fails. In such a setup. This means that more than one EAP profile is required to alternate the backup-group-name of the live server and co-located backup servers. This makes it possible to configure backup servers to avoid pairing up with a live server that is co-located in the same EAP instance.
It is important to remember that any consumers most notably MDBs would normally only be listening to destinations on the live servers. To summarize. It is important to assign a backup-group-name to each backup server of an EAP instance. The one you choose depends on both the Web Server you connect to and the functionality you require. For the most up-to-date information about supported configurations for HTTP connectors.
Each of these modules works differently and has its own configuration method. The table below lists the differences between various available HTTP connectors. Microsoft IIS. Microsoft Windows Server. Oracle Solaris. HTTP Connectors www. Directs client requests to the container as long as the container is available. Yes AJP No. Detects Yes HTTPS deployment and AJP undeployment of applications and dynamically decides whether to direct client requests to a server based on whether the application is deployed on that server.
Directs client Yes requests to the container as long as the container is available. AJP No. It also makes it possible to use a custom load metric to determine the desired load balancing effect.
This allows load balancing using a wider range of metrics including CPU load. Using a special communication layer between the JBoss application server and the web server. Both modules must be installed and configured for the cluster to function. Having two distinct and separate clusters allows for upgrades and other types of maintenance. At any given time. Where requests over HTTP are concerned. In a basic non-virtualized environment.
The configuration of the EAP 6 cluster nodes is based on the provided full-ha profile. In an effort to strike a balance in proposing an economical solution. This profile is duplicated three times to provide three distinct HornetQ backup group names to control the pairing of live and backup HornetQ servers.
In this virtualized environment. To tilt yet further towards reliability at the expense of cost-efficiency. The tradeoff is that certain maintenance tasks may affect both clusters and require downtime. With such a setup. The profile copies are used by the server groups while unused profiles including the original full-ha are removed to avoid confusion and simplify maintenance.
For client requests that result in JPA calls. The Database itself can also be clustered. JPA is largely portable across various RDBMS vendors and switching to a different database server can easily be accomplished with minor configuration changes. Single Cluster refarch-feedback redhat. Reference Architecture. Figure 3. These scripts and files will be used in configuring the reference architecture environment: On a RHEL system.
Refer to Red Hat documentation for supported environments. See the Comments and Feedback section to contact us for alternative methods of access to these files. These files serve as the basis of the attached httpd configuration files. Previous installations of httpd on a system may clash with this web server.
It is prudent to ensure that the intended installation of the web server is being configured and used. The archive file simply needs to be extracted after the download.
These can be installed using yum or rpm. This reference architecture installs two sets of binaries for EAP 6 on each machine. Run ldd on the httpd binary file to find out the missing dependencies and install them. Available service scripts may point to a previous httpd installation and system variables and links can often cause confusion. For example.
Linux operating systems typically have a low maximum socket buffer size configured. This includes ports and on the web servers' mod-cluster module. Refer to the Red Hat documentation on IPTables11 for further details and see the appendix on IPTables configuration for the firewall rules used for the active cluster in this reference environment. Web clients are routed to the web server through ports 81 and This reference architecture uses IPTables. It may be important to correct any such warnings observed in the EAP logs.
The EAP cluster nodes also require many different ports for access. This script takes 1 or 2 as its first argument and start or stop as the second argument. Edit cluster1. It is best to delete this file to avoid any confusion. This reference architecture envisions running two instances of the web server using the same installed binary. The first argument determines the instance of web server that is targeted. The provided cluster1. The main configuration file has therefore been separated into cluster1.
Edit the provided httpd. The ServerRoot file will have a default value such as: This reference architecture does not use the web server to host any content. The configuration file in question is located under the data directory and in version 9.
For this reference architecture. On Linux systems where proper installation has been completed through yum or RPM files. Standard network masks and slash notation may be used. This is typically achieved by a postgres user being created. The -D flag can be used to specify the data directory to be used by the database server: This user should then be used to start. The configuration file is located under the data directory and in version 9.
One or more lines need to be added. Java applications typically use password authentication to connect to a database. Uncomment and modify the following line: The database server is started using one of the available approaches.
The names node1. Admin User An administrator user is required for each cluster. The first step is to specify that it is a management user. The primary cluster will be called the active cluster while the redundant backup cluster will be termed the passive cluster. On node2: The interactive process is as follows: Assuming the user ID of admin and the password of password1!
On node1: There are three machines. This time. For the active cluster. This uses the non-interactive mode of the add-user script. This reference architecture selects node1 to host the domain controller of the active cluster and node2 for the passive cluster. Node User The next step is to add a user for each node that will connect to the cluster.
Creating an application user requires the interactive mode. This concludes the setup of required management users to administer the domains and connect the slave machines. Realm ManagementRealm: Realm ApplicationRealm: Application User An application user is also required on all 6 nodes to allow a remote Java class to authenticate and invoke a deployed EJB. What type of user do you wish to add? The host XML file of any servers that are not domain controllers need to provide this password hash along with the associated username to connect to the domain controller.
The enclosing XML element should now look like this: Please enter a comma separated list. Edit this file and simply change the host name from master to the respective node name. Manual Configuration The domain controllers. Domain Controllers. Only after the configuration has been completed. Server Startup At this point. For each of these nodes. The four files that need to be modified are: To start the active domain.
They will also have their configured secret value modified to the value provided by the adduser script. Slave Hosts. For example the first file. First start the active domain. Manual Configuration There are also four slave nodes that have to be configured with the correct node name and password.
To run the configuration script. Server Configuration Automated scripts are provided to make the setup of this reference architecture less errorprone and more easily repeatable. Unable to validate user: Active Domain.
USER These errors can be safely ignored. Configuration The configuration script takes several minutes to run. The following items might need to be changed: Once the process is complete. The CLI commands are printed in the standard output as they're being issued.
One example of such errors is the following message: At this point. It is important that node1 would be the last shutdown command that is issued. Server Startup Now start the servers in the passive domain with the provided sample configuration. Complete these last two steps for the passive domain as well. This concludes the configuration of the active domain.
USER Safely ignore such errors. It will then disconnect from the domain controller and indicate that the configuration is completed. Assuming that For the active domain: Passive Domain. The final startup should be free of errors. Now stop the three servers by contacting the domain controller and first asking it to shut down the two slave hosts before shutting itself down. Then on node1: Server Configuration Certain items in configuration.
Configuration Running the configuration script for the passive domain takes several minutes again. It is important to shut down node2 last. For this domain: Review and change these items as appropriate: Once again review the output of the three servers to verify that they have indeed been stopped.
Now stop the three servers by contacting the domain controller and first asking it to shut down the two slave hosts before shutting down itself. The first and perhaps most important required configuration in an httpd configuration file is to specify the path of the web server directory structure.
Providing two separate httpd configurations with distinct ports makes it possible to start two separate instances of the web server. The attached httpd. Some of the future references. Do NOT add a slash at the end of the directory path. The second argument is passed to httpd with the -k flag and can be start or stop to respectively start up or shut down the web server. This example follows a similar pattern in naming various log files: The location of the error log file.
The file in which the server should record its process identification number when it starts. The first argument passed to this script may have be either 1 or 2 and results in the corresponding web server instance being targeted and either cluster1. In the reference architecture. Since the reference web server is exclusively used to forward requests to the application server. This configuration is the same for both instances of the web server so it is copied in a common.
This path must be unique for each instance of the web server. It must be an absolute path name. The directory out of which you will serve your documents. The required modules are: It is highly recommended that those files be placed on a local drive and not an NFS share. Also add rules to the module configuration to permit connections from various IP addresses.
For the regular HTTP port. To use SSL. Listen However. To www. SSL Engine Switch: If the certificate is encrypted. Per-Server Logging: The home of a custom SSL log file. If the key is not combined with the certificate.
Note that a kill -HUP will prompt again. The majority of changes are explained in each section. A new certificate can be generated using the genkey 1 command. The cluster2.
It is recommended that the parameters are reviewed in detail for a specific environment. The excerpts above are from the common. Use this when you want a compact non-error SSL logfile on a virtual host basis. SSLEngine off Comment out the lines pointing to the certificate file and the private key: Server Certificate: To see a list of the tables created in the database. Type help at the prompt to access to some of the documentation: Access To issue commands against a specific database.
To further query the table. To enter the interactive database management mode. In this case. No files are copied to require a review.
UTF-8 …. This reference architecture includes two separate clusters. To start the active cluster. JBoss Enterprise Application Platform. Refer to the chapter on Configuration Scripts CLI for a description of the various commands that are used to configure the domains.
This section reviews each of these files. The excerpts below reflect the active domain. This section reviews the various configuration files. The result is that the required server profiles are created and configured as appropriate for the cluster.
The few manual steps. This also means that the configuration for the entire domain is stored in a domain. There is a user account configured for each node of the cluster.
The following illustrates how an admin user could be defined. To see a list of all the management users for this domain. In this example. Users can be added to this properties file at any time. It is through this access that the configuration script is able to run and make fundamental configuration changes to the provided sample domain. As the comments explain. By default the properties realm expects the entries to be in the format: The admin user has been created to allow administrative access through the management console and the CLI interface.
These accounts are used by slave hosts to connect to the domain controller. The format of this realm is as follows: The user name and password are stored in applicationusers.
Properties declaration of users for the realm 'ApplicationRealm' which is the default realm for application services on a new AS 7. This includes the following protocols: This makes the application-roles. The format of this file is as follows: The application users are created and stored in the same directory. Properties declaration of users roles for the realm 'ApplicationRealm'.
The provided EJBs do not use fine-grained security and therefore. As seen below under authentication.
This file is manually modified to change the server name. The only manual modification is changing the name of this host from its default value of master to a more descriptive name that identifies its node number: It is created for the sake of consistency across the two domains. Each section of this file is inspected separately. As previously mentioned. Management interfaces are also configured as per the default and are not modified in the setup. This is the default setup for the host.
The three EAP instances each belong to a respectively numbered server group. One option is to configure a fixed set of backup groups. To segregate the nodes and avoid the backup messaging servers from attaching to their co-located live servers. This server is named in a way that reflects both the node on which it runs as well as the domain to which it belongs.
In this architecture. However the number of available backup groups can affect the resilience of the system in response to multiple server failures. The group 2 server provides backup servers for groups 1 and 3. For a larger cluster of 5 or 10 nodes. All servers are configured to auto start when the host starts up: The first server designates its live HornetQ server to belong to the backup group 1 and its backup servers are assigned to groups 2 and 3.
The automated configuration scripts remove the sample servers that are configured by default in JBoss EAP 6 and instead create a new server as part of this cluster. For a more thorough discussion of messaging server failover and how the backups are designated.
It also means that a HornetQ backup server never attempts to back up a co-located live server. This pattern changes for a cluster of a different size.
This means that the cluster can theoretically tolerate the failure of any two nodes at a given time. This host name is also picked up as the user name that is used to authenticate against the domain controller. To start the other nodes of the active cluster. The hash value of the the user name and its associated password is provided as the secret value of the server identity: This value is copied from the output of the add-user script when node2 is added as a user.
The rest of the security configuration remains unchanged: In the case of nodes 2 and 3. Management interface configuration also remains unchanged: This file can only be edited when the servers are stopped. This section is left unchanged and includes all the standard available extensions: The first section of the domain configuration file lists the various extensions that are enabled for this domain.
The bulk of the configuration for a cluster or a domain is stored in its domain. This section inspects each segment of the domain configuration in detail. The provided configuration script uses a small number of Java classes to completely rebuild the domain configuration. This section only reviews the first profile. All four profiles are removed and three new profiles are created in their place: Cluster Node Server Group Profile node1 cluster-server-group-1 full-ha-1 node2 cluster-server-group-2 full-ha-2 node3 cluster-server-group-3 full-ha-3 Table 4.
The ExampleDS datasource. This issue is discussed at some length in both this section and previous sections. They only differ in their HornetQ backup group names.
JBoss EAP 6. These three profiles are largely identical.