1. 首页 > WebSphere教程 > 正文

WebSphere教程FG009-WebSphere集群配置与负载均衡实战

本文档风哥主要介绍WebSphere Application Server 9.0.5的集群配置与负载均衡,包括集群概述、集群类型、集群架构、负载均衡机制、集群创建、集群配置、会话复制、集群管理等内容,风哥教程参考WebSphere官方文档集群管理章节,适合WebSphere管理员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 WebSphere集群概述

WebSphere集群是一组协同工作的应用服务器,提供高可用性、可扩展性和负载均衡能力。WebSphere ND版本支持集群功能,是企业级应用部署的核心架构。学习交流加群风哥微信: itpux-com

WebSphere集群核心优势:

  • 高可用性:故障自动转移,服务持续可用
  • 可扩展性:动态添加节点,水平扩展能力
  • 负载均衡:请求分发,提高处理能力
  • 集中管理:统一配置和管理,简化运维

1.1.1 集群核心概念

# WebSphere集群核心概念

Cell(单元):
– 管理域的基本单位
– 包含多个Node
– 由Deployment Manager管理

Node(节点):
– 物理或逻辑服务器
– 包含多个Server
– 由Node Agent管理

Cluster(集群):
– 一组应用服务器
– 运行相同的应用
– 提供负载均衡和高可用

Server(服务器):
– 应用服务器实例
– 运行Java应用
– 集群成员

# 集群架构示意

┌─────────────────────────────────────────────────────────┐
│ Cell(fgeduCell01) │
│ ┌───────────────────────────────────────────────────┐ │
│ │ Deployment Manager │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Node1 │ │ Node2 │ │ Node3 │ │
│ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │
│ │ │Server1 │ │ │ │Server2 │ │ │ │Server3 │ │ │
│ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │
│ │ Node Agent │ │ Node Agent │ │ Node Agent │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ │ │
│ ┌───────────┴───────────┐ │
│ │ fgeduCluster │ │
│ │ (集群成员: 3个) │ │
│ └───────────────────────┘ │
└─────────────────────────────────────────────────────────┘

1.2 WebSphere集群类型

WebSphere支持两种集群类型:

1.2.1 静态集群

# WebSphere静态集群

特点:
– 预定义的集群成员
– 成员数量固定
– 手动添加/删除成员
– 适合稳定负载

创建方式:
– 通过管理控制台创建
– 通过wsadmin脚本创建

# 静态集群配置示例
集群名称:fgeduCluster
集群成员:
– server1 (Node1)
– server2 (Node2)
– server3 (Node3)

# 静态集群优缺点
优点:
– 配置简单
– 资源可控
– 适合稳定负载

缺点:
– 手动扩展
– 不够灵活
– 需要人工干预

1.2.2 动态集群

# WebSphere动态集群

特点:
– 自动创建集群成员
– 基于策略动态扩展
– 自动负载均衡
– 适合弹性需求

创建方式:
– 定义节点组
– 配置动态集群策略
– 自动创建成员

# 动态集群配置示例
集群名称:fgeduDynamicCluster
节点组:fgeduNodeGroup
最小成员数:2
最大成员数:10
扩展策略:
– CPU使用率 > 70%:增加成员
– CPU使用率 < 30%:减少成员 # 动态集群优缺点 优点: - 自动扩展 - 弹性伸缩 - 资源优化 缺点: - 配置复杂 - 需要监控支持 - 资源需求不确定

1.3 WebSphere集群架构

WebSphere集群架构组件:

1.3.1 架构组件

# WebSphere集群架构组件

1. Deployment Manager(DMgr)
– 管理整个Cell
– 集中配置管理
– 集群协调
– 同步配置到节点

2. Node Agent
– 节点代理进程
– 与DMgr通信
– 同步配置
– 监控节点状态

3. Application Server
– 应用服务器实例
– 运行应用
– 集群成员

4. Web Server
– HTTP服务器
– 请求分发
– 负载均衡
– 静态资源服务

5. Plugin
– Web服务器插件
– 路由请求
– 故障检测
– 会话亲和

# 组件通信流程

客户端 -> Web Server -> Plugin -> Application Server

负载均衡决策

选择合适的集群成员

处理请求

1.4 WebSphere负载均衡机制

WebSphere负载均衡机制:

1.4.1 负载均衡策略

# WebSphere负载均衡策略

1. 轮询(Round Robin)
– 按顺序分发请求
– 默认策略
– 简单高效

2. 加权轮询(Weighted Round Robin)
– 根据权重分发
– 适合异构服务器
– 权重可配置

3. 最少连接(Least Connections)
– 分发到连接最少的服务器
– 适合长连接场景
– 动态调整

4. 基于内容(Content Based)
– 根据请求内容分发
– 适合特定业务场景
– 配置复杂

# 负载均衡配置

Web Server Plugin配置:
plugin-cfg.xml:














# 会话亲和(Session Affinity)
– 同一会话请求分发到同一服务器
– 基于Cookie或URL重写
– 提高缓存效率

风哥提示:WebSphere集群配置是实现高可用和负载均衡的关键。生产环境建议至少配置3个集群成员,并启用会话复制确保故障转移时数据不丢失。

Part02-生产环境规划与建议

2.1 WebSphere集群规划

WebSphere集群规划需要考虑多个因素:

2.1.1 集群规模规划

# WebSphere集群规模规划

1. 成员数量规划
– 最小:2个(高可用最低要求)
– 推荐:3-5个(平衡成本和可用性)
– 大型:5个以上(高负载场景)

2. 节点分布规划
– 单机房:所有节点在同一机房
– 双机房:节点分布在两个机房
– 多机房:节点分布在多个机房

3. 资源配置规划
– CPU:每成员4-16核
– 内存:每成员16-64GB
– 网络:千兆或万兆

# 不同规模集群规划

小型集群(2-3成员):
– 适用:中小型应用
– 可用性:99.9%
– 故障容忍:1个节点

中型集群(4-6成员):
– 适用:中型应用
– 可用性:99.99%
– 故障容忍:2个节点

大型集群(7+成员):
– 适用:大型应用
– 可用性:99.999%
– 故障容忍:3个节点

# 集群规划模板
集群名称:fgeduCluster
集群类型:静态集群
成员数量:3
节点分布:fgedu01, fgedu02, fgedu03
会话复制:启用
负载均衡:轮询

2.2 WebSphere高可用设计

WebSphere集群高可用设计:

2.2.1 高可用架构

# WebSphere高可用架构

1. DMgr高可用
– DMgr主备部署
– 使用共享存储
– 自动故障转移

2. 应用服务器高可用
– 多集群成员
– 故障自动转移
– 会话复制

3. Web Server高可用
– 多Web Server
– 负载均衡器
– 健康检查

4. 数据库高可用
– 数据库集群
– 主从复制
– 故障转移

# 高可用架构示意

┌─────────────────────────────────────────────────────────┐
│ 负载均衡器 │
│ (F5/Nginx/HAProxy) │
└─────────────────────────────────────────────────────────┘

┌───────────────┼───────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ WebServer │ │ WebServer │ │ WebServer │
│ (1) │ │ (2) │ │ (3) │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└───────────────┼───────────────┘

┌───────────┴───────────┐
│ WebSphere集群 │
│ ┌───┐ ┌───┐ ┌───┐ │
│ │S1 │ │S2 │ │S3 │ │
│ └───┘ └───┘ └───┘ │
└───────────────────────┘

┌───────────┴───────────┐
│ 数据库集群 │
│ ┌───┐ ┌───┐ ┌───┐ │
│ │M │ │S1 │ │S2 │ │
│ └───┘ └───┘ └───┘ │
└───────────────────────┘

2.3 WebSphere会话复制规划

WebSphere会话复制规划:

2.3.1 会话复制类型

# WebSphere会话复制类型

1. 内存到内存复制
– 会话数据复制到其他服务器内存
– 低延迟
– 需要足够内存

2. 数据库持久化
– 会话数据存储到数据库
– 高可靠性
– 性能较低

3. 文件持久化
– 会话数据存储到文件
– 简单配置
– 性能较低

# 内存复制模式

1. 单点复制
– 复制到一个备份服务器
– 资源消耗低
– 备份服务器故障会丢失会话

2. 双点复制
– 复制到两个备份服务器
– 高可靠性
– 资源消耗中等

3. 全复制
– 复制到所有服务器
– 最高可靠性
– 资源消耗高

# 会话复制配置建议

场景 复制模式 备份数量
──────────────────────────────────────────
小型应用 单点复制 1
中型应用 双点复制 2
大型/关键应用 全复制 全部

2.4 WebSphere集群监控规划

WebSphere集群监控规划:

2.4.1 监控指标

# WebSphere集群监控指标

1. 集群状态
– 集群运行状态
– 成员数量
– 健康状态

2. 成员状态
– 成员运行状态
– CPU使用率
– 内存使用率
– 请求处理量

3. 会话状态
– 会话数量
– 会话复制状态
– 会话大小

4. 负载均衡
– 请求分发情况
– 响应时间
– 错误率

# 监控工具

1. WebSphere PMI
– 内置监控
– 性能监控基础设施
– 实时监控

2. IBM Tivoli
– 企业级监控
– 告警管理
– 报表分析

3. 第三方工具
– Prometheus + Grafana
– Zabbix
– Nagios

# 监控脚本示例
#!/bin/bash
# cluster_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “=== 集群监控 ===”

# 集群状态
echo “1. 集群状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminClusterManagement.getClusterState(‘fgeduCluster’)” 2>/dev/null

# 集群成员
echo “2. 集群成员:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminClusterManagement.listClusterMembers(‘fgeduCluster’)” 2>/dev/null

# 成员状态
echo “3. 成员状态:”
for member in server1 server2 server3; do
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminControl.getAttribute(AdminControl.queryNames(‘type=ClusterMember,name=$member,*’), ‘state’)” 2>/dev/null
done

echo “=== 监控完成 ===”

Part03-生产环境项目实施方案

3.1 WebSphere集群创建实战

WebSphere集群创建操作:

3.1.1 通过管理控制台创建

# 通过管理控制台创建集群

步骤:
1. 登录管理控制台
https://fgedu-dmgr.net.cn:9043/ibm/console

2. 导航到集群管理
服务器 > 集群 > WebSphere应用程序服务器集群

3. 点击”新建”
– 集群名称:fgeduCluster
– 点击”下一步”

4. 配置第一个成员
– 成员名称:server1
– 选择节点:fgeduNode01
– 点击”应用”

5. 添加其他成员
– 点击”添加成员”
– 成员名称:server2,节点:fgeduNode02
– 成员名称:server3,节点:fgeduNode03

6. 完成创建
– 检查配置摘要
– 点击”完成”

7. 保存配置
– 点击”保存”

8. 启动集群
– 选择集群
– 点击”启动”

3.1.2 通过wsadmin创建

# 通过wsadmin创建集群

# 连接wsadmin
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 创建集群
AdminClusterManagement.createCluster(‘[-clusterName fgeduCluster]’)

# 添加集群成员
AdminClusterManagement.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode01 -memberName server1]’)
AdminClusterManagement.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode02 -memberName server2]’)
AdminClusterManagement.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode03 -memberName server3]’)

# 保存配置
AdminConfig.save()

# 同步节点
AdminNodeManagement.syncActiveNodes()

# 启动集群
AdminClusterManagement.startCluster(‘fgeduCluster’)

# 验证集群状态
print AdminClusterManagement.getClusterState(‘fgeduCluster’)

websphere.cluster.running

# 查看集群成员
print AdminClusterManagement.listClusterMembers(‘fgeduCluster’)

server1
server2
server3

# 完整创建脚本
#!/bin/bash
# create_cluster.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

CLUSTER_NAME=fgeduCluster
NODES=”fgeduNode01 fgeduNode02 fgeduNode03″

echo “创建集群: $CLUSTER_NAME”

/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << EOF # 创建集群 print "创建集群..." AdminClusterManagement.createCluster('[-clusterName $CLUSTER_NAME]') # 添加成员 i = 1 for node in "$NODES".split(): memberName = "server" + str(i) print "添加成员: " + memberName + " 到节点: " + node AdminClusterManagement.createClusterMember('[-clusterName $CLUSTER_NAME -memberNode ' + node + ' -memberName ' + memberName + ']') i = i + 1 # 保存配置 print "保存配置..." AdminConfig.save() # 同步节点 print "同步节点..." AdminNodeManagement.syncActiveNodes() # 启动集群 print "启动集群..." AdminClusterManagement.startCluster('$CLUSTER_NAME') # 验证状态 print "集群状态:" print AdminClusterManagement.getClusterState('$CLUSTER_NAME') EOF echo "集群创建完成"

3.2 WebSphere集群配置实战

WebSphere集群配置操作:

3.2.1 会话复制配置

# WebSphere集群会话复制配置

1. 创建复制域
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 创建复制域
AdminConfig.create(‘ReplicationDomain’, AdminConfig.getid(‘/Cell:fgeduCell01/’),
‘[[name fgeduReplicationDomain] [replicatorEntry []]]’)

# 保存配置
AdminConfig.save()

2. 配置集群会话复制
# 获取集群配置
cluster = AdminConfig.getid(‘/ServerCluster:fgeduCluster/’)

# 启用会话复制
AdminConfig.modify(cluster, ‘[[enableHA true]]’)

# 配置复制域
stateMgr = AdminConfig.list(‘StateManagerProvider’, cluster)
AdminConfig.modify(stateMgr, ‘[[replicationDomain fgeduReplicationDomain]]’)

# 保存配置
AdminConfig.save()

3. 配置Web模块会话复制
# 获取Web容器配置
webContainer = AdminConfig.list(‘WebContainer’, AdminConfig.getid(‘/ServerCluster:fgeduCluster/’))

# 配置会话管理
sessionMgr = AdminConfig.list(‘SessionManager’, webContainer)
AdminConfig.modify(sessionMgr, ‘[[enable true] [sessionTimeout 30]]’)

# 配置复制
tuningParams = AdminConfig.list(‘TuningParams’, sessionMgr)
AdminConfig.modify(tuningParams, ‘[[maxInMemorySessionCount 1000] [allowOverflow true]]’)

# 保存配置
AdminConfig.save()

# 同步并重启
AdminNodeManagement.syncActiveNodes()
AdminClusterManagement.restartCluster(‘fgeduCluster’)

# 验证会话复制
print AdminConfig.showAttribute(sessionMgr, ‘enable’)

true

3.2.2 集群权重配置

# WebSphere集群权重配置

权重说明:
– 权重范围:1-20
– 默认权重:2
– 权重越高,分配的请求越多

# 配置成员权重
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 获取集群成员
members = AdminConfig.list(‘ClusterMember’, AdminConfig.getid(‘/ServerCluster:fgeduCluster/’)).split(‘\n’)

# 设置权重
for member in members:
name = AdminConfig.showAttribute(member, ‘memberName’)
if name == ‘server1’:
AdminConfig.modify(member, ‘[[weight 5]]’)
elif name == ‘server2’:
AdminConfig.modify(member, ‘[[weight 3]]’)
elif name == ‘server3’:
AdminConfig.modify(member, ‘[[weight 2]]’)

# 保存配置
AdminConfig.save()

# 同步节点
AdminNodeManagement.syncActiveNodes()

# 验证权重
for member in members:
name = AdminConfig.showAttribute(member, ‘memberName’)
weight = AdminConfig.showAttribute(member, ‘weight’)
print name + “: weight=” + weight

server1: weight=5
server2: weight=3
server3: weight=2

# 权重配置场景
场景 权重配置
──────────────────────────────────────────
同构服务器 相同权重(默认)
异构服务器 按性能配置权重
新服务器测试 低权重(1-2)
高配服务器 高权重(5-10)

3.3 WebSphere负载均衡配置实战

WebSphere负载均衡配置:

3.3.1 Web Server Plugin配置

# Web Server Plugin配置

1. 生成Plugin配置
# 通过管理控制台
服务器 > 服务器类型 > Web服务器
> 选择Web服务器 > 生成插件

# 通过wsadmin
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminConfig.generatePluginCfg(AdminConfig.getid(‘/WebServer:fgeduweb/’))”

2. Plugin配置文件位置
/IBM/HTTPServer/Plugins/config/webserver1/plugin-cfg.xml

3. Plugin配置示例

























4. 复制Plugin配置到Web服务器
scp /IBM/HTTPServer/Plugins/config/webserver1/plugin-cfg.xml \
fgeduweb:/IBM/HTTPServer/Plugins/config/webserver1/

5. 重启Web服务器
/IBM/HTTPServer/bin/apachectl restart

3.3.2 负载均衡策略配置

# 负载均衡策略配置

1. 轮询策略(默认)

2. 加权轮询策略



3. 最少连接策略

# 会话亲和配置

1. 基于Cookie






2. 基于URL重写

# 故障转移配置









# 健康检查配置





3.4 WebSphere集群管理实战

WebSphere集群管理操作:

3.4.1 集群启动停止

# WebSphere集群启动停止

1. 启动集群
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.startCluster(‘fgeduCluster’)”

启动集群成员: server1
启动集群成员: server2
启动集群成员: server3

2. 停止集群
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.stopCluster(‘fgeduCluster’)”

停止集群成员: server1
停止集群成员: server2
停止集群成员: server3

3. 重启集群
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.restartCluster(‘fgeduCluster’)”

4. 滚动重启
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.rollingRestart(‘fgeduCluster’)”

# 集群状态查看
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminClusterManagement.getClusterState(‘fgeduCluster’)”

websphere.cluster.running

# 集群成员状态
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << EOF members = AdminClusterManagement.listClusterMembers('fgeduCluster').split('\n') for member in members: state = AdminControl.getAttribute(AdminControl.queryNames('type=ClusterMember,name=' + member + ',*'), 'state') print member + ': ' + state EOF server1: STARTED server2: STARTED server3: STARTED

3.4.2 集群成员管理

# WebSphere集群成员管理

1. 添加集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode04 -memberName server4]’)”

2. 删除集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminClusterManagement.deleteClusterMember(‘[-clusterName fgeduCluster -memberName server4]’)”

3. 查看集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminClusterManagement.listClusterMembers(‘fgeduCluster’)”

4. 成员权重调整
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << EOF member = AdminConfig.getid('/ServerCluster:fgeduCluster/ClusterMember:server1/') AdminConfig.modify(member, '[[weight 5]]') AdminConfig.save() EOF # 集群管理脚本 #!/bin/bash # cluster_manage.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn CLUSTER=fgeduCluster ACTION=$1 case $ACTION in start) echo "启动集群: $CLUSTER" /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -username fgeduadmin -password fgedu123 \ -c "AdminClusterManagement.startCluster('$CLUSTER')" ;; stop) echo "停止集群: $CLUSTER" /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -username fgeduadmin -password fgedu123 \ -c "AdminClusterManagement.stopCluster('$CLUSTER')" ;; restart) echo "重启集群: $CLUSTER" /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -username fgeduadmin -password fgedu123 \ -c "AdminClusterManagement.restartCluster('$CLUSTER')" ;; status) echo "集群状态: $CLUSTER" /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -username fgeduadmin -password fgedu123 \ -c "print AdminClusterManagement.getClusterState('$CLUSTER')" ;; *) echo "用法: $0 {start|stop|restart|status}" ;; esac

风哥提示:WebSphere集群管理需要熟悉wsadmin命令,建议编写常用操作的脚本,提高运维效率。生产环境建议使用滚动重启,避免服务中断。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 WebSphere集群部署案例

某企业WebSphere集群部署案例:

4.1.1 案例背景

# WebSphere集群部署案例

企业背景:
– 应用类型:电商系统
– 用户规模:100万+
– 并发用户:5000
– 可用性要求:99.99%

集群规划:
– 集群名称:fgeduShopCluster
– 集群成员:6个
– 节点分布:2个数据中心
– 会话复制:启用

# 架构设计
数据中心A:
– DMgr主节点
– 集群成员:server1, server2, server3
– Web服务器:web1

数据中心B:
– DMgr备节点
– 集群成员:server4, server5, server6
– Web服务器:web2

负载均衡:
– F5 BIG-IP
– 健康检查
– 会话保持

4.1.2 部署实施

# 集群部署实施

1. 创建集群
#!/bin/bash
# deploy_cluster.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

CLUSTER=fgeduShopCluster

echo “创建集群: $CLUSTER”

/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << 'EOF' # 创建集群 AdminClusterManagement.createCluster('[-clusterName fgeduShopCluster]') # 添加数据中心A成员 AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode01A -memberName server1]') AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode02A -memberName server2]') AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode03A -memberName server3]') # 添加数据中心B成员 AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode01B -memberName server4]') AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode02B -memberName server5]') AdminClusterManagement.createClusterMember('[-clusterName fgeduShopCluster -memberNode fgeduNode03B -memberName server6]') # 创建复制域 AdminConfig.create('ReplicationDomain', AdminConfig.getid('/Cell:fgeduCell01/'), '[[name fgeduReplicationDomain] [replicatorEntry []]]') # 配置会话复制 cluster = AdminConfig.getid('/ServerCluster:fgeduShopCluster/') AdminConfig.modify(cluster, '[[enableHA true]]') stateMgr = AdminConfig.list('StateManagerProvider', cluster) AdminConfig.modify(stateMgr, '[[replicationDomain fgeduReplicationDomain]]') # 保存配置 AdminConfig.save() # 同步节点 AdminNodeManagement.syncActiveNodes() # 启动集群 AdminClusterManagement.startCluster('fgeduShopCluster') # 验证 print AdminClusterManagement.getClusterState('fgeduShopCluster') EOF echo "集群部署完成" 2. 配置负载均衡 # F5配置 # 创建Pool # 添加成员:server1-6的9080端口 # 配置健康检查:HTTP /health # 配置会话保持:Source IP 3. 验证集群 # 检查集群状态 /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -c "print AdminClusterManagement.getClusterState('fgeduShopCluster')" websphere.cluster.running # 检查成员状态 for i in 1 2 3 4 5 6; do /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -c "print AdminControl.getAttribute(AdminControl.queryNames('type=ClusterMember,name=server$i,*'), 'state')" done STARTED STARTED STARTED STARTED STARTED STARTED

4.2 WebSphere负载均衡配置案例

WebSphere负载均衡配置案例:

4.2.1 案例背景

# WebSphere负载均衡配置案例

企业背景:
– 应用:电商系统
– Web服务器:IBM HTTP Server
– 集群:6个成员
– 需求:智能负载均衡

配置目标:
– 加权轮询负载均衡
– 会话亲和
– 故障自动转移
– 健康检查

4.2.2 配置实施

# 负载均衡配置实施

1. 配置集群成员权重
# 高配服务器权重更高
server1, server4: weight=5 (16核64GB)
server2, server5: weight=3 (8核32GB)
server3, server6: weight=2 (4核16GB)

/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << 'EOF' cluster = AdminConfig.getid('/ServerCluster:fgeduShopCluster/') members = AdminConfig.list('ClusterMember', cluster).split('\n') for member in members: name = AdminConfig.showAttribute(member, 'memberName') if name in ['server1', 'server4']: AdminConfig.modify(member, '[[weight 5]]') elif name in ['server2', 'server5']: AdminConfig.modify(member, '[[weight 3]]') else: AdminConfig.modify(member, '[[weight 2]]') AdminConfig.save() EOF 2. 生成Plugin配置 /WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \ -username fgeduadmin -password fgedu123 \ -c "AdminConfig.generatePluginCfg(AdminConfig.getid('/WebServer:fgeduweb/'))" 3. 自定义Plugin配置 vi /IBM/HTTPServer/Plugins/config/webserver1/plugin-cfg.xml # 添加加权轮询


















4. 重启Web服务器
/IBM/HTTPServer/bin/apachectl restart

5. 验证负载均衡
# 查看请求分发
tail -f /IBM/HTTPServer/logs/access_log

# 测试请求分发
for i in {1..100}; do
curl -s http://localhost/shop/health > /dev/null
done

# 查看分发统计
grep “health” /IBM/HTTPServer/logs/access_log | awk ‘{print $1}’ | sort | uniq -c

4.3 WebSphere集群故障处理案例

WebSphere集群故障处理案例:

4.3.1 集群成员故障案例

# 集群成员故障案例

故障现象:
集群成员server2无法启动

故障诊断:
1. 检查日志
tail -100 /WebSphere/app/profiles/AppSrv02/logs/server2/SystemOut.log

错误信息:
[4/10/26 10:00:00:000 CST] 00000001 SystemErr R ADMU3027E: 服务器无法启动。端口 9080 已在使用中。

2. 检查端口占用
netstat -tlnp | grep 9080

tcp6 0 0 :::9080 :::* LISTEN 12345/java

3. 分析原因
– 端口被其他进程占用
– 可能是之前的进程未正常退出

解决方案:
1. 停止占用端口的进程
kill 12345

2. 清理临时文件
rm -rf /WebSphere/app/profiles/AppSrv02/temp/*

3. 重启成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “AdminControl.invoke(AdminControl.queryNames(‘type=ClusterMember,name=server2,*’), ‘start’)”

4. 验证
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “print AdminControl.getAttribute(AdminControl.queryNames(‘type=ClusterMember,name=server2,*’), ‘state’)”

STARTED

# 故障处理结果
问题原因:端口被占用
解决方案:停止占用进程,重启成员
处理时间:5分钟

4.3.2 会话复制失败案例

# 会话复制失败案例

故障现象:
用户登录后,刷新页面需要重新登录

故障诊断:
1. 检查会话复制配置
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “print AdminConfig.showAttribute(AdminConfig.getid(‘/ServerCluster:fgeduCluster/’), ‘enableHA’)”

true

2. 检查复制域
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “print AdminConfig.list(‘ReplicationDomain’)”

(fgeduCell01/fgeduReplicationDomain)

3. 检查日志
grep -i “replication” /WebSphere/app/profiles/AppSrv01/logs/server1/SystemOut.log

[4/10/26 10:00:00:000 CST] 00000001 DRSImpl E DRS0001E: 无法建立复制连接

4. 分析原因
– 防火墙阻止复制端口
– 复制端口默认:9352

解决方案:
1. 检查防火墙
iptables -L -n | grep 9352

2. 开放复制端口
iptables -I INPUT -p tcp –dport 9352 -j ACCEPT
service iptables save

3. 重启集群
AdminClusterManagement.restartCluster(‘fgeduCluster’)

4. 验证会话复制
# 登录应用
# 刷新页面
# 检查是否保持登录状态

# 故障处理结果
问题原因:防火墙阻止复制端口
解决方案:开放端口
处理时间:10分钟

Part05-风哥经验总结与分享

5.1 WebSphere集群运维检查清单

WebSphere集群运维检查清单:

# WebSphere集群运维检查清单

每日检查:
□ 集群运行状态
□ 成员运行状态
□ 会话复制状态
□ 负载均衡状态
□ 错误日志检查

每周检查:
□ 集群性能分析
□ 会话统计
□ 负载分布
□ 资源使用
□ 配置同步状态

每月检查:
□ 集群容量评估
□ 高可用测试
□ 故障转移测试
□ 配置审计
□ 文档更新

# 集群健康检查脚本
#!/bin/bash
# cluster_health.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

CLUSTER=fgeduCluster

echo “=== 集群健康检查 ===”

# 集群状态
echo “1. 集群状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminClusterManagement.getClusterState(‘$CLUSTER’)” 2>/dev/null

# 成员状态
echo “2. 成员状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << 'EOF' 2>/dev/null

members = AdminClusterManagement.listClusterMembers(‘fgeduCluster’).split(‘\n’)
for member in members:
if member:
state = AdminControl.getAttribute(AdminControl.queryNames(‘type=ClusterMember,name=’ + member + ‘,*’), ‘state’)
print member + ‘: ‘ + state

EOF

# 会话复制
echo “3. 会话复制状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminConfig.showAttribute(AdminConfig.getid(‘/ServerCluster:$CLUSTER/’), ‘enableHA’)” 2>/dev/null

# 应用状态
echo “4. 应用状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminApp.list()” 2>/dev/null

echo “=== 检查完成 ===”

5.2 WebSphere集群常见问题

WebSphere集群常见问题及解决方案:

5.2.1 常见问题汇总

# WebSphere集群常见问题

问题1:集群成员无法启动
原因:端口冲突、资源不足、配置错误
解决:检查端口、检查资源、检查配置

问题2:会话复制失败
原因:网络问题、防火墙、配置错误
解决:检查网络、开放端口、检查配置

问题3:负载不均衡
原因:权重配置、Plugin配置、会话亲和
解决:调整权重、检查Plugin、检查会话配置

问题4:集群同步失败
原因:网络问题、DMgr故障、配置冲突
解决:检查网络、检查DMgr、检查配置

问题5:故障转移失败
原因:会话复制未启用、健康检查失败
解决:启用会话复制、检查健康检查

问题6:性能下降
原因:资源不足、配置不当、应用问题
解决:增加资源、优化配置、优化应用

5.3 WebSphere集群最佳实践

基于多年WebSphere运维经验,总结集群最佳实践:

5.3.1 集群设计原则

  • 高可用优先:至少3个成员,启用会话复制
  • 负载均衡:合理配置权重,使用健康检查
  • 容灾设计:多机房部署,数据备份
  • 监控完善:实时监控,及时告警

5.3.2 集群运维建议

  • 自动化运维:使用脚本管理集群
  • 滚动更新:避免全量重启
  • 定期演练:故障转移演练
  • 文档完善:记录配置和变更
生产环境建议:WebSphere集群是企业级应用的核心架构,需要精心设计和持续运维。建议建立完善的监控体系,定期进行故障演练,确保集群稳定运行。from WebSphere视频:www.itpux.com

本文档详细介绍了WebSphere 9.0.5的集群配置与负载均衡,包括集群概述、集群类型、集群架构、负载均衡机制、集群创建、集群配置、会话复制、集群管理等内容。通过学习本文档,读者可以掌握WebSphere集群配置和管理的方法和最佳实践。更多视频教程www.fgedu.net.cn

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息