WebSphere (WebSphere Application Server)为 SOA 环境提供软件,以实现动态的、互联的业务流程,为所有业务情形提供高度有效的应用程序基础架构。WebSphere 是 IBM 的应用程序和集成软件平台,包含所有必要的中间件基础架构(包括服务器、服务和工具),这些基础架构是创建、部署、运行和持续监视企业级 Web 应用程序和跨平台、跨产品的解决方案所必需的。
一、服务器上查看was安装环境是集群模式还是非集群模式
### 🔍 **方法一:通过管理控制台验证(最直观)**
1. **登录管理控制台**
访问:`https://<主机名>:9043/ibm/console`(默认端口9043,根据实际配置可能不同)
2. **检查左侧导航菜单**
- ✅ **集群环境标志**:
- 存在 **"系统管理" > "节点"** 菜单(显示多个节点)
- 存在 **"服务器" > "服务器类型" > "WebSphere Application Server 集群"** 菜单
- 存在 **"部署管理器"** 相关的监控选项
- ❌ **非集群环境标志**:
- 只有 **"服务器" > "服务器类型" > "WebSphere Application Server"**(显示单个服务器)
- 无"集群"相关菜单
3. **查看拓扑图**
- 在控制台首页或 **"系统和应用程序管理" > "拓扑图"** 中:
- 集群环境会显示 **Deployment Manager → 多个节点(Node) → 多个服务器(Server)**
- 非集群环境只显示 **单个服务器(Server)**
---
### ⚙️ **方法二:通过文件系统检查**
1. **检查安装目录结构**
进入WAS安装目录(如 `/opt/IBM/WebSphere/AppServer/profiles`):
```bash
cd /opt/IBM/WebSphere/AppServer/profiles
ls -l
```
- ✅ **集群环境特征**:
- 存在 **`Dmgr01`**(Deployment Manager的profile目录)
- 存在多个节点profile(如 `AppSrv01`, `AppSrv02`)
- ❌ **非集群环境特征**:
- 只有 **单个profile**(如 `AppSrv01`)且名称不含 `Dmgr`
2. **检查节点配置文件**
进入节点的profile目录(如 `AppSrv01/config/cells`):
```bash
cat AppSrv01/config/cells/*/nodes/*/serverindex.xml | grep cluster
```
- 如果输出包含 `<clusterName>` 标签 → 集群环境
- 无输出或报错 → 可能为非集群环境
---
### 🖥 **方法三:通过进程检查**
1. **查看运行中的进程**
在Linux/Unix系统执行:
```bash
ps -ef | grep java
```
- ✅ **集群环境进程**:
- `Deployment Manager`(进程名含 `dmgr`)
- `Node Agent`(进程名含 `nodeagent`)
- 多个`AppServer`进程(名称不同,如 `server1`, `server2`)
- ❌ **非集群环境进程**:
- 仅 **单个`AppServer`进程**(通常名为 `server1`)
- 可能包含 `nodeagent`(但无 `dmgr`)
---
### 📟 **方法四:通过命令行工具验证**
1. **使用 `wsadmin` 查询**
在任意profile的bin目录执行:
```bash
./wsadmin.sh -lang jython -c "print(AdminConfig.getid('/Cluster:/'))"
```
- 返回类似 `WebSphere:platform=common,cell=cellName,cluster=clusterName` → 集群环境
- 返回 **空值或错误** → 非集群环境
2. **检查节点状态**
```bash
./serverStatus.sh -all
```
- ✅ **集群环境输出**:
```
DMGR: 正在运行
nodeagent: 正在运行
server1: 正在运行
server2: 正在运行
```
- ❌ **非集群环境输出**:
```
server1: 正在运行
```
---
### 📌 **关键判断依据总结**
| **特征** | 集群环境 | 非集群环境(独立) |
|------------------------|-----------------------------|---------------------------|
| **管理控制台菜单** | 有"集群"和"节点"菜单 | 仅"服务器"菜单 |
| **Deployment Manager** | 存在(进程和目录) | 不存在 |
| **节点数量** | ≥2个节点 | 仅1个节点(本地节点) |
| **Server数量** | ≥2个(分布在多个节点) | 仅1个server |
| `wsadmin` 查询集群 | 返回集群ID | 返回空/错误 |
| **配置文件** | serverindex.xml含`<cluster>`| 无集群配置 |
---
### 💡 特殊情况说明
1. **单节点集群**:
理论上可能存在(一个节点包含多个server),此时:
- 控制台会显示"集群"菜单
- `serverStatus.sh -all` 会显示多个server
- 但物理节点只有一个(通过 `管理控制台 > 系统管理 > 节点` 确认)
2. **Node Agent的存在**:
- 非集群环境 **也可能有Node Agent**(用于独立服务器的管理)
- **关键区别**:集群环境必须同时存在 **Deployment Manager + Node Agent + 多个Server**
---
通过以上任何一种方法交叉验证,即可100%确定WAS环境类型。**推荐优先使用管理控制台或 `serverStatus.sh -all` 命令**,这两种方式最直接可靠。
ode Agent 和关键 Server 的启动、停止和监控。
7. **控制台启停风险:** 在大型生产集群中,避免频繁在控制台点"启动"/"停止"整个集群,这可能导致所有成员同时启停造成服务中断。应使用滚动重启策略或金丝雀发布等更稳妥的方式。
**启动后验证命令 (在对应 profile bin 目录下):**
* `./serverStatus.sh -all` (Linux/Unix)
* `serverStatus.bat -all` (Windows)
* 这会列出该 Profile 下所有进程(Dmgr, NodeAgent, Servers)的状态。
选择正确的方式并遵循顺序,是确保 WAS 环境稳定启动的关键!💪🏻
二、集群非集群was重启
在 IBM WebSphere Application Server (WAS) 中,"集群式" 和 "非集群"(通常指单服务器或独立服务器)环境的启动方式有显著区别。核心差异在于集群环境需要额外的管理组件(Deployment Manager - Dmgr)来协调多个节点上的服务器进程。
以下是两种环境的主要启动流程:
## 🖥 一、非集群环境(独立服务器 / Standalone Server)
这种环境通常只有一个应用服务器进程(或一个Node包含一个服务器),没有Deployment Manager。启动相对简单。
1. **启动 Node Agent (可选但推荐):**
* Node Agent 管理节点上的服务器进程,处理与 Dmgr 的通信(即使没有 Dmgr,启动它也有利于管理)。**在集群环境中它至关重要,在独立环境启动它也是好的实践。**
* **命令:**
* Linux/Unix: `cd <WAS_HOME>/profiles/<Profile_Name>/bin` 然后 `./startNode.sh`
* Windows: `cd <WAS_HOME>\profiles\<Profile_Name>\bin` 然后 `startNode.bat`
* **验证:** 查看 `startNode.log` (在 `logs/nodeagent` 目录下) 或使用 `./serverStatus.sh -all` (Linux) / `serverStatus.bat -all` (Windows) 检查状态。
2. **启动应用服务器 (Server):**
* 这是实际运行你的应用程序的 JVM 进程。
* **命令:**
* Linux/Unix: `cd <WAS_HOME>/profiles/<Profile_Name>/bin` 然后 `./startServer.sh server1` (将 `server1` 替换为你的服务器实例名,默认为 `server1`)。
* Windows: `cd <WAS_HOME>\profiles\<Profile_Name>\bin` 然后 `startServer.bat server1`。
* **验证:**
* 查看 `startServer.log` (在 `logs/server1` 目录下)。
* 使用 `./serverStatus.sh -all` (Linux) / `serverStatus.bat -all` (Windows) 查看 `server1` 状态应为 `STARTED`。
* 访问管理控制台 (https://<主机名>:9043/ibm/console) 或应用程序 URL。
## 🔄 二、集群环境
集群环境包含一个 Deployment Manager (Dmgr)、一个或多个节点(Node,每个节点上运行 Node Agent),每个节点包含一个或多个应用服务器(这些服务器是集群的成员)。启动需要遵循顺序。
1. **启动 Deployment Manager (Dmgr):**
* Dmgr 是集群的大脑,负责配置管理、集群操作协调。
* **命令:**
* Linux/Unix: `cd <DMGR_HOME>/profiles/<Dmgr_Profile_Name>/bin` 然后 `./startManager.sh`
* Windows: `cd <DMGR_HOME>\profiles\<Dmgr_Profile_Name>\bin` 然后 `startManager.bat`
* **验证:**
* 查看 `startManager.log` (在 `logs/dmgr` 目录下)。
* 访问 Dmgr 的管理控制台 (https://<Dmgr主机名>:9043/ibm/console) 应能成功加载。使用 `./serverStatus.sh -all` 检查 `dmgr` 状态应为 `STARTED`。
2. **启动各节点上的 Node Agent:**
* **在每个托管了集群成员的节点上执行此操作。**
* Node Agent 作为 Dmgr 和该节点上服务器进程之间的中介。
* **命令 (在每个节点的 profile bin 目录下执行):**
* Linux/Unix: `cd <NODE_HOME>/profiles/<Node_Profile_Name>/bin` 然后 `./startNode.sh`
* Windows: `cd <NODE_HOME>\profiles\<Node_Profile_Name>\bin` 然后 `startNode.bat`
* **验证 (在每个节点):**
* 查看 `startNode.log` (在 `logs/nodeagent` 目录下)。
* 使用 `./serverStatus.sh -all` (Linux) / `serverStatus.bat -all` (Windows) 检查 `nodeagent` 状态应为 `STARTED`。
* 回到 **Dmgr 的管理控制台** -> "系统管理" -> "节点",查看对应节点的状态是否变为 **"同步的" (Synchronized)**。这是关键一步,表示节点已准备好接收 Dmgr 的指令。
3. **启动集群或集群成员:**
* **方法一: 通过 Deployment Manager 管理控制台 (推荐)**
* 登录 Dmgr 的管理控制台 (https://<Dmgr主机名>:9043/ibm/console)。
* 导航到 "服务器" -> "服务器类型" -> "WebSphere Application Server 集群"。
* 选择你要启动的集群。
* 点击顶部操作菜单中的 **"启动"**。Dmgr 会将启动命令发送给各节点上的 Node Agent,由 Node Agent 实际启动该集群的所有成员服务器。
* **方法二: 使用 wsadmin 脚本 (适合自动化)**
* 在 Dmgr 的 profile bin 目录下运行 `wsadmin.sh`/`wsadmin.bat`。
* 连接到 Dmgr (通常使用 SOAP 连接): `$AdminControl connect <Dmgr主机名> <SOAP端口>` (默认 8879)
* 获取集群对象并启动:
```jython
clusterName = "Your_Cluster_Name"
cluster = AdminControl.completeObjectName('type=Cluster,name=' + clusterName + ',*')
AdminControl.invoke(cluster, 'start')
```
* **方法三: 在 Dmgr 上使用命令行 (间接)**
* `cd <DMGR_HOME>/profiles/<Dmgr_Profile_Name>/bin`
* Linux: `./startServer.sh <Cluster_Member_Server_Name>` (但更常用控制台或wsadmin启动整个集群)
* **强烈建议使用控制台或 wsadmin 来操作集群整体。**
* **验证:**
* 在 **Dmgr 管理控制台** -> "服务器" -> "服务器类型" -> "WebSphere Application Server 集群" 或 "服务器" -> "所有服务器" 中查看集群成员状态应为 `STARTED`。
* 在 **各节点** 上使用 `./serverStatus.sh -all` / `serverStatus.bat -all` 查看具体的服务器实例状态。
* 查看各集群成员服务器自己的 `startServer.log` (在对应节点的 `logs/<server_name>` 目录下)。
* 访问应用程序的负载均衡 URL 测试功能。
## 📌 关键点总结与注意事项
1. **顺序很重要 (集群):** `Dmgr` -> `Node Agent(s)` (等待节点状态变为"同步的") -> `集群/服务器成员`。
2. **Node Agent 的角色:** 在集群中是 **必需的** 通信桥梁。在独立环境中启动它也是好的实践。
3. **集群启动:** **强烈建议通过 Deployment Manager (控制台或 wsadmin) 来启动整个集群或集群成员**。直接在节点上 `startServer.sh` 启动单个集群成员通常不被推荐,因为这可能绕过 Dmgr 的管理和同步机制,导致配置不一致。如果必须单独启停某个成员,也应**优先使用 Dmgr 控制台**上该成员服务器的操作选项。
4. **配置文件路径:** 确保在正确的 Profile 的 `bin` 目录下执行命令 (`<WAS_HOME>/profiles/<Your_Profile_Name>/bin`)。
5. **日志:** 启动失败时,查看对应的日志文件 (`startManager.log`, `startNode.log`, `startServer.log`) 是首要的故障排除步骤。
6. **生产环境:** 通常会配置操作系统服务 (如 Linux 的 `systemd` 或 Windows 服务) 来自动管理 Dmgr、N