WebSphere教程FG022-WebSphere控制台与命令行运维实战对比
本文档风哥主要介绍WebSphere Application Server 9.0.5的控制台与命令行运维方式对比,包括管理控制台操作、wsadmin命令行操作、两种方式的优缺点对比等内容,风哥教程参考WebSphere官方文档管理章节,适合WebSphere管理员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 运维方式概述
WebSphere提供两种主要的运维方式:管理控制台和命令行工具。学习交流加群风哥微信: itpux-com
- 管理控制台:基于Web的图形化管理界面
- wsadmin工具:命令行脚本工具
- REST API:RESTful管理接口
- JMX:Java管理扩展接口
1.1.1 运维方式架构
┌─────────────────────────────────────────────────────────┐
│ 运维方式架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 管理接口层 │ │
│ │ 控制台 | wsadmin | REST API | JMX │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 管理服务层 │ │
│ │ AdminService | ConfigService | MBeans │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ WebSphere运行时 │ │
│ │ Deployment Manager | Node Agent | Server │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
# 运维方式对比
方式 优点 缺点
──────────────────────────────────────────────────────
管理控制台 直观易用 效率低
可视化操作 不适合批量
适合初学者 无法自动化
wsadmin命令行 效率高 学习曲线陡
支持批量 需要编程知识
可自动化 无可视化
REST API 跨平台 需要开发
易集成 功能有限
JMX 灵活 复杂
功能全面 需要Java知识
# 适用场景
场景 推荐方式 原因
──────────────────────────────────────────────────────
日常运维 控制台 简单直观
批量操作 wsadmin 效率高
自动化运维 wsadmin 可脚本化
监控集成 REST API/JMX 易集成
1.2 管理控制台介绍
管理控制台介绍:
1.2.1 控制台功能
1. 访问方式
URL:https://hostname:9043/ibm/console
默认端口:9043(HTTPS)、9060(HTTP)
2. 主要功能区域
区域 功能
──────────────────────────────────────────────────────
服务器 服务器类型、状态管理
应用程序 应用部署、管理
资源 JDBC、JMS、邮件等资源
安全 用户、角色、SSL配置
环境 变量、共享库配置
故障诊断 日志、跟踪配置
3. 常用操作路径
操作 路径
──────────────────────────────────────────────────────
启动服务器 服务器 > 服务器类型 > WebSphere应用服务器
部署应用 应用程序 > 新建应用程序
配置数据源 资源 > JDBC > 数据源
配置JVM 服务器 > Java和进程管理 > 进程定义
查看日志 故障诊断 > 日志和跟踪
# 控制台界面结构
┌─────────────────────────────────────────────────────────┐
│ IBM WebSphere Application Server 管理控制台 │
├─────────────────────────────────────────────────────────┤
│ [首页] [服务器] [应用程序] [资源] [安全] [环境] [故障诊断]│
├─────────────────────────────────────────────────────────┤
│ │ │
│ 导航树 │ 内容区域 │
│ ├─服务器 │ │
│ ├─应用程序 │ ┌──────────────────────────┐ │
│ ├─资源 │ │ │ │
│ ├─安全 │ │ 配置表单/列表 │ │
│ └─环境 │ │ │ │
│ │ └──────────────────────────┘ │
│ │ │
├─────────────────────────────────────────────────────────┤
│ [保存] [取消] [重置] 消息区域 │
└─────────────────────────────────────────────────────────┘
1.3 命令行工具介绍
命令行工具介绍:
1.3.1 wsadmin工具
1. wsadmin概述
位置:/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh
功能:WebSphere管理脚本工具
支持语言:Jython、Jacl
2. 启动方式
# 交互模式
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 脚本模式
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-f /WebSphere/scripts/configure.py
# 单命令模式
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminApp.list()”
3. 主要对象
对象 功能
──────────────────────────────────────────────────────
AdminApp 应用程序管理
AdminConfig 配置管理
AdminControl 运行时控制
AdminTask 管理任务
Help 帮助信息
4. 常用命令示例
# 列出应用
print AdminApp.list()
# 列出服务器
print AdminControl.queryNames(‘type=Server,*’)
# 获取配置
print AdminConfig.list(‘Server’)
# 启动应用
AdminControl.invoke(
AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’),
‘startApplication’, ‘fgedu-app’
)
# 其他命令行工具
工具 用途 位置
──────────────────────────────────────────────────────
startManager.sh 启动Dmgr profiles/Dmgr01/bin
stopManager.sh 停止Dmgr profiles/Dmgr01/bin
startNode.sh 启动节点 profiles/AppSrv01/bin
stopNode.sh 停止节点 profiles/AppSrv01/bin
startServer.sh 启动服务器 profiles/AppSrv01/bin
stopServer.sh 停止服务器 profiles/AppSrv01/bin
serverStatus.sh 服务器状态 profiles/AppSrv01/bin
backupConfig.sh 备份配置 profiles/*/bin
restoreConfig.sh 恢复配置 profiles/*/bin
1.4 两种方式对比
两种方式对比:
1.4.1 详细对比
1. 操作效率对比
操作 控制台时间 命令行时间
──────────────────────────────────────────────────────
部署单个应用 5分钟 1分钟
部署10个应用 50分钟 5分钟
修改JVM参数 2分钟 30秒
批量修改配置 30分钟 2分钟
2. 功能对比
功能 控制台 命令行
──────────────────────────────────────────────────────
应用管理 支持 支持
服务器管理 支持 支持
数据源配置 支持 支持
安全配置 支持 支持
批量操作 不支持 支持
自动化 不支持 支持
脚本复用 不支持 支持
3. 学习曲线对比
方面 控制台 命令行
──────────────────────────────────────────────────────
入门难度 低 高
精通难度 中 高
文档支持 丰富 丰富
社区支持 一般 丰富
4. 适用场景对比
场景 推荐方式 原因
──────────────────────────────────────────────────────
首次配置 控制台 直观易学
日常运维 控制台 简单操作
批量操作 命令行 效率高
自动化运维 命令行 可脚本化
故障排查 两者结合 各有优势
生产部署 命令行 可追溯
Part02-生产环境规划与建议
2.1 运维方式选择
运维方式选择:
2.1.1 选择策略
1. 按操作类型选择
操作类型 推荐方式 原因
──────────────────────────────────────────────────────
首次安装配置 控制台 可视化引导
日常监控 控制台 直观展示
应用部署 命令行 可追溯
批量配置 命令行 效率高
故障排查 两者结合 全面分析
2. 按环境选择
环境 推荐方式 原因
──────────────────────────────────────────────────────
开发环境 控制台 灵活方便
测试环境 两者皆可 根据需求
生产环境 命令行 规范可控
3. 按人员技能选择
人员类型 推荐方式 原因
──────────────────────────────────────────────────────
初学者 控制台 易于学习
中级管理员 两者结合 灵活选择
高级管理员 命令行 效率高
# 运维规范
1. 生产环境运维规范
– 所有变更操作必须使用命令行脚本
– 脚本必须经过测试环境验证
– 操作前必须备份配置
– 操作后必须验证结果
2. 脚本管理规范
– 脚本存放在/WebSphere/scripts目录
– 脚本必须有注释说明
– 脚本必须有版本管理
– 脚本执行必须有日志记录
2.2 自动化运维规划
自动化运维规划:
2.2.1 自动化策略
1. 自动化场景
场景 自动化内容 工具
──────────────────────────────────────────────────────
应用部署 自动部署应用 wsadmin脚本
配置管理 自动配置更新 wsadmin脚本
健康检查 自动巡检 Shell脚本
备份恢复 自动备份 Shell脚本
监控告警 自动告警 监控系统
2. 自动化脚本示例
#!/bin/bash
# auto_deploy.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
APP_NAME=$1
EAR_FILE=$2
echo “=== 开始部署应用:$APP_NAME ===”
# 1. 备份当前应用
echo “1. 备份当前应用…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminApp.export(‘$APP_NAME’, ‘/backup/${APP_NAME}_$(date +%Y%m%d).ear’)”
# 2. 停止应用
echo “2. 停止应用…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminControl.invoke(AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’), ‘stopApplication’, ‘$APP_NAME’)”
# 3. 更新应用
echo “3. 更新应用…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminApp.update(‘$APP_NAME’, ‘app’, ‘[-contents $EAR_FILE]’)”
# 4. 启动应用
echo “4. 启动应用…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminControl.invoke(AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’), ‘startApplication’, ‘$APP_NAME’)”
echo “=== 部署完成 ===”
3. 自动化工具链
工具 用途
──────────────────────────────────────────────────────
Jenkins CI/CD流水线
Ansible 配置管理
Shell/Python 脚本自动化
Prometheus 监控告警
2.3 运维安全规划
运维安全规划:
2.3.1 安全策略
1. 访问控制
控制项 控制措施
──────────────────────────────────────────────────────
控制台访问 限制IP访问,启用HTTPS
命令行访问 使用密钥认证,记录操作日志
脚本执行 审批流程,权限控制
2. 密码管理
管理项 管理措施
──────────────────────────────────────────────────────
密码存储 使用密钥库,不硬编码
密码轮换 定期更换密码
密码复杂度 强密码策略
3. 审计日志
日志类型 内容 保留时间
──────────────────────────────────────────────────────
操作日志 所有管理操作 90天
访问日志 控制台访问 30天
变更日志 配置变更 90天
# 安全配置示例
1. 限制控制台访问
# 配置IP白名单
管理控制台 > 安全 > 全局安全 > Web入站安全性
IP白名单:
192.168.1.0/24
10.0.0.0/8
2. 启用操作审计
# 配置审计日志
管理控制台 > 安全 > 审计
启用审计:是
审计日志路径:/WebSphere/logs/audit
日志轮转:启用
3. 脚本安全
# 使用属性文件存储密码
# wsadmin.properties
username=fgeduadmin
password={xor}PD4tLz4tLg==
# 脚本中使用
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh \
-props /WebSphere/scripts/wsadmin.properties
2.4 运维监控规划
运维监控规划:
2.4.1 监控策略
1. 监控指标
指标 监控方式 告警阈值
──────────────────────────────────────────────────────
服务器状态 PMI 停止
应用状态 运行时查询 停止
JVM内存 PMI > 80%
线程池 PMI > 80%
响应时间 监控脚本 > 1秒
2. 监控脚本
#!/bin/bash
# health_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
LOG_FILE=/WebSphere/logs/health_check.log
echo “=== 健康检查 $(date) ===” >> $LOG_FILE
# 1. 检查服务器状态
echo “1. 服务器状态:” >> $LOG_FILE
/WebSphere/app/profiles/Dmgr01/bin/serverStatus.sh -all >> $LOG_FILE 2>&1
# 2. 检查应用状态
echo “” >> $LOG_FILE
echo “2. 应用状态:” >> $LOG_FILE
/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]” \
>> $LOG_FILE 2>&1
# 3. 检查JVM内存
echo “” >> $LOG_FILE
echo “3. JVM内存:” >> $LOG_FILE
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “jvm=AdminControl.queryNames(‘type=JVM,process=server1,*’); print AdminControl.getAttribute(jvm, ‘heapMemoryUsage’)” \
>> $LOG_FILE 2>&1
echo “=== 检查完成 ===” >> $LOG_FILE
3. 告警配置
告警类型 条件 通知方式
──────────────────────────────────────────────────────
服务器停止 状态非running 邮件+短信
应用停止 状态非running 邮件
内存告警 使用率>80% 邮件
响应时间告警 > 1秒 邮件
Part03-生产环境项目实施方案
3.1 服务器管理实战对比
服务器管理操作对比:
3.1.1 启动服务器
1. 启动服务器
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 服务器 > 服务器类型 > WebSphere应用服务器
3. 选择服务器
4. 点击”启动”按钮
【命令行方式】
# 启动Deployment Manager
/WebSphere/app/profiles/Dmgr01/bin/startManager.sh
执行结果:
ADMU0128I: 正在启动工具,标识为 dmgr
ADMU3100I: 正在读取配置,标识为 dmgr
ADMU3200I: 服务器已启动,等待初始化
ADMU3000I: 服务器 dmgr 已启动
# 启动应用服务器
/WebSphere/app/profiles/AppSrv01/bin/startServer.sh server1
执行结果:
ADMU0128I: 正在启动工具,标识为 server1
ADMU3100I: 正在读取配置,标识为 server1
ADMU3200I: 服务器已启动,等待初始化
ADMU3000I: 服务器 server1 已启动
2. 停止服务器
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 服务器 > 服务器类型 > WebSphere应用服务器
3. 选择服务器
4. 点击”停止”按钮
【命令行方式】
# 停止应用服务器
/WebSphere/app/profiles/AppSrv01/bin/stopServer.sh server1 \
-username fgeduadmin -password fgedu123
执行结果:
ADMU0128I: 正在停止工具,标识为 server1
ADMU3100I: 正在读取配置,标识为 server1
ADMU3200I: 服务器已停止
ADMU3000I: 服务器 server1 已停止
# 停止Deployment Manager
/WebSphere/app/profiles/Dmgr01/bin/stopManager.sh \
-username fgeduadmin -password fgedu123
3. 查看服务器状态
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 服务器 > 服务器类型 > WebSphere应用服务器
3. 查看服务器状态列
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/serverStatus.sh -all
执行结果:
ADMU0503I: 服务器 dmgr 已启动
ADMU0503I: 服务器 nodeagent 已启动
ADMU0503I: 服务器 server1 已启动
# 通过wsadmin查询
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminControl.queryNames(‘type=Server,*’)”
WebSphere:name=dmgr,process=dmgr,platform=proxy,node=fgeduCellManager01,j2eeType=J2EEServer,version=9.0.5.5,type=Server,mbeanIdentifier=cells/fgeduCell01/nodes/fgeduCellManager01/servers/dmgr/server.xml#Server_1,cell=fgeduCell01,spec=1.0,processType=DeploymentManager
3.2 应用管理实战对比
应用管理操作对比:
3.2.1 部署应用
1. 部署应用
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 应用程序 > 新建应用程序 > 新建企业应用程序
3. 选择EAR文件
4. 按向导完成部署
5. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminApp.install(‘/apps/fgedu-app.ear’, ‘[-appname fgedu-app -MapModulesToServers [[.* .* server1]] -MapWebModToVH [[.* .* default_host]]]’)”
执行结果:
ADMA5016I: 应用程序安装已启动
ADMA5058I: 应用程序和模块已成功配置
ADMA5005I: 应用程序 fgedu-app 已成功安装
2. 启动应用
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 应用程序 > 应用程序类型 > WebSphere企业应用程序
3. 选择应用
4. 点击”启动”按钮
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminControl.invoke(AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’), ‘startApplication’, ‘fgedu-app’)”
执行结果:
应用 fgedu-app 已启动
3. 查看应用状态
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 应用程序 > 应用程序类型 > WebSphere企业应用程序
3. 查看应用状态列
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminApp.list()”
fgedu-app
fgedu-api
# 查看应用运行状态
/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
4. 卸载应用
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 应用程序 > 应用程序类型 > WebSphere企业应用程序
3. 选择应用
4. 点击”卸载”按钮
5. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminApp.uninstall(‘fgedu-app’)”
执行结果:
ADMA5104I: 服务器配置已成功保存
ADMA5102I: 清理临时目录已完成
ADMA5106I: 应用程序 fgedu-app 已成功卸载
3.3 数据源管理实战对比
数据源管理操作对比:
3.3.1 创建数据源
1. 创建数据源
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 资源 > JDBC > 数据源
3. 选择作用域
4. 点击”新建”
5. 输入数据源名称、JNDI名称
6. 选择JDBC提供者
7. 输入数据库连接信息
8. 配置连接池
9. 测试连接
10. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 创建JDBC提供者
AdminJDBC.createJDBCProvider(‘[-scope Cell -databaseType Oracle -providerType “Oracle JDBC Driver” -implementationType “Connection pool data source” -name fgeduOracleProvider -classpath [/WebSphere/jdbc/ojdbc8.jar]]’)
# 创建数据源
AdminJDBC.createDataSource(‘[-name fgedudb -jndiName jdbc/fgedudb -dataStoreHelperClassName com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper -containerManagedPersistence true -configureResourceProperties [[databaseName fgedudb] [driverType 4] [serverName db.fgedu.net.cn] [portNumber 1521]] -componentManagedAuthenticationAlias fgeduCell01/fgedudb_user]’)
AdminConfig.save()
# 测试连接
AdminControl.testConnection(AdminConfig.getid(‘/DataSource:fgedudb/’))
执行结果:
连接测试成功
2. 修改数据源
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 资源 > JDBC > 数据源
3. 选择数据源
4. 修改配置
5. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 获取数据源
ds = AdminConfig.getid(‘/DataSource:fgedudb/’)
# 修改连接池
cp = AdminConfig.list(‘ConnectionPool’, ds)
AdminConfig.modify(cp, ‘[[maxConnections 100] [minConnections 10]]’)
AdminConfig.save()
3. 查看数据源
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 资源 > JDBC > 数据源
3. 查看数据源列表
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminConfig.list(‘DataSource’)”
fgedudb(cells/fgeduCell01|resources.xml#DataSource_1)
fgeducache(cells/fgeduCell01|resources.xml#DataSource_2)
# 查看数据源属性
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “ds=AdminConfig.getid(‘/DataSource:fgedudb/’); print AdminConfig.showall(ds)”
3.4 配置管理实战对比
配置管理操作对比:
3.4.1 JVM参数配置
1. JVM参数配置
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 服务器 > 服务器类型 > WebSphere应用服务器
3. 选择服务器 > Java和进程管理 > 进程定义
4. Java虚拟机
5. 修改通用JVM参数
6. 保存配置
7. 重启服务器
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 获取服务器
server = AdminConfig.getid(‘/Server:server1/’)
# 获取JVM配置
jvm = AdminConfig.list(‘JavaVirtualMachine’, server)
# 修改JVM参数
AdminConfig.modify(jvm, ‘[[initialHeapSize 2048] [maximumHeapSize 4096] [genericJvmArguments “-Xmn1536m -XX:+UseG1GC -XX:MaxGCPauseMillis=200”]]’)
AdminConfig.save()
# 重启服务器
AdminControl.invoke(AdminControl.queryNames(‘type=Server,process=server1,*’), ‘restart’)
2. 线程池配置
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 服务器 > 服务器类型 > WebSphere应用服务器
3. 选择服务器 > 线程池
4. 选择线程池
5. 修改参数
6. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 获取线程池
tp = AdminConfig.getid(‘/Server:server1/ThreadPool:WebContainer/’)
# 修改线程池参数
AdminConfig.modify(tp, ‘[[minimumSize 20] [maximumSize 100] [inactivityTimeout 5000] [isGrowable true]]’)
AdminConfig.save()
3. 环境变量配置
【控制台方式】
步骤:
1. 登录管理控制台
2. 导航到 环境 > WebSphere变量
3. 选择作用域
4. 新建或修改变量
5. 保存配置
【命令行方式】
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123
# 创建变量
AdminTask.setVariable(‘[-variableName FGEDU_HOME -variableValue /WebSphere/fgedu -scope Cell]’)
AdminConfig.save()
# 查看变量
print AdminTask.showVariables(‘[-variableName FGEDU_HOME]’)
FGEDU_HOME=/WebSphere/fgedu
Part04-生产案例与实战讲解
4.1 批量操作案例
批量操作案例:
4.1.1 案例背景
需求:
批量修改10个服务器的JVM参数
【控制台方式】
时间:约30分钟
步骤:
1. 登录控制台
2. 逐个选择服务器
3. 逐个修改JVM参数
4. 逐个保存
5. 逐个重启
【命令行方式】
时间:约2分钟
#!/bin/bash
# batch_jvm_config.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 批量修改JVM参数
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 << 'EOF'
# 获取所有服务器
servers = AdminConfig.list('Server').splitlines()
for server in servers:
serverName = AdminConfig.showAttribute(server, 'name')
print "配置服务器: " + serverName
# 获取JVM
jvm = AdminConfig.list('JavaVirtualMachine', server)
# 修改参数
AdminConfig.modify(jvm, '[[initialHeapSize 2048] [maximumHeapSize 4096]]')
AdminConfig.save()
print "配置完成"
EOF
执行结果:
配置服务器: server1
配置服务器: server2
配置服务器: server3
...
配置完成
效率对比:
控制台:30分钟
命令行:2分钟
效率提升:15倍
4.2 自动化运维案例
自动化运维案例:
4.2.1 案例背景
需求:
实现应用自动部署流水线
实施方案:
1. Jenkins流水线配置
2. wsadmin部署脚本
3. 自动化测试
# Jenkins Pipeline脚本
pipeline {
agent any
stages {
stage(‘构建’) {
steps {
sh ‘mvn clean package’
}
}
stage(‘部署’) {
steps {
sh ”’
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-f /WebSphere/scripts/deploy.py \
-Dapp.name=fgedu-app \
-Dapp.ear=target/fgedu-app.ear
”’
}
}
stage(‘测试’) {
steps {
sh ”’
curl -f http://localhost:9080/fgedu-app/health || exit 1
”’
}
}
}
post {
success {
echo ‘部署成功’
}
failure {
echo ‘部署失败’
}
}
}
# 部署脚本 deploy.py
import sys
appName = AdminTask.getVariable(‘-variableName app.name’)
earFile = AdminTask.getVariable(‘-variableName app.ear’)
print “部署应用: ” + appName
# 检查应用是否存在
if AdminApp.list().find(appName) >= 0:
# 更新应用
AdminApp.update(appName, ‘app’, ‘[-contents ‘ + earFile + ‘]’)
else:
# 安装应用
AdminApp.install(earFile, ‘[-appname ‘ + appName + ‘]’)
AdminConfig.save()
# 启动应用
AdminControl.invoke(
AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’),
‘startApplication’, appName
)
print “部署完成”
执行结果:
[Pipeline] stage
[Pipeline] { (构建)
[Pipeline] sh
+ mvn clean package
BUILD SUCCESS
[Pipeline] }
[Pipeline] { (部署)
[Pipeline] sh
部署应用: fgedu-app
部署完成
[Pipeline] }
[Pipeline] { (测试)
[Pipeline] sh
+ curl -f http://localhost:9080/fgedu-app/health
{“status”: “UP”}
[Pipeline] }
[Pipeline] End of Pipeline
部署成功
4.3 故障处理案例
故障处理案例:
4.3.1 案例背景
故障现象:
应用启动失败,需要快速定位问题
【控制台方式】
步骤:
1. 登录控制台
2. 查看服务器状态
3. 查看日志
4. 分析问题
【命令行方式】
步骤:
1. 检查服务器状态
2. 查看日志
3. 分析问题
# 故障诊断脚本
#!/bin/bash
# diagnose.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== 故障诊断 ===”
# 1. 检查服务器状态
echo “1. 服务器状态:”
/WebSphere/app/profiles/AppSrv01/bin/serverStatus.sh server1
# 2. 检查日志
echo “”
echo “2. 最近错误日志:”
tail -100 /WebSphere/app/profiles/AppSrv01/logs/server1/SystemErr.log
# 3. 检查JVM
echo “”
echo “3. JVM状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “jvm=AdminControl.queryNames(‘type=JVM,process=server1,*’); print AdminControl.getAttribute(jvm, ‘heapMemoryUsage’)”
# 4. 检查线程
echo “”
echo “4. 线程状态:”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “tp=AdminControl.queryNames(‘type=ThreadPool,process=server1,*’); print AdminControl.getAttribute(tp, ‘name’) + ‘: ‘ + AdminControl.getAttribute(tp, ‘activeCount’)”
echo “=== 诊断完成 ===”
执行结果:
=== 故障诊断 ===
1. 服务器状态:
ADMU0503I: 服务器 server1 已启动
2. 最近错误日志:
[4/10/26 10:00:00:000 CST] 00000001 WebApp E SRVE0299E:
无法加载Servlet: com.fgedu.servlet.MainServlet
java.lang.ClassNotFoundException: com.fgedu.servlet.MainServlet
3. JVM状态:
{committed=2097152000, init=2097152000, max=4194304000, used=1048576000}
4. 线程状态:
WebContainer: 25
=== 诊断完成 ===
问题定位:
ClassNotFoundException – 类找不到
原因:应用部署不完整
解决:重新部署应用
Part05-风哥经验总结与分享
5.1 运维操作检查清单
运维操作检查清单:
操作前检查:
□ 操作计划已制定
□ 备份已执行
□ 回滚方案已准备
□ 影响范围已评估
□ 审批已获得
操作中检查:
□ 操作步骤已记录
□ 操作日志已保存
□ 异常情况已处理
□ 进度已更新
操作后检查:
□ 功能验证已完成
□ 性能验证已完成
□ 日志已检查
□ 文档已更新
# 运维脚本模板
#!/bin/bash
# script_name.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 脚本说明
# 用途:xxx
# 参数:xxx
# 示例:./script_name.sh param1 param2
# 变量定义
WAS_HOME=/WebSphere/app
LOG_FILE=/WebSphere/logs/script.log
# 函数定义
log() {
echo “$(date): $1” | tee -a $LOG_FILE
}
# 主逻辑
log “脚本开始执行”
# … 业务逻辑 …
log “脚本执行完成”
5.2 运维常见问题
运维常见问题及解决方案:
5.2.1 常见问题汇总
问题1:控制台无法访问
原因:服务器未启动或端口被占用
解决:检查服务器状态和端口
问题2:wsadmin连接失败
原因:认证失败或网络问题
解决:检查用户名密码和网络
问题3:配置保存失败
原因:权限不足或磁盘空间不足
解决:检查权限和磁盘空间
问题4:脚本执行超时
原因:操作耗时过长
解决:增加超时时间或优化脚本
问题5:配置不生效
原因:未重启服务器
解决:重启相关服务器
5.3 运维最佳实践
基于多年WebSphere运维经验,总结运维最佳实践:
5.3.1 运维原则
- 规范化:制定运维规范和流程
- 自动化:使用脚本自动化操作
- 可追溯:记录所有操作日志
- 可回滚:准备好回滚方案
5.3.2 运维建议
- 学习:掌握两种运维方式
- 实践:在测试环境充分练习
- 积累:建立运维知识库
- 改进:持续优化运维流程
本文档详细介绍了WebSphere 9.0.5的控制台与命令行运维方式对比,包括两种方式的操作方法、优缺点对比、适用场景等内容。通过学习本文档,读者可以根据实际需求选择合适的运维方式。更多视频教程www.fgedu.net.cn
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
