可以利用 IBM HTTP 服务器机器插件在前端作">负载均衡,将请求分发给多个 Liberty 服务器。Liberty 服务器上的应用可以将应用会话信息保存在数据库中,被多个 Liberty 服务器共享。当某个 Liberty 服务器发生故障时,可用的其他 Liberty 服务器会将故障 Liberty 服务器存在会话数据库中的会话信息接管过来,继续处理,保持服务的持续可用。本文将向您介绍如何启用会话的数据库持久性,会话亲和性,以及如何在某个 Liberty 服务器发生故障时进行故障恢复。
IBM WebSphere Application Server V8.5 提供两类不同的服务器概要文件,一类是众所周知的传统 WebSphere 应用服务器(以下简称 tWAS V8.5) 的概要文件,包括 Cell, Deployment Manager, Application Server, Custom 等;另一类是轻量级、动态的应用服务器 Liberty 服务器概要文件,支持 Web 和 OSGi 应用编程模型,大大地改善了开发者体验,同时可用于生产环境。
使用过 WebSphere 应用服务器的人员都知道,WebSphere 应用服务器 V8.0 以前的版本 ( 包括 V8.0) 支持集群,可以利用集群构建高可用环境,同时支持三种会话持久性,内存到内存,数据库,WebSphere Extreme Scale,可以选择将集群上的应用所产生的会话信息以不同形式存放和复制。在故障发生的时候,能够保证会话信息不丢失,并能够保证服务不间断。
tWAS V8.5 依然能够提供同样的高可用服务,但是 Liberty 目前的版本不支持集群,在 Liberty 应用于生产环境时,随着请求负载的增加,单个 Liberty 可能不再满足用户的需求,需要增加到多个。本文将通过 3 个场景,向您介绍如何利用 IBM HTTP Server 及其插件和 Liberty 搭建高可用环境,以及当故障发生时,如何进行故障恢复。
场景 1:通过 IBM HTTP Server 及其插件分发请求到多个 Liberty 服务器
图 1 中,我们列举了三个 Liberty 服务器作为例子,在它们的前端放置 IBM HTTP Server 及其插件作为负载均衡器,进行请求的分发。有一个数据库服务器,主要用于企业级应用的数据存储,以及会话数据的存放。本文主要讨论 Liberty 的高可用性,此处我们并没有构建数据库和 IBM HTTP Server 的高可用性。
下面将介绍如何搭建这个拓扑环境。
图 1. Liberty 高可用环境拓扑
搭建多个 Liberty 服务器
Liberty 的安装非常简单,您可以通过解压即安装的方式进行安装,也可以通过 IBM 安装管理器 (Installation Manager) 安装 Liberty,也可以通过 Job Manager 将 Liberty 包(包括运行时,应用,服务器配置)分发到多个目标机器上去,快速构建多个 Liberty 服务器环境。该例中使用解压方式。
首先,从 wasdev.net 下载 Liberty 运行时的安装包,在某台机器上解压 Liberty 安装包,通过以下命令创建一个 Liberty 服务器,然后启动之。
<wlp.install.directory>/bin/server.bat/sh create <serverName>
<wlp.install.directory>/bin/server.bat/sh start <serverName>
请注意:此处 <wlp.install.directory> 指的是 Liberty 服务器的解压目录。<serverName> 可以是用户自定义的字符串,作为服务器名。
然后,将应用 WAR 或包含 WAR 的 EAR 包复制到 <wlp.install.directory>/usr/servers/<serverName>/dropins 目录下,然后在 server.xml 中配置该应用所需的 feature、JDBC Provider 及数据库资源。向 Liberty 服务器安装应用有多个方式,这里用的是直接将应用拖放到 dropins 目录下,即对其进行了安装。
最后,保证 Web 应用能够正确运行在 Liberty 服务器上。Liberty 服务器的整个目录,包括运行时、应用、配置,可以被直接复制到其他机器上使用,而不需要重新安装和配置应用。验证多个 Liberty 服务器上的同一个 Web 应用都可以被正确访问。