第 19 章 HTTP 群集和负载平衡
19.1. 介绍
19.1.1. 关于高可用性和负载平衡群集
- 应用服务器实例
- 和内部 JBoss Web 服务器、Apache HTTP 服务器、Microsoft IIS 或 Oracle iPlanet Web 服务器一起使用的 Web 应用程序。
- Stateful、stateless 和 Entity Enterprise JavaBeans (EJB)
- 单点登录(Single Sign On,SSO)机制
- 分布式缓存
- HTTP 会话
- JMS 服务和消息驱动 Bean(Message-driven beans,MDB)
jgroups
和 modcluster
。ha
和 full-ha
配置集都启用了这些子系统。在 JBoss EAP 6 里,这些服务按需要来启动和关闭,但只有配置为 distributable
的应用程序部署在服务器上才会启动这些服务。
19.1.2. 可从高可用性受益的组件
JBoss EAP 6(作为独立服务器运行)的几个实例或服务器组的成员(作为受管域的一部分运行)可以配置为高可用的。这表示如果某个实例或成员停止或从群集消失,它的工作负荷将移至另外一个节点。工作负荷也可以通过这种方式提供负载平衡,所以具有更多、更好资源的服务器或服务器组可以承担更大部分的工作负荷,或者在高负荷时添加额外的能力。
Web 服务器自身就可以使用某种兼容的负载平衡机制进行 HA 群集。最灵活的方式是 mod_cluster
连接器,它和 JBoss EAP 6 容器紧密地集成在一起。其他选择包含 Apache mod_jk
、mod_proxy
连接器或 ISAPI 和 NSAPI 连接器。
根据 Java EE 6 规格,部署的应用程序也可以是高可用性的。 Stateless 或 stateful session EJB 可以进行群集,如果某个节点出现故障,另外一个节点可以接管。对于 stateful session bean,状态可以保持。
19.1.3. HTTP 连接器概述
连接器 | Web 服务器 | 支持的操作系统 | 支持的协议 | 适用于部署状态 | 支持会话关联 |
---|---|---|---|---|---|
mod_cluster | JBoss Enterprise Web Server HTTPD、操作系统(Red Hat Enterprise Linux, Hewlett-Packard HP-UX)提供的 HTTPD | Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris, Hewlett-Packard HP-UX | HTTP, HTTPS, AJP | 是。检测应用程序的部署和卸载并根据应用程序是否部署在某个服务器上动态决定是否将请求指引到该服务器上。 | 是 |
mod_jk | JBoss Enterprise Web Server HTTPD、操作系统(Red Hat Enterprise Linux, Hewlett-Packard HP-UX)提供的 HTTPD | Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris, Hewlett-Packard HP-UX | AJP | 否。不管应用程序的状态,只要容器可用,就将请求指引到这个容器。 | 是 |
mod_proxy | JBoss Enterprise Web Server HTTPD | Red Hat Enterprise Linux\Microsoft Windows Server、Oracle Solaris | HTTP, HTTPS, AJP | 否。不管应用程序的状态,只要容器可用,就将请求指引到这个容器。 | 是 |
ISAPI | Microsoft IIS | Microsoft Windows Server | AJP | 否。不管应用程序的状态,只要容器可用,就将请求指引到这个容器。 | 是 |
NSAPI | Oracle iPlanet Web Server | Oracle Solaris | AJP | 否。不管应用程序的状态,只要容器可用,就将请求指引到这个容器。 | 是 |
了解每个 HTTP 连接器的更多信息
19.1.4. 工作节点
工作节点(worker node),有时候简称为节点,是从一个或多个面向客户的 HTTPD 服务器接受请求的 JBoss EAP 6 服务器。JBoss EAP 6 可以从自己的 HTTPD、JBoss EAP 6 附带的 HTTPD、Apache HTTPD、Microsoft IIS 或 Oracle iPlanet Web Server(以前是 Netscape Web Server)接受请求。
群集节点(Cluster Node)是服务器群集里的成员。群集可以是负载平衡群集、高可用性群集,或者两者皆是。在负载平衡群集里,中央管理者根据不同的情况将负荷均匀地分摊到节点上。在高可用性群集里,某些节点积极运行,而其他节点则进行等待,当活动节点离开群集时开始运行。