1. 首页 > WebSphere教程 > 正文

WebSphere教程FG023-WebSphere集群扩容与缩容实战操作

本文档风哥主要介绍WebSphere Application Server 9.0.5的集群扩容与缩容操作,包括扩容流程、缩容流程、动态扩缩容等内容,风哥教程参考WebSphere官方文档集群管理章节,适合WebSphere管理员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 集群扩缩容概述

集群扩缩容是根据业务需求动态调整集群规模的能力。学习交流加群风哥微信: itpux-com

扩缩容场景:

  • 业务增长:用户量增加,需要扩容
  • 业务高峰:促销活动,临时扩容
  • 资源优化:资源闲置,需要缩容
  • 成本控制:降低运营成本

1.1.1 扩缩容架构

# 集群扩缩容架构

┌─────────────────────────────────────────────────────────┐
│ 扩缩容架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 负载均衡器 │ │
│ │ IHS / F5 / Nginx │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ WebSphere集群 │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │Node1│ │Node2│ │Node3│ │NodeN│ │ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ │ │
│ │ ↑ 扩容 ↑ ↓ 缩容 ↓ │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 数据库/存储 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘

# 扩缩容类型

类型 描述 触发方式
──────────────────────────────────────────────────────
手动扩容 手动添加/删除节点 管理员操作
自动扩容 基于规则自动调整 监控触发
定时扩容 定时执行扩缩容 计划任务
预测扩容 基于预测模型调整 AI预测

# 扩缩容指标

指标 扩容阈值 缩容阈值
──────────────────────────────────────────────────────
CPU使用率 > 80% < 30% 内存使用率 > 80% < 40% 请求响应时间 > 2秒 < 200ms 并发连接数 > 80% < 30% 队列长度 > 100 < 10

1.2 扩缩容类型

扩缩容类型介绍:

1.2.1 垂直扩缩容

# 垂直扩缩容(Scale Up/Down)

1. 垂直扩容(Scale Up)
定义:增加单个节点的资源配置
操作:增加CPU、内存、磁盘

优点:
– 实施简单
– 不影响应用架构
– 无需修改负载均衡

缺点:
– 有上限限制
– 需要停机
– 成本较高

适用场景:
– 单机性能不足
– 无法水平扩展
– 临时性能提升

2. 垂直缩容(Scale Down)
定义:减少单个节点的资源配置
操作:减少CPU、内存

优点:
– 节省资源
– 降低成本

缺点:
– 可能影响性能
– 需要停机

# 垂直扩容示例

# 修改JVM内存
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

server = AdminConfig.getid(‘/Server:server1/’)
jvm = AdminConfig.list(‘JavaVirtualMachine’, server)

# 垂直扩容:增加堆内存
AdminConfig.modify(jvm, ‘[[initialHeapSize 4096] [maximumHeapSize 8192]]’)

AdminConfig.save()

# 重启服务器生效
AdminControl.invoke(AdminControl.queryNames(‘type=Server,process=server1,*’), ‘restart’)

1.2.2 水平扩缩容

# 水平扩缩容(Scale Out/In)

1. 水平扩容(Scale Out)
定义:增加集群中的节点数量
操作:添加新的应用服务器节点

优点:
– 理论上无上限
– 无需停机
– 线性扩展能力

缺点:
– 实施复杂
– 需要修改负载均衡
– 管理复杂度增加

适用场景:
– 业务快速增长
– 高可用需求
– 大规模并发

2. 水平缩容(Scale In)
定义:减少集群中的节点数量
操作:移除应用服务器节点

优点:
– 节省资源
– 降低成本
– 简化管理

缺点:
– 需要迁移流量
– 可能影响可用性

# 水平扩容示例

# 添加新节点到集群
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 创建新成员
AdminTask.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode03 -memberName server3]’)

AdminConfig.save()

# 同步节点
AdminNodeManagement.syncNode(‘fgeduNode03’)

# 启动新成员
AdminControl.invoke(AdminControl.queryNames(‘type=Server,process=server3,*’), ‘start’)

1.3 扩缩容原则

扩缩容原则:

1.3.1 扩缩容策略

# 扩缩容原则

1. 扩容原则
原则 说明
──────────────────────────────────────────────────────
提前规划 预估业务增长,提前扩容
渐进扩容 逐步增加,观察效果
验证测试 扩容后验证功能和性能
监控观察 持续监控扩容效果

2. 缩容原则
原则 说明
──────────────────────────────────────────────────────
安全第一 确保不影响业务
流量迁移 先迁移流量再缩容
数据备份 缩容前备份配置
监控观察 观察缩容后影响

3. 扩缩容时机
时机 操作 判断依据
──────────────────────────────────────────────────────
业务高峰前 扩容 历史数据分析
CPU持续高位 扩容 监控告警
响应时间过长 扩容 性能监控
资源闲置 缩容 资源利用率低
业务低谷 缩容 历史数据分析

# 扩缩容决策矩阵

┌─────────────────────────────────────────────────────────┐
│ 扩缩容决策 │
├─────────────────────────────────────────────────────────┤
│ │
│ 高 │ 扩容区域 │
│ │ ┌─────────────────┐ │
│ CPU│ │ 立即扩容 │ │
│ │ │ CPU > 80% │ │
│ │ │ 响应 > 2s │ │
│ 80%├──────────────┤ ├─────────────────┤
│ │ 观察区域 │ 正常区域 │ 观察区域 │
│ │ 可考虑扩容 │ │ 可考虑缩容 │
│ 50%├──────────────┤ 正常运行 ├─────────────────┤
│ │ │ │ │
│ │ │ 考虑缩容 │ │
│ 30%│ │ CPU < 30% │ │ │ │ └─────────────────┘ │ │ │ 缩容区域 │ │ 低 └───────────────────────────────────────────────────┤ │ 低 响应时间 高 │ └─────────────────────────────────────────────────────────┘

1.4 扩缩容工具

扩缩容工具介绍:

1.4.1 常用工具

# 扩缩容工具

1. WebSphere管理工具
工具 用途 命令
──────────────────────────────────────────────────────
wsadmin 脚本管理 wsadmin.sh
管理控制台 图形化管理 控制台操作
AdminTask 管理任务 AdminTask.*

2. 节点管理命令
命令 用途
──────────────────────────────────────────────────────
addNode.sh 添加节点到Cell
removeNode.sh 从Cell移除节点
syncNode.sh 同步节点配置

3. 集群管理命令
命令 用途
──────────────────────────────────────────────────────
createClusterMember 创建集群成员
deleteClusterMember 删除集群成员
startCluster 启动集群
stopCluster 停止集群

# 扩缩容脚本模板

#!/bin/bash
# scale_cluster.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

ACTION=$1
NODE_NAME=$2

case $ACTION in
“expand”)
echo “执行扩容:添加节点 $NODE_NAME”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminTask.createClusterMember(‘[-clusterName fgeduCluster -memberNode $NODE_NAME -memberName server_${NODE_NAME}]’)”
;;
“shrink”)
echo “执行缩容:移除节点 $NODE_NAME”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminTask.deleteClusterMember(‘[-clusterName fgeduCluster -memberNode $NODE_NAME]’)”
;;
*)
echo “用法: $0 expand|shrink node_name”
;;
esac

风哥提示:扩缩容操作需要谨慎执行,建议先在测试环境验证,生产环境操作前做好备份和回滚准备。

Part02-生产环境规划与建议

2.1 扩缩容规划

扩缩容规划:

2.1.1 规划策略

# 扩缩容规划

1. 容量评估
评估项 当前值 目标值
──────────────────────────────────────────────────────
节点数量 2 按需
单节点CPU 8核 按需
单节点内存 16GB 按需
集群TPS 500 按需

2. 扩容规划
场景 扩容方案 预期效果
──────────────────────────────────────────────────────
日常增长 每季度评估扩容 满足增长
业务高峰 提前1周扩容 应对高峰
突发流量 自动扩容 快速响应

3. 缩容规划
场景 缩容方案 预期效果
──────────────────────────────────────────────────────
业务低谷 定时缩容 节省资源
资源优化 按需缩容 降低成本

# 扩缩容计划模板

项目名称:fgedu生产环境扩缩容计划

当前状态:
– 集群名称:fgeduCluster
– 节点数量:2个
– 单节点配置:8核/16GB

扩容计划:
┌─────────────────────────────────────────────────────────┐
│ 扩容计划 │
├─────────────────────────────────────────────────────────┤
│ 时间:2026年4月15日 │
│ 操作:添加2个新节点 │
│ │
│ 步骤: │
│ 1. 准备新服务器(已完成) │
│ 2. 安装WebSphere(已完成) │
│ 3. 创建Profile(待执行) │
│ 4. 添加节点到Cell(待执行) │
│ 5. 创建集群成员(待执行) │
│ 6. 同步配置(待执行) │
│ 7. 启动服务(待执行) │
│ 8. 验证测试(待执行) │
│ │
│ 回滚方案: │
│ 如遇问题,移除新添加的节点 │
└─────────────────────────────────────────────────────────┘

2.2 容量规划

容量规划:

2.2.1 容量计算

# 容量规划

1. 性能基准
指标 单节点能力 集群能力(2节点)
──────────────────────────────────────────────────────
TPS 300 600
并发用户 500 1000
响应时间 < 500ms < 500ms 2. 容量计算公式 所需节点数 = 目标TPS / 单节点TPS × 冗余系数 示例: 目标TPS:1500 单节点TPS:300 冗余系数:1.2 所需节点数 = 1500 / 300 × 1.2 = 6个节点 3. 资源规划 节点数 CPU总核数 内存总量 ────────────────────────────────────────────────────── 2节点 16核 32GB 4节点 32核 64GB 6节点 48核 96GB 8节点 64核 128GB # 容量规划脚本 #!/bin/bash # capacity_planning.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn TARGET_TPS=$1 NODE_TPS=300 REDUNDANCY=1.2 if [ -z "$TARGET_TPS" ]; then echo "用法: $0 目标TPS" exit 1 fi NODES=$(echo "scale=0; $TARGET_TPS / $NODE_TPS * $REDUNDANCY" | bc) NODES=$((NODES + 1)) echo "=== 容量规划结果 ===" echo "目标TPS:$TARGET_TPS" echo "单节点TPS:$NODE_TPS" echo "冗余系数:$REDUNDANCY" echo "所需节点数:$NODES" echo "所需CPU:$((NODES * 8))核" echo "所需内存:$((NODES * 16))GB" 执行结果: ./capacity_planning.sh 1500 === 容量规划结果 === 目标TPS:1500 单节点TPS:300 冗余系数:1.2 所需节点数:7 所需CPU:56核 所需内存:112GB

2.3 测试规划

测试规划:

2.3.1 测试策略

# 测试规划

1. 扩容测试
测试项 测试内容 通过标准
──────────────────────────────────────────────────────
节点添加 新节点正常加入 加入成功
配置同步 配置正确同步 配置一致
应用部署 应用正确部署 应用启动
负载均衡 请求正确分发 分发均匀
功能测试 功能正常 功能正常

2. 缩容测试
测试项 测试内容 通过标准
──────────────────────────────────────────────────────
流量迁移 流量正确迁移 无请求失败
节点移除 节点正确移除 移除成功
资源释放 资源正确释放 资源释放
功能测试 功能正常 功能正常

3. 性能测试
测试项 测试内容 通过标准
──────────────────────────────────────────────────────
扩容后性能 性能提升验证 性能提升
缩容后性能 性能影响验证 性能达标
稳定性测试 长时间运行 无异常

# 测试脚本

#!/bin/bash
# scale_test.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “=== 扩缩容测试 ===”

# 1. 功能测试
echo “1. 功能测试:”
curl -s http://localhost:9080/fgedu-app/health

# 2. 负载均衡测试
echo “”
echo “2. 负载均衡测试:”
for i in {1..10}; do
curl -s http://localhost:9080/fgedu-app/server | grep “server”
done

# 3. 性能测试
echo “”
echo “3. 性能测试:”
ab -n 1000 -c 100 http://localhost:9080/fgedu-app/

echo “”
echo “=== 测试完成 ===”

2.4 监控规划

监控规划:

2.4.1 监控策略

# 监控规划

1. 监控指标
指标 监控方式 告警阈值
──────────────────────────────────────────────────────
节点状态 PMI 节点停止
CPU使用率 PMI > 80%
内存使用率 PMI > 80%
请求响应时间 监控脚本 > 2秒
集群成员数 运行时查询 异常变化

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

LOG_FILE=/WebSphere/logs/cluster_monitor.log

while true; do
# 获取集群成员数
MEMBERS=$(/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print len(AdminControl.queryNames(‘type=ClusterMember,cluster=fgeduCluster,*’).splitlines())” \
2>/dev/null)

# 获取集群状态
STATE=$(/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “cluster=AdminControl.queryNames(‘type=Cluster,cluster=fgeduCluster,*’); print AdminControl.getAttribute(cluster, ‘state’)” \
2>/dev/null)

# 记录日志
echo “$(date): 成员数=$MEMBERS, 状态=$STATE” >> $LOG_FILE

# 检查告警
if [ “$STATE” != “websphere.cluster.running” ]; then
echo “告警:集群状态异常 $STATE”
fi

sleep 60
done

3. 自动扩缩容触发
触发条件 操作
──────────────────────────────────────────────────────
CPU > 80% 持续5分钟 触发扩容
CPU < 30% 持续10分钟 触发缩容 响应时间 > 2秒 触发扩容

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

3.1 集群扩容实战

集群扩容操作:

3.1.1 添加新节点

# 集群扩容操作

1. 准备新服务器
# 检查系统环境
uname -a
Linux fgedu-node3 4.18.0-348.el8.x86_64 #1 SMP …

# 检查Java版本
java -version
java version “1.8.0_301”

# 检查网络
ping fgedu.net.cn
PING fgedu.net.cn (192.168.1.100) 56(84) bytes of data.

2. 安装WebSphere
# 解压安装包
tar -xzf WAS_ND_9.0.5.tar.gz -C /tmp

# 执行安装
/tmp/WAS/install -options /tmp/responsefile.nd.txt -silent

# 验证安装
/WebSphere/app/bin/versionInfo.sh

3. 创建Profile
/WebSphere/app/bin/manageprofiles.sh -create \
-profileName AppSrv03 \
-profilePath /WebSphere/app/profiles/AppSrv03 \
-templatePath /WebSphere/app/profileTemplates/managed \
-nodeName fgeduNode03 \
-cellName fgeduCell01 \
-hostName fgedu-node3.fgedu.net.cn

INSTCONFSUCCESS: 成功创建Profile

4. 添加节点到Cell
/WebSphere/app/profiles/AppSrv03/bin/addNode.sh \
fgedu.net.cn 8879 \
-username fgeduadmin -password fgedu123

执行结果:
ADMU0001I: 正在执行 addNode 工具
ADMU0002I: 正在添加节点
ADMU0003I: 节点已成功添加
ADMU0004I: 正在同步配置
ADMU0005I: 同步完成

5. 创建集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 创建集群成员
AdminTask.createClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode03 -memberName server3 -genUniquePorts true]’)

AdminConfig.save()

执行结果:
成员 server3 已创建

6. 同步配置
# 同步节点
AdminNodeManagement.syncNode(‘fgeduNode03’)

执行结果:
节点 fgeduNode03 同步完成

7. 启动新成员
# 启动节点代理
/WebSphere/app/profiles/AppSrv03/bin/startNode.sh

# 启动服务器
/WebSphere/app/profiles/AppSrv03/bin/startServer.sh server3

执行结果:
ADMU3000I: 服务器 server3 已启动

8. 验证扩容
# 检查集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminControl.queryNames(‘type=ClusterMember,cluster=fgeduCluster,*’)”

WebSphere:name=server1,process=server1,platform=proxy,node=fgeduNode01,…
WebSphere:name=server2,process=server2,platform=proxy,node=fgeduNode02,…
WebSphere:name=server3,process=server3,platform=proxy,node=fgeduNode03,…

# 扩容成功
集群成员数:3个
扩容时间:约30分钟

3.2 集群缩容实战

集群缩容操作:

3.2.1 移除节点

# 集群缩容操作

1. 检查节点状态
# 查看集群成员状态
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “members=AdminControl.queryNames(‘type=ClusterMember,cluster=fgeduCluster,*’).splitlines(); [print AdminControl.getAttribute(m, ‘process’) + ‘: ‘ + AdminControl.getAttribute(m, ‘state’) for m in members]”

server1: RUNNING
server2: RUNNING
server3: RUNNING

2. 迁移流量
# 在负载均衡器中禁用节点
# IHS配置:注释掉该节点的路由

# 等待现有请求完成
sleep 60

3. 停止服务器
# 停止服务器
/WebSphere/app/profiles/AppSrv03/bin/stopServer.sh server3 \
-username fgeduadmin -password fgedu123

执行结果:
ADMU3000I: 服务器 server3 已停止

# 停止节点代理
/WebSphere/app/profiles/AppSrv03/bin/stopNode.sh \
-username fgeduadmin -password fgedu123

4. 删除集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 删除集群成员
AdminTask.deleteClusterMember(‘[-clusterName fgeduCluster -memberNode fgeduNode03]’)

AdminConfig.save()

执行结果:
成员已删除

5. 移除节点
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123

# 移除节点
AdminTask.removeNode(‘[-nodeName fgeduNode03]’)

AdminConfig.save()

执行结果:
节点 fgeduNode03 已移除

6. 验证缩容
# 检查集群成员
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminControl.queryNames(‘type=ClusterMember,cluster=fgeduCluster,*’)”

WebSphere:name=server1,process=server1,platform=proxy,node=fgeduNode01,…
WebSphere:name=server2,process=server2,platform=proxy,node=fgeduNode02,…

# 缩容成功
集群成员数:2个
缩容时间:约20分钟

# 缩容脚本
#!/bin/bash
# shrink_cluster.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

NODE_NAME=$1

echo “=== 开始缩容:$NODE_NAME ===”

# 1. 停止服务器
echo “1. 停止服务器…”
/WebSphere/app/profiles/$NODE_NAME/bin/stopServer.sh server* \
-username fgeduadmin -password fgedu123

# 2. 停止节点
echo “2. 停止节点…”
/WebSphere/app/profiles/$NODE_NAME/bin/stopNode.sh \
-username fgeduadmin -password fgedu123

# 3. 删除集群成员
echo “3. 删除集群成员…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminTask.deleteClusterMember(‘[-clusterName fgeduCluster -memberNode $NODE_NAME]’)”

# 4. 移除节点
echo “4. 移除节点…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminTask.removeNode(‘[-nodeName $NODE_NAME]’)”

echo “=== 缩容完成 ===”

3.3 动态扩缩容实战

动态扩缩容操作:

3.3.1 自动扩缩容实现

# 动态扩缩容实现

1. 自动扩缩容脚本
#!/bin/bash
# auto_scale.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 配置
MIN_NODES=2
MAX_NODES=10
SCALE_UP_THRESHOLD=80
SCALE_DOWN_THRESHOLD=30
CHECK_INTERVAL=60

# 获取CPU使用率
get_cpu_usage() {
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “stats=AdminControl.queryNames(‘type=Server,*’); print AdminControl.getAttribute(stats, ‘cpuUsage’)” \
2>/dev/null
}

# 获取当前节点数
get_node_count() {
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print len(AdminControl.queryNames(‘type=ClusterMember,cluster=fgeduCluster,*’).splitlines())” \
2>/dev/null
}

# 扩容
scale_up() {
CURRENT=$(get_node_count)
if [ $CURRENT -lt $MAX_NODES ]; then
echo “执行扩容…”
# 调用扩容脚本
/WebSphere/scripts/expand_cluster.sh
else
echo “已达到最大节点数 $MAX_NODES”
fi
}

# 缩容
scale_down() {
CURRENT=$(get_node_count)
if [ $CURRENT -gt $MIN_NODES ]; then
echo “执行缩容…”
# 调用缩容脚本
/WebSphere/scripts/shrink_cluster.sh
else
echo “已达到最小节点数 $MIN_NODES”
fi
}

# 主循环
while true; do
CPU=$(get_cpu_usage)
NODES=$(get_node_count)

echo “$(date): CPU=$CPU%, 节点数=$NODES”

if [ $CPU -gt $SCALE_UP_THRESHOLD ]; then
echo “CPU超过阈值,触发扩容”
scale_up
elif [ $CPU -lt $SCALE_DOWN_THRESHOLD ]; then
echo “CPU低于阈值,触发缩容”
scale_down
fi

sleep $CHECK_INTERVAL
done

2. 定时扩缩容
# crontab配置

# 工作时间扩容(8:00-20:00)
0 8 * * 1-5 /WebSphere/scripts/scale_up.sh
# 非工作时间缩容(20:00-8:00)
0 20 * * 1-5 /WebSphere/scripts/scale_down.sh

3. 扩缩容历史记录
# 记录扩缩容操作
LOG_FILE=/WebSphere/logs/scale_history.log

log_scale() {
echo “$(date): $1” >> $LOG_FILE
}

# 扩容时记录
log_scale “扩容: 添加节点 fgeduNode03”

# 缩容时记录
log_scale “缩容: 移除节点 fgeduNode03”

3.4 扩缩容验证实战

扩缩容验证操作:

3.4.1 验证测试

# 扩缩容验证

1. 功能验证
# 检查应用状态
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “apps=AdminControl.queryNames(‘type=Application,*’).splitlines(); [print AdminControl.getAttribute(a, ‘name’) + ‘: ‘ + AdminControl.getAttribute(a, ‘state’) for a in apps]”

fgedu-app: RUNNING
fgedu-api: RUNNING

# 测试应用功能
curl http://localhost:9080/fgedu-app/health

{“status”: “UP”}

2. 负载均衡验证
# 测试请求分发
for i in {1..20}; do
curl -s http://localhost:9080/fgedu-app/server | grep “server”
done

server: server1
server: server2
server: server3
server: server1
server: server2
server: server3

# 验证分发均匀
# 统计每个服务器处理的请求数

3. 性能验证
# 压力测试
ab -n 10000 -c 200 http://localhost:9080/fgedu-app/

This is ApacheBench, Version 2.3
Complete requests: 10000
Failed requests: 0
Requests per second: 892.34 [#/sec]
Time per request: 224.123 [ms]

# 性能对比
扩容前:500 TPS
扩容后:900 TPS
性能提升:80%

4. 稳定性验证
# 长时间运行测试
for i in {1..100}; do
echo “测试 $i/100”
curl -s http://localhost:9080/fgedu-app/health
sleep 60
done

# 验证结果
┌─────────────────────────────────────────────────────────┐
│ 扩缩容验证报告 │
├─────────────────────────────────────────────────────────┤
│ 验证时间:2026年4月10日 │
│ │
│ 功能验证: │
│ – 应用状态:正常 │
│ – 功能测试:通过 │
│ │
│ 负载均衡验证: │
│ – 请求分发:均匀 │
│ – 会话保持:正常 │
│ │
│ 性能验证: │
│ – TPS:892(提升78%) │
│ – 响应时间:224ms │
│ │
│ 稳定性验证: │
│ – 运行时间:100分钟 │
│ – 错误率:0% │
│ │
│ 结论:扩容成功 │
└─────────────────────────────────────────────────────────┘

风哥提示:扩缩容后需要充分验证,确保功能正常、性能达标、负载均衡正确。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 业务高峰扩容案例

业务高峰扩容案例:

4.1.1 案例背景

# 业务高峰扩容案例

企业背景:
– 电商企业,双11促销活动
– 预估流量增长300%
– 需要提前扩容应对

扩容方案:
1. 容量评估
当前配置:
– 节点数:2个
– 单节点TPS:300
– 当前TPS:600

目标配置:
– 预估TPS:1800
– 所需节点:6个
– 需扩容:4个节点

2. 扩容时间表
时间 操作
──────────────────────────────────────────────────────
T-7天 准备服务器
T-5天 安装WebSphere
T-3天 添加节点到集群
T-2天 功能测试
T-1天 性能测试
T日 监控观察

3. 执行过程
# T-3天:添加节点
for node in node3 node4 node5 node6; do
echo “添加节点 $node”
/WebSphere/scripts/add_node.sh $node
done

# T-2天:功能测试
/WebSphere/scripts/function_test.sh

# T-1天:性能测试
ab -n 50000 -c 500 http://fgedu.net.cn/fgedu-app/

执行结果:
Requests per second: 1850.23 [#/sec]

4. 活动期间监控
# 实时监控
watch -n 10 ‘/WebSphere/scripts/cluster_status.sh’

# 扩容结果
┌─────────────────────────────────────────────────────────┐
│ 扩容结果报告 │
├─────────────────────────────────────────────────────────┤
│ 扩容时间:2026年11月1日-11日 │
│ │
│ 扩容前: │
│ – 节点数:2个 │
│ – TPS:600 │
│ │
│ 扩容后: │
│ – 节点数:6个 │
│ – TPS:1850 │
│ │
│ 活动期间: │
│ – 峰值TPS:1650 │
│ – 平均响应时间:320ms │
│ – 错误率:0.01% │
│ │
│ 结论:扩容成功,平稳度过高峰 │
└─────────────────────────────────────────────────────────┘

4.2 资源优化缩容案例

资源优化缩容案例:

4.2.1 案例背景

# 资源优化缩容案例

企业背景:
– 业务调整,流量下降
– 资源利用率低
– 需要缩容降低成本

缩容方案:
1. 资源评估
当前配置:
– 节点数:6个
– CPU使用率:25%
– 内存使用率:30%

目标配置:
– 节点数:3个
– 预估CPU使用率:50%
– 预估内存使用率:60%

2. 缩容步骤
步骤1:流量分析
# 分析各节点流量
for i in {1..6}; do
echo “节点 $i 流量:”
curl -s http://node$i:9080/fgedu-app/metrics | grep requests
done

步骤2:选择缩容节点
选择流量较低的节点:node4, node5, node6

步骤3:迁移流量
# 在负载均衡器禁用节点
# 等待现有请求完成

步骤4:执行缩容
for node in node4 node5 node6; do
echo “缩容节点 $node”
/WebSphere/scripts/remove_node.sh $node
done

步骤5:验证
# 验证功能
/WebSphere/scripts/function_test.sh

# 验证性能
ab -n 10000 -c 200 http://fgedu.net.cn/fgedu-app/

3. 缩容结果
┌─────────────────────────────────────────────────────────┐
│ 缩容结果报告 │
├─────────────────────────────────────────────────────────┤
│ 缩容时间:2026年4月10日 │
│ │
│ 缩容前: │
│ – 节点数:6个 │
│ – CPU使用率:25% │
│ – 月成本:60000元 │
│ │
│ 缩容后: │
│ – 节点数:3个 │
│ – CPU使用率:48% │
│ – 月成本:30000元 │
│ │
│ 节省成本:30000元/月 │
│ │
│ 结论:缩容成功,资源利用率提升 │
└─────────────────────────────────────────────────────────┘

4.3 自动扩缩容案例

自动扩缩容案例:

4.3.1 案例背景

# 自动扩缩容案例

企业背景:
– 业务波动大
– 需要自动调整资源
– 降低运维成本

实施方案:
1. 自动扩缩容架构
┌─────────────────────────────────────────────────────────┐
│ 自动扩缩容架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 监控系统 │ │
│ │ Prometheus + Grafana │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ 告警 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 扩缩容控制器 │ │
│ │ 自动扩缩容脚本 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ 执行 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ WebSphere集群 │ │
│ │ 动态调整节点数量 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘

2. 监控规则
# Prometheus告警规则
groups:
– name: websphere_scaling
rules:
– alert: HighCPU
expr: websphere_cpu_usage > 80
for: 5m
annotations:
summary: “CPU使用率过高,触发扩容”

– alert: LowCPU
expr: websphere_cpu_usage < 30 for: 10m annotations: summary: "CPU使用率过低,触发缩容" 3. 扩缩容脚本 #!/bin/bash # auto_scale_controller.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn ALERT_TYPE=$1 case $ALERT_TYPE in "HighCPU") echo "触发扩容" /WebSphere/scripts/scale_up.sh ;; "LowCPU") echo "触发缩容" /WebSphere/scripts/scale_down.sh ;; esac 4. 运行效果 # 自动扩缩容记录 时间 操作 原因 ────────────────────────────────────────────────────── 10:00 扩容 CPU 85% 14:00 扩容 CPU 82% 18:00 缩容 CPU 25% 22:00 缩容 CPU 20% # 效果统计 - 自动扩容次数:2次 - 自动缩容次数:2次 - 人工干预次数:0次 - 节省成本:约20%

Part05-风哥经验总结与分享

5.1 扩缩容检查清单

扩缩容检查清单:

# 扩缩容检查清单

扩容前检查:
□ 容量评估已完成
□ 服务器资源已准备
□ WebSphere已安装
□ 网络配置已完成
□ 备份已执行

扩容中检查:
□ 节点添加成功
□ 集群成员创建成功
□ 配置同步成功
□ 服务启动成功

扩容后检查:
□ 功能验证通过
□ 性能验证通过
□ 负载均衡正常
□ 监控正常

缩容前检查:
□ 流量已迁移
□ 节点已停止
□ 备份已执行

缩容后检查:
□ 节点移除成功
□ 功能验证通过
□ 资源已释放

5.2 扩缩容常见问题

扩缩容常见问题及解决方案:

5.2.1 常见问题汇总

# 扩缩容常见问题

问题1:节点添加失败
原因:网络不通或认证失败
解决:检查网络和认证配置

问题2:配置同步失败
原因:Dmgr不可达
解决:检查Dmgr状态

问题3:扩容后负载不均
原因:负载均衡配置问题
解决:检查负载均衡配置

问题4:缩容后功能异常
原因:流量未完全迁移
解决:确保流量迁移完成

问题5:自动扩缩容不生效
原因:监控规则配置错误
解决:检查监控规则

5.3 扩缩容最佳实践

基于多年WebSphere运维经验,总结扩缩容最佳实践:

5.3.1 扩缩容原则

  • 提前规划:预估业务增长,提前扩容
  • 渐进操作:逐步扩缩容,观察效果
  • 充分验证:扩缩容后充分验证
  • 持续监控:持续监控扩缩容效果

5.3.2 扩缩容建议

  • 自动化:实现自动扩缩容
  • 文档化:记录扩缩容过程
  • 标准化:建立扩缩容标准流程
  • 优化:持续优化扩缩容策略
生产环境建议:扩缩容是保障系统性能和可用性的重要手段,建议建立完善的扩缩容机制,实现自动化运维。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,节假日休息