1. 首页 > IT综合教程 > 正文

IT教程FG329-WebLogic集群部署

1. 集群概述

WebLogic集群是一组协同工作的WebLogic Server实例,提供高可用性和可扩展性。更多学习教程www.fgedu.net.cn

# 集群架构
WebLogic集群架构:
┌─────────────────────────────────────────────────────┐
│ 负载均衡器 │
│ (F5/Nginx) │
└───────────────────────┬─────────────────────────────┘

┌───────────────┼───────────────┐
│ │ │
v v v
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ ManagedServer │ │ ManagedServer │ │ ManagedServer │
│ Node1 │ │ Node2 │ │ Node3 │
│ Port:7001 │ │ Port:7001 │ │ Port:7001 │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
└───────────────┼───────────────┘

v
┌─────────────────┐
│ AdminServer │
│ Port:7001 │
└─────────────────┘

# 查看当前WebLogic版本
# cd /opt/weblogic/wlserver/server/bin
# ./setWLSEnv.sh
# java weblogic.version
WebLogic Server 14.1.1.0.0 Wed Jan 13 15:05:50 GMT 2026 2110505

# 查看已安装组件
# ls -la /opt/weblogic/
drwxr-xr-x 1 weblogic weblogic 4096 Apr 3 10:00 wlserver
drwxr-xr-x 1 weblogic weblogic 4096 Apr 3 10:00 oracle_common
drwxr-xr-x 1 weblogic weblogic 4096 Apr 3 10:00 user_projects

# 检查Java环境
# java -version
java version “1.8.0_351”
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

生产环境风哥建议:集群至少配置3个节点,AdminServer独立部署,配置会话复制,使用外部负载均衡器,定期备份配置。

2. 集群规划

集群规划是部署前的关键步骤。学习交流加群风哥微信: itpux-com

# 集群规划文档
# cat > /opt/weblogic/docs/cluster_plan.md << 'EOF' # WebLogic集群规划 ## 1. 硬件规划 | fgedu.net.cn | IP地址 | 角色 | CPU | 内存 | 磁盘 | |--------|--------|------|-----|------|------| | fgedu-wls-admin | 192.168.1.10 | AdminServer | 4核 | 8GB | 100GB | | fgedu-wls-node1 | 192.168.1.11 | ManagedServer | 8核 | 16GB | 200GB | | fgedu-wls-node2 | 192.168.1.12 | ManagedServer | 8核 | 16GB | 200GB | | fgedu-wls-node3 | 192.168.1.13 | ManagedServer | 8核 | 16GB | 200GB | ## 2. 端口规划 | 服务 | 端口 | 说明 | |------|------|------| | AdminServer | 7001 | 管理控制台 | | ManagedServer | 8001 | 应用服务 | | NodeManager | 5556 | 节点管理 | | Cluster Multicast | 239.192.0.0:7001 | 集群通信 | | Debug Port | 8453 | 调试端口 | ## 3. 目录规划 | 目录 | 路径 | 说明 | |------|------|------| | WebLogic Home | /opt/weblogic/wlserver | 安装目录 | | Domain Home | /opt/weblogic/user_projects/domains/fgedu_domain | 域目录 | | Application Home | /opt/weblogic/user_projects/applications | 应用目录 | | Log Home | /opt/weblogic/user_projects/logs | 日志目录 | ## 4. 集群配置 - 集群名称: fgedu_cluster - 集群类型: Dynamic Cluster - 服务器数量: 3 - 会话复制: 内存复制 - 负载均衡: Round Robin EOF # 环境准备脚本 # cat > /opt/scripts/wls_env_prepare.sh << 'EOF' #!/bin/bash echo "WebLogic集群环境准备" # 1. 创建用户 echo "1. 创建weblogic用户" if ! id weblogic &>/dev/null; then
useradd -m -d /home/weblogic -s /bin/bash weblogic
echo “weblogic:Fgedu@WLS123” | chpasswd
fi

# 2. 创建目录
echo “2. 创建目录结构”
mkdir -p /opt/weblogic/wlserver
mkdir -p /opt/weblogic/user_projects/domains
mkdir -p /opt/weblogic/user_projects/applications
mkdir -p /opt/weblogic/user_projects/logs
chown -R weblogic:weblogic /opt/weblogic

# 3. 配置系统参数
echo “3. 配置系统参数”
cat >> /etc/sysctl.conf << 'SYSEOF' # WebLogic优化参数 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 5 SYSEOF sysctl -p # 4. 配置用户限制 echo "4. 配置用户限制" cat >> /etc/security/limits.conf << 'LIMITEOF' weblogic soft nofile 65536 weblogic hard nofile 65536 weblogic soft nproc 4096 weblogic hard nproc 4096 weblogic soft memlock unlimited weblogic hard memlock unlimited LIMITEOF # 5. 配置fgedu.net.cn解析 echo "5. 配置fgedu.net.cn解析" cat >> /etc/hosts << 'HOSTEOF' 192.168.1.10 fgedu-wls-admin 192.168.1.11 fgedu-wls-node1 192.168.1.12 fgedu-wls-node2 192.168.1.13 fgedu-wls-node3 HOSTEOF echo "环境准备完成" EOF # chmod +x /opt/scripts/wls_env_prepare.sh # /opt/scripts/wls_env_prepare.sh WebLogic集群环境准备 1. 创建weblogic用户 2. 创建目录结构 3. 配置系统参数 4. 配置用户限制 5. 配置fgedu.net.cn解析 环境准备完成

3. 域创建

域是WebLogic管理的基本单元。学习交流加群风哥QQ113257174

# 使用配置向导创建域(图形界面)
# su – weblogic
$ cd /opt/weblogic/wlserver/common/bin
$ ./config.sh

# 使用静默模式创建域
# cat > /opt/weblogic/response/domain_response.txt << 'EOF' [ENGINE] Response File Version=14.1.1.0.0 [GENERIC] ORACLE_HOME=/opt/weblogic/wlserver INSTALL_TYPE=WebLogic Server [DOMAIN] DOMAIN_NAME=fgedu_domain DOMAIN_HOST=192.168.1.10 DOMAIN_PORT=7001 DOMAIN_USER=weblogic DOMAIN_PASSWORD=Fgedu@Domain123 DOMAIN_PRODUCTION_MODE=true [ADMIN_SERVER] ADMIN_SERVER_NAME=AdminServer ADMIN_SERVER_HOST=192.168.1.10 ADMIN_SERVER_PORT=7001 [CLUSTER] CLUSTER_NAME=fgedu_cluster CLUSTER_TYPE=Dynamic [NODE_MANAGER] NODE_MANAGER_TYPE=PerDomainNodeManager NODE_MANAGER_PORT=5556 NODE_MANAGER_USERNAME=nodemanager NODE_MANAGER_PASSWORD=Fgedu@NM123 EOF # 执行域创建 # su - weblogic $ cd /opt/weblogic/wlserver/common/bin $ ./config.sh -mode=silent -silent_xml=/opt/weblogic/response/domain_response.txt # 输出示例 Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Creating domain... Domain created successfully: /opt/weblogic/user_projects/domains/fgedu_domain # 使用WLST脚本创建域 # cat > /opt/weblogic/scripts/create_domain.py << 'EOF' # WebLogic域创建脚本 domain_name = 'fgedu_domain' admin_server_name = 'AdminServer' admin_address = '192.168.1.10' admin_port = 7001 domain_path = '/opt/weblogic/user_projects/domains/' + domain_name # 读取模板 readTemplate('/opt/weblogic/wlserver/common/templates/wls/wls.jar') # 设置AdminServer cd('Servers/' + admin_server_name) set('ListenAddress', admin_address) set('ListenPort', admin_port) # 设置域用户 cd('/') cd('Security/' + domain_name + '/User/weblogic') cmo.setPassword('Fgedu@Domain123') # 设置生产模式 setOption('ServerStartMode', 'prod') # 设置JDK setOption('JavaHome', '/usr/java/jdk1.8.0_351') # 写入域 writeDomain(domain_path) closeTemplate() print('Domain ' + domain_name + ' created successfully') EOF # 执行WLST脚本 $ /opt/weblogic/wlserver/common/bin/wlst.sh /opt/weblogic/scripts/create_domain.py Initializing WebLogic Scripting Tool (WLST) ... Domain fgedu_domain created successfully

4. 集群创建

集群创建配置服务器组。更多学习教程公众号风哥教程itpux_com

# 使用WLST创建集群
# cat > /opt/weblogic/scripts/create_cluster.py << 'EOF' # WebLogic集群创建脚本 domain_path = '/opt/weblogic/user_projects/domains/fgedu_domain' cluster_name = 'fgedu_cluster' # 连接到AdminServer connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 开始编辑 edit() startEdit() # 创建集群 cd('/') cmo.createCluster(cluster_name) cd('Clusters/' + cluster_name) # 设置集群属性 cmo.setClusterMessagingMode('unicast') cmo.setClusterBroadcastChannel('ClusterBroadcast') cmo.setMemberWarmupTimeoutSeconds(30) cmo.setMemberWarmupTimeoutMillis(30000) cmo.setNumberOfServersInClusterAddress(3) cmo.setFrontendHost('fgedu-wls-cluster.fgedu.net.cn') cmo.setFrontendHTTPPort(80) cmo.setFrontendHTTPSPort(443) # 设置会话复制 cd('Clusters/' + cluster_name) cmo.setReplicationType('inmemory') cmo.setPersistSessionsOnShutdown(false) cmo.setSessionLazyDeserializationEnabled(true) # 保存并激活 save() activate() print('Cluster ' + cluster_name + ' created successfully') # 断开连接 disconnect() EOF # 执行集群创建脚本 $ /opt/weblogic/wlserver/common/bin/wlst.sh /opt/weblogic/scripts/create_cluster.py Connecting to t3://192.168.1.10:7001 with userid weblogic ... Successfully connected to Admin Server "AdminServer" that belongs to domain "fgedu_domain". Cluster fgedu_cluster created successfully # 创建动态集群 # cat > /opt/weblogic/scripts/create_dynamic_cluster.py << 'EOF' # 创建动态集群 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 创建动态集群 cd('/') cmo.createDynamicCluster('fgedu_dynamic_cluster') cd('DynamicClusters/fgedu_dynamic_cluster') # 设置动态服务器模板 cmo.setDynamicServerCount(3) cmo.setServerNamePrefix('fgedu-server-') cmo.setCalculatedListenPorts(true) cmo.setCalculatedMachineNames(true) # 设置服务器模板 cd('ServerTemplate/fgedu-server-template') cmo.setListenPort(8001) cmo.setListenAddress('0.0.0.0') cmo.setCluster('fgedu_dynamic_cluster') # 设置JVM参数 cd('ServerStart/fgedu-server-template') arguments = '-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200' cmo.setArguments(arguments) save() activate() print('Dynamic cluster created successfully') disconnect() EOF # 查看集群配置 $ /opt/weblogic/wlserver/common/bin/wlst.sh << 'EOF' connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') cd('Clusters') ls() disconnect() EOF dr-- fgedu_cluster dr-- fgedu_dynamic_cluster

5. 受管服务器

受管服务器是集群中的工作节点。author:www.itpux.com

# 创建受管服务器
# cat > /opt/weblogic/scripts/create_managed_servers.py << 'EOF' # 创建受管服务器 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 创建Managed Server 1 cd('/') cmo.createServer('fgedu-server-1') cd('Servers/fgedu-server-1') cmo.setListenAddress('192.168.1.11') cmo.setListenPort(8001) cmo.setCluster('fgedu_cluster') # 设置启动参数 cd('ServerStart/fgedu-server-1') cmo.setArguments('-Xms4g -Xmx4g -XX:+UseG1GC') cmo.setJavaHome('/usr/java/jdk1.8.0_351') # 创建Managed Server 2 cd('/') cmo.createServer('fgedu-server-2') cd('Servers/fgedu-server-2') cmo.setListenAddress('192.168.1.12') cmo.setListenPort(8001) cmo.setCluster('fgedu_cluster') cd('ServerStart/fgedu-server-2') cmo.setArguments('-Xms4g -Xmx4g -XX:+UseG1GC') cmo.setJavaHome('/usr/java/jdk1.8.0_351') # 创建Managed Server 3 cd('/') cmo.createServer('fgedu-server-3') cd('Servers/fgedu-server-3') cmo.setListenAddress('192.168.1.13') cmo.setListenPort(8001) cmo.setCluster('fgedu_cluster') cd('ServerStart/fgedu-server-3') cmo.setArguments('-Xms4g -Xmx4g -XX:+UseG1GC') cmo.setJavaHome('/usr/java/jdk1.8.0_351') save() activate() print('Managed servers created successfully') disconnect() EOF # 执行创建脚本 $ /opt/weblogic/wlserver/common/bin/wlst.sh /opt/weblogic/scripts/create_managed_servers.py # 配置NodeManager # cat > /opt/weblogic/scripts/config_nodemanager.py << 'EOF' # 配置NodeManager connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 创建Machine cd('/') cmo.createMachine('fgedu-machine-1') cd('Machines/fgedu-machine-1/NodeManager/fgedu-machine-1') cmo.setListenAddress('192.168.1.11') cmo.setListenPort(5556) cmo.setNMType('SSL') cd('/') cmo.createMachine('fgedu-machine-2') cd('Machines/fgedu-machine-2/NodeManager/fgedu-machine-2') cmo.setListenAddress('192.168.1.12') cmo.setListenPort(5556) cmo.setNMType('SSL') cd('/') cmo.createMachine('fgedu-machine-3') cd('Machines/fgedu-machine-3/NodeManager/fgedu-machine-3') cmo.setListenAddress('192.168.1.13') cmo.setListenPort(5556) cmo.setNMType('SSL') # 关联服务器到Machine cd('Servers/fgedu-server-1') cmo.setMachine('fgedu-machine-1') cd('Servers/fgedu-server-2') cmo.setMachine('fgedu-machine-2') cd('Servers/fgedu-server-3') cmo.setMachine('fgedu-machine-3') save() activate() print('NodeManager configured successfully') disconnect() EOF # 启动NodeManager $ cd /opt/weblogic/user_projects/domains/fgedu_domain/bin $ ./startNodeManager.sh & # 查看NodeManager状态 $ tail -f /opt/weblogic/user_projects/domains/fgedu_domain/nodemanager/nodemanager.log INFO: Node manager started on port 5556

6. 集群部署

应用部署到集群实现高可用。

# 部署应用到集群
# cat > /opt/weblogic/scripts/deploy_app.py << 'EOF' # 部署应用 app_name = 'fgedu-webapp' app_path = '/opt/weblogic/user_projects/applications/fgedu-webapp.war' target = 'fgedu_cluster' connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 部署应用 deploy(app_name, app_path, targets=target, stageMode='stage') print('Application ' + app_name + ' deployed successfully') disconnect() EOF # 执行部署 $ /opt/weblogic/wlserver/common/bin/wlst.sh /opt/weblogic/scripts/deploy_app.py Deploying application from /opt/weblogic/user_projects/applications/fgedu-webapp.war to targets fgedu_cluster Application fgedu-webapp deployed successfully # 更新应用 # cat > /opt/weblogic/scripts/update_app.py << 'EOF' # 更新应用 app_name = 'fgedu-webapp' app_path = '/opt/weblogic/user_projects/applications/fgedu-webapp-v2.war' connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 更新应用 redeploy(app_name, app_path) print('Application ' + app_name + ' updated successfully') disconnect() EOF # 部署配置 # cat > /opt/weblogic/scripts/deploy_config.py << 'EOF' # 配置部署参数 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 配置应用部署顺序 cd('AppDeployments/fgedu-webapp') cmo.setDeploymentOrder(100) cmo.setStagingMode('stage') cmo.setTarget('fgedu_cluster') # 配置数据源 cd('/') cmo.createJDBCSystemResource('fgedu-ds') cd('JDBCSystemResources/fgedu-ds/JDBCResource/fgedu-ds') cmo.setDatasourceType('Generic') cd('JDBCSystemResources/fgedu-ds/JDBCResource/fgedu-ds/JDBCDriverParams/fgedu-ds') cmo.setUrl('jdbc:mysql://192.168.1.100:3306/fgedu_db') cmo.setDriverName('com.mysql.cj.jdbc.Driver') cd('Properties/Properties/user') cmo.setValue('fgedu_user') cd('../password') cmo.setValue('Fgedu@DB123') # 配置连接池 cd('JDBCSystemResources/fgedu-ds/JDBCResource/fgedu-ds/JDBCConnectionPoolParams/fgedu-ds') cmo.setInitialCapacity(10) cmo.setMaxCapacity(50) cmo.setCapacityIncrement(5) cmo.setTestConnectionsOnReserve(true) cmo.setTestTableName('SQL SELECT 1') save() activate() print('Deployment configured successfully') disconnect() EOF

7. 会话复制

会话复制确保用户会话在服务器故障时不丢失。

# 配置会话复制
# cat > /opt/weblogic/scripts/config_session_replication.py << 'EOF' # 配置会话复制 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 配置集群会话复制 cd('Clusters/fgedu_cluster') cmo.setReplicationType('inmemory') cmo.setReplicationChannel('ReplicationChannel') # 配置会话参数 cd('Servers/fgedu-server-1') cmo.setReplicationGroup('fgedu-group-1') cmo.setPreferredSecondaryGroup('fgedu-group-2') cd('Servers/fgedu-server-2') cmo.setReplicationGroup('fgedu-group-2') cmo.setPreferredSecondaryGroup('fgedu-group-3') cd('Servers/fgedu-server-3') cmo.setReplicationGroup('fgedu-group-3') cmo.setPreferredSecondaryGroup('fgedu-group-1') # 配置会话超时 cd('/') cd('AppDeployments/fgedu-webapp') cmo.setSessionTimeout(1800) save() activate() print('Session replication configured successfully') disconnect() EOF # 配置weblogic.xml # cat > /opt/weblogic/user_projects/applications/WEB-INF/weblogic.xml << 'EOF'

replicated_if_clustered 1800
60
false
true

1 true
true
/fgedu

EOF

# 验证会话复制
$ curl -v http://192.168.1.11:8001/fgedu/session-test.jsp
* Trying 192.168.1.11…
* Connected to 192.168.1.11 (192.168.1.11) port 8001
> GET /fgedu/session-test.jsp HTTP/1.1
> Host: 192.168.1.11:8001
>
< HTTP/1.1 200 OK < Set-Cookie: JSESSIONID=abc123; path=/fgedu < Session ID: abc123 Primary Server: fgedu-server-1 Secondary Server: fgedu-server-2

8. 负载均衡

负载均衡分发请求到集群节点。

# 配置WebLogic代理插件
# cat > /opt/weblogic/scripts/config_proxy.py << 'EOF' # 配置代理插件 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 配置集群地址 cd('Clusters/fgedu_cluster') servers = ['192.168.1.11:8001', '192.168.1.12:8001', '192.168.1.13:8001'] cmo.setClusterAddress(','.join(servers)) # 配置前端主机 cmo.setFrontendHost('fgedu-wls.fgedu.net.cn') cmo.setFrontendHTTPPort(80) cmo.setFrontendHTTPSPort(443) save() activate() print('Proxy configured successfully') disconnect() EOF # 配置Nginx负载均衡 # cat > /etc/nginx/conf.d/fgedu-wls.conf << 'EOF' upstream fgedu_cluster { server 192.168.1.11:8001 weight=1; server 192.168.1.12:8001 weight=1; server 192.168.1.13:8001 weight=1; keepalive 32; } server { listen 80; server_name fgedu-wls.fgedu.net.cn; location / { proxy_pass http://fgedu_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header WL-Proxy-Client-IP $remote_addr; proxy_set_header WL-Proxy-Client-SSL false; proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; } location /fgedu/ { proxy_pass http://fgedu_cluster/fgedu/; proxy_cookie_path /fgedu /fgedu; } } server { listen 443 ssl; server_name fgedu-wls.fgedu.net.cn; ssl_certificate /etc/nginx/ssl/fgedu.crt; ssl_certificate_key /etc/nginx/ssl/fgedu.key; location / { proxy_pass http://fgedu_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } EOF # 重启Nginx # nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # systemctl restart nginx # 配置F5负载均衡 # 创建Pool # tmsh create ltm pool fgedu_wls_pool members add { 192.168.1.11:8001 192.168.1.12:8001 192.168.1.13:8001 } # 创建Virtual Server # tmsh create ltm virtual fgedu_wls_vs destination 192.168.1.200:80 pool fgedu_wls_pool # 配置健康检查 # tmsh create ltm monitor http fgedu_wls_monitor send "GET /fgedu/health HTTP/1.0\r\n\r\n" recv "OK" # tmsh modify ltm pool fgedu_wls_pool monitor fgedu_wls_monitor

9. 集群监控

集群监控确保服务正常运行。

# 使用WLST监控集群
# cat > /opt/weblogic/scripts/monitor_cluster.py << 'EOF' # 集群监控脚本 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 获取集群状态 cluster_name = 'fgedu_cluster' cd('Clusters/' + cluster_name) print('=' * 60) print('Cluster Status: ' + cluster_name) print('=' * 60) # 获取集群中的服务器 servers = cmo.getServers() for server in servers: server_name = server.getName() server_runtime = getMBean('/ServerRuntimes/' + server_name) if server_runtime: print('\nServer: ' + server_name) print(' State: ' + server_runtime.getState()) print(' Health: ' + str(server_runtime.getHealthState())) print(' ListenAddress: ' + server_runtime.getListenAddress()) print(' ListenPort: ' + str(server_runtime.getListenPort())) # JVM信息 jvm_runtime = server_runtime.getJVMRuntime() print(' JVM Heap Used: ' + str(jvm_runtime.getHeapUsedPercent()) + '%') print(' JVM Heap Size: ' + str(jvm_runtime.getHeapSizeCurrent() / 1024 / 1024) + ' MB') print(' JVM Free Memory: ' + str(jvm_runtime.getHeapFreeCurrent() / 1024 / 1024) + ' MB') # 线程信息 thread_runtime = server_runtime.getThreadPoolRuntime() print(' Execute Threads: ' + str(thread_runtime.getExecuteThreadTotalCount())) print(' Idle Threads: ' + str(thread_runtime.getExecuteThreadIdleCount())) print(' Pending Requests: ' + str(thread_runtime.getPendingUserRequestCount())) # 会话信息 for app_runtime in server_runtime.getApplicationRuntimes(): for component_runtime in app_runtime.getComponentRuntimes(): if 'WebAppComponentRuntime' in str(type(component_runtime)): print(' Application: ' + app_runtime.getName()) print(' Sessions: ' + str(component_runtime.getSessionsTotalCount())) print(' Active Sessions: ' + str(component_runtime.getActiveSessionsCurrentCount())) print('\n' + '=' * 60) disconnect() EOF # 执行监控 $ /opt/weblogic/wlserver/common/bin/wlst.sh /opt/weblogic/scripts/monitor_cluster.py # 输出示例 ============================================================ Cluster Status: fgedu_cluster ============================================================ Server: fgedu-server-1 State: RUNNING Health: HEALTH_OK ListenAddress: 192.168.1.11 ListenPort: 8001 JVM Heap Used: 45% JVM Heap Size: 4096 MB JVM Free Memory: 2252 MB Execute Threads: 200 Idle Threads: 150 Pending Requests: 5 Application: fgedu-webapp Sessions: 1234 Active Sessions: 456 Server: fgedu-server-2 State: RUNNING Health: HEALTH_OK ListenAddress: 192.168.1.12 ListenPort: 8001 JVM Heap Used: 42% JVM Heap Size: 4096 MB JVM Free Memory: 2376 MB Execute Threads: 200 Idle Threads: 160 Pending Requests: 3 Server: fgedu-server-3 State: RUNNING Health: HEALTH_OK ListenAddress: 192.168.1.13 ListenPort: 8001 JVM Heap Used: 48% JVM Heap Size: 4096 MB JVM Free Memory: 2129 MB Execute Threads: 200 Idle Threads: 145 Pending Requests: 8

10. 集群维护

集群维护包括启动停止、扩容缩容等操作。

# 启动集群
# cat > /opt/weblogic/scripts/start_cluster.py << 'EOF' # 启动集群 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 启动整个集群 start('fgedu_cluster', 'Cluster') print('Cluster fgedu_cluster started successfully') disconnect() EOF # 停止集群 # cat > /opt/weblogic/scripts/stop_cluster.py << 'EOF' # 停止集群 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') # 优雅停止集群 shutdown('fgedu_cluster', 'Cluster', 'true') print('Cluster fgedu_cluster stopped successfully') disconnect() EOF # 滚动重启 # cat > /opt/weblogic/scripts/rolling_restart.py << 'EOF' # 滚动重启集群节点 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') cluster_name = 'fgedu_cluster' cd('Clusters/' + cluster_name) servers = cmo.getServers() for server in servers: server_name = server.getName() print('Restarting server: ' + server_name) # 停止服务器 shutdown(server_name, 'Server', 'true') # 等待服务器停止 import time time.sleep(10) # 启动服务器 start(server_name, 'Server') # 等待服务器运行 time.sleep(30) print('Server ' + server_name + ' restarted successfully') disconnect() EOF # 集群扩容 # cat > /opt/weblogic/scripts/scale_out.py << 'EOF' # 集群扩容 connect('weblogic', 'Fgedu@Domain123', 't3://192.168.1.10:7001') edit() startEdit() # 创建新服务器 new_server_name = 'fgedu-server-4' new_server_address = '192.168.1.14' cd('/') cmo.createServer(new_server_name) cd('Servers/' + new_server_name) cmo.setListenAddress(new_server_address) cmo.setListenPort(8001) cmo.setCluster('fgedu_cluster') # 关联到Machine cmo.setMachine('fgedu-machine-4') # 设置启动参数 cd('ServerStart/' + new_server_name) cmo.setArguments('-Xms4g -Xmx4g -XX:+UseG1GC') save() activate() # 启动新服务器 start(new_server_name, 'Server') print('Server ' + new_server_name + ' added and started successfully') disconnect() EOF # 集群健康检查脚本 # cat > /opt/weblogic/scripts/health_check.sh << 'EOF' #!/bin/bash echo "WebLogic集群健康检查" echo "==========================================" # 检查AdminServer echo "1. 检查AdminServer状态" curl -s http://192.168.1.10:7001/console | grep -q "WebLogic" && echo "AdminServer: 正常" || echo "AdminServer: 异常" # 检查Managed Servers echo "" echo "2. 检查Managed Servers状态" for i in 1 2 3; do curl -s http://192.168.1.1${i}:8001/fgedu/health | grep -q "OK" && \ echo "fgedu-server-${i}: 正常" || echo "fgedu-server-${i}: 异常" done # 检查NodeManager echo "" echo "3. 检查NodeManager状态" for i in 1 2 3; do nc -zv 192.168.1.1${i} 5556 2>&1 | grep -q “succeeded” && \
echo “NodeManager-${i}: 正常” || echo “NodeManager-${i}: 异常”
done

# 检查负载均衡
echo “”
echo “4. 检查负载均衡状态”
curl -s http://192.168.1.200/fgedu/health | grep -q “OK” && \
echo “负载均衡: 正常” || echo “负载均衡: 异常”

echo “”
echo “==========================================”
EOF

# chmod +x /opt/weblogic/scripts/health_check.sh

生产环境风哥建议:集群至少配置3个节点,AdminServer独立部署,配置会话复制,使用外部负载均衡器,定期备份配置,实施滚动更新策略,配置完善的监控告警。

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

联系我们

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

微信号:itpux-com

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