Web server plug-ins
Web server plug-ins enable the web server to communicate requests for dynamic content, such as servlets, to the application server. A web server plug-in is associated with each web server definition. The configuration file (plugin-cfg.xml) that is generated for each plug-in is based on the applications that are routed through the associated web server.
A web server plug-in is used to forward HTTP requests from a supported web server to an application server. Using a web server plug-in to provide communication between a web server and an application server has the following advantages:
- XML-based configuration file
- Standard protocol recognized by firewall products
- Security using HTTPS, replacing proprietary Open Servlet Engine (OSE) over SSL
Each of the supported web server plug-ins runs on a number of operating systems. See Supported Hardware and Software for the product for the most current information about supported web servers.
The default behavior for the web server plug-in is to buffer requests up to 64 kilobytes, and retry the requests if there is no response from the application server. To ensure high availability, and the HTTP requests tend to be large, set the Maximum buffer size used when reading HTTP request content property on the web server plug-in request routing property page in the console to -1. Setting this property to -1 removes the maximum buffer size limit, and enables the web server plug-in to buffer all requests regardless of their size. Requests are retried if the request body fits within the buffer size. To disable all request buffering, and thereby disable retries of requests with request bodies, we can set this property to 0.gotcha
Affinity requests are requests containing a JSESSIONID. Session affinity means that all requests of the same JSESSIONID are sent to the same application server. For example, if the initial request is sent to clone5, then the next affinity request from that same browser is also sent to clone5 regardless of the weight valued specified for the LoadBalanceWeight property in the plugin-cfg.xml file.
If we select Round robin for the Load balancing option Web server plug-in request routing property, and leave the IgnoreAffinityRequests property in the plugin-cfg.xml file set to its default value of true, the affinity requests do not lower the weight. This behavior might cause an uneven distribution of requests across the servers in environments that make use of session affinity. Setting the IgnoreAffinityRequests property to false causes the weight to be lowered every time an affinity request is received, which results in a more balanced round robin environment.
If we select Random for the Load balancing option property, affinity requests are still sent to the same cloneid, but new requests are routed randomly, and the value specified for the LoadBalanceWeight property is ignored.
If a request connection exceeds the time limit specified on the ConnectTimeout property in the plugin-cfg.xml file, or a 5xx error is returned from the application server, the web server plug-in marks the server as down, and attempts to connect to the next application server in the list of primary servers specified for the PrimaryServers property in the plugin-cfg.xml file. If the web server plug-in successfully connects to another application server, all requests that were pending for the down application server are sent to this other application server. All other new and affinity requests are sent to other servers, based on whether round robin or random is the setting for the Load balancing option Web server plug-in request routing property.
Failover typically does not occur the first time that the time limit specified on the ServerIOTimeout property in the plugin-cfg.xml file is exceeded for either a request or a response. Instead, the web server plug-in tries to resend the request to the same application server, using a new stream. If the time specified on the ServerIOTimeout property is exceeded a second time, the web server plug-in marks the server as unavailable, and initiates the failover process.
Avoid trouble: Sending a large number of pending requests to the same application server might impact the performance of that application server if a failover situation occurs. We can use the MaxConnections property to limit the number of requests that might be pending for an application server.gotcha
Running multiple web server child processes
We can configure most web servers to start multiple child processes. In this situation, each child process loads its own instance of the web server. When running multiple web server child processes, remember that:
- Multiple running instances of the web server plug-in cannot share information. Therefore the dynamically changing load balance weight of each application server is not shared between the web server plug-in instances. For example, one instance of the web server plug-in might consider an application server to be running with a weight of 5, while another instance of the web server plug-in might be consider the same application server to be down and unusable. This difference in perspective might cause an incoming request to be handled differently, depending on which web server plug-in instance handles the request.
- The web server plug-in settings are handled on a per instance basis. For example, the MaxConnections property specifies the number of pending requests allowed on that web server, for each web server plug-in instance. If the MaxConnections property is set to 20, and you start three web server child processes, each of the three web server plug-in instances allow 20 pending connections to the same application server, which means that there could be up to 60 pending connections.
- Select a front end for the WAS topology
We can select an intermediary to provide session affinity, failover support, and workload balancing for the WAS topology.
- Web server plug-in connections
The web server plug-ins are used to establish and maintain persistent HTTP and HTTPS connections to application servers.
- Web server plug-in remote user information processing
We can configure the web server with a vendor-acquired authentication module and then configure the web server plug-in to route requests to an application server.
- Private headers
A web server plug-in can use private headers to forward requests for dynamic content, such as servlets, to the application server.
- Gskit install images files
The Global Security Kit (GSKit) installation image files for the WebSphere Web server plug-ins are packaged on the CD with the web server plug-in files.
- Plug-ins: Resources for learning
Use the following links to find relevant supplemental information about web server plug-ins. The information resides on IBM and non-IBM Internet sites, whose sponsors control the technical accuracy of the information.