上周介绍了《weblogic标准化部署大纲》,下面详细介绍我们在实际生产环境中如何进行weblogic中间件应用部署标准规范。
一、版本选型
1.1 基础版本
因原厂已经不提供Weblogic中间件10.3.5版本(包括)及之前版本的Premier Support,且10.3.5版本Extended Support将于2013年8月过期,为确保weblogic中间件的安全及稳定运行,所有新申请weblogic中间件软件版本必须安装10.3.6或12.2.1.2.0版本。
(a)、WLS 10.3.6是WLS 11g的Terminal Patch Set版本。 根据终身支持政策文件中规定的总支持期(2018年12月)和扩展支持期(2021年12月)的结束,将根据WLS Premier支持的客户支持合同提供错误更正或扩展支持。
(a)错误修正结束由随后的Patch Set释放来确定,以设置宽限期的开始。 没有随后的Patch Set版本,此版本根据终身支持策略文档的Premier和Extended支持日期具有错误更正支持。
1.2 补丁版本
为了确保Weblogic版本性能稳定,必须将weblogic对应版本PSU补丁升级到一个月内的版本,就是为了屏蔽当前版本存在BUG隐患。
1. Weblogic10.3.6.0最新PSU补丁:
2. Weblogic 12.2.1.2.0 最新PSU补丁:
注:常见的SSRF漏洞和JAVA反序列化漏洞打上最新补丁就已经修复。
1.3 JDK版本
安装Weblogic软件时必须安装对应的JDK软件,才能正常运行。对于JDK版本的选择,选择官方建议的大版本号,同时尽量保证小版本最新。如下所示:
备注:Oracle提供的JDK不适用于AIX、HP-UX操作系统,需到IBM和HP官网下载对应版本的JDK。
二、安装规范
2.1 OS资源规范
操作系统资源规范要求应该注意以下几点:
1. Weblogic运行的操作系统版本为RedHat7.3 x86_64。
2. Hosts配置,要求主机的hosts文件配置主机名与IP的对应关系。
3. 磁盘空间规范,要求单独分配一个新的文件系统给weblogic软件,同时至少预留40G空间。
4. 内存使用规范,中间件节点内存分类区间在4G-8G,因此分配操作系统内存至少在16G以上。
2.2 用户与目录规范
1. Weblogic的服务必须使用非root用户来启动与管理。
2. weblogic软件必须安装到指定到规划文件系统路径下面(该目录归属为非root用户,权限为740)。
3. 严禁将不同版本的WebLogic软件安装在同一目录下。
4. 软件安装模式必须是完全模式。
2.3 运行模式选择
Weblogic有两种运行模式:开发模式和生产模式。必须合理选择Weblogic运行模式,以提升weblogic健壮性和稳定性。 开发系统推荐使用开发模式,生产系统推荐使用生产模式。
三、weblogic域配置
1. 域名命名规范,domain名称必须简单明了贴近应用系统名称,且名称长度不能超过16字符。格式为:应用程序名_domain。
2. 域名应以大功能模块作为划分标准,域下面再建立不同的应用服务器部署不同的、关联性较强的应用模块。
3.1 集群配置
1. 集群命名规范:集群名称必须简单明了贴近域名称,且名称长度不能超过16字符。格式:域名_Cluster。
2. 配置集群时多播地址和端口,避免监听地址问题,可以使用 IP 地址或 DNS名称指定地址信息。同时多播地址的使用必须与主机侧进行核实、管理,避免重复。
3. 标识要专用于集群的多播通信的地址和端口。多播地址是介于 224.0.0.0 和 239.255.255.255 之间的 IP 地址。WebLogic使用的默认多播值是 239.192.0.0。不应使用任何值为 x.0.0.1 的多播地址。
3.2 服务器配置
为了确保WebLogic环境中的每个可配置资源都具有唯一名称。每个域、服务器、计算机、集群、JDBC 数据源、虚拟主机或其他资源都必须具有唯一名称。
1. 管理服务器(AdminServer)配置要求
1) 管理服务器必须使用默认命名:AdminServer;
2) 每一个域必须有一台AdminServer;
3) 禁止在AdminServer上部署应用;
4) 管理服务器必须配置在域的对外服务IP上;
5) 严禁使用默认端口7001作为管理节点的服务端口,安装weblogic管理端口指定端口范围在 [7100-7900]之间;
6) 管理账户密码必须具备一定强度,禁止使用weblogic这种弱口令,要求密码要有一定的复杂度。
2. 受管服务器(ManagedServer)配置要求
1) 受管服务器命名规范,要求字符长度在16位内,以应用名称加下划线”_”进行分隔;
2) 每个集群节点端口做出端口范围限定,第一个集群节点服务端口指定在 [8001-9001]范围, 第二个集群节点服务端口指定在 [8101-9101]范围,其它集群节点服务端口往后类推。
3) 同一个cluster下受管服务器,其JVM启动参数必须一致,JVM启动参数必须在启动脚本中进行设置,严禁在影响全局环境变量配置文件中进行配置。
3.3 数据源配置
为了提高JDBC数据源连接池效率问题, Oracle官方推出了GridLink数据源,增强对RAC的支持,就是为了取代原先的多数据源。以防数据库RAC节点异常,中间件数据源自动切换正常数据库节点。
1、JDBC数据源类型规范选择:
1) 数据库为单实例采用普通数据源;
2) Oracle11g以下版本的RAC多实例数据库采用多数据源;
3) Oracle11g以上版本的RAC多实例数据库采用GridLink数据源,数据源采用连接数据库的地址统一用scan ip和service_name。
2、针对JDBC数据源规范要求作出以下规范要求:
1) 数据源名须设为应用程序名_datasource。
2) 数据源JNDI名称须设为应用程序名_datasource_JNDI,要为数据源指定多个 JNDI 名,请在单独的行上分别输入每个 JNDI 名。
3) Cluster中每个节点数据源,数据库连接池配置属性须保持一致
4) 采用Gridlink数据源方式配置
3.4 JMS配置
对于每种资源类型(例如队列、主题和连接工厂),JMS模块内的资源名称必须是唯一的。但是,两个不同的JMS模块可以拥有共享相同名称的相同类型的资源。同样,跨JMS模块的任何可绑定的JMS资源的JNDI名称(排除配额、目标关键字和 JMS 模板)也必须是唯一的。
1. JMS模块名须设为 “应用程序名_JMS_Module”
2. JMS Server须设为“应用程序名_JMS_Server”
3. JMS连接工厂须设为“应用程序名_ CF”
4. JNDI Name须设为“应用程序名_ CF_JNDI”
5. JMS队列须设为“应用程序名_ Queue”
6. JNDI Name须设为“应用程序名_ Queue_JNDI”
7. JMS主题须设为“应用程序名_ Topic”
8. JNDI Name须设为“应用程序名_ Topic _JNDI”
3.5 登录密码加密配置
1. 新建WebLogic服务器后要做免密码启动文件,以便在后台启动脚本时能正常启动各个WebLogic节点。
2. 在每个WebLogic节点目录下新建security目录,在security目录下新建boot.properties文件,并将用户和密码写入此文件中,方便用户密码管控。
四、启动脚本规范
1. 对于不同类型的多用户操作系统,需配置Weblogic后台启动脚本,已增强使用安全性。
2. 启动脚本参数要求重定义JVM内存大小和服务端口变量,要求必须后台启动server;必须有输出的server日志。
3. 启动脚本中定义好heapdump和gc参数,方便后续系统出现故障对内存使用情况进行分析。
4. 服务启动脚本统一用定制化脚本来启动,不建议使用weblogic安装后的脚本来启动服务。
5. 因为每个节点的配置要求可能存在差异,不建议设置成全局变量,所以weblogic标准化里面不设置“计算机”功能,统一通过后台维护,控制台仅提供部署、修改部分配置功能。
五、基线参数优化
weblogic服务运行正常的同时可以通过参数优化有助系统性能提升,所以需要针对weblogic相关的参数进行优化,以保障业务系统稳定运行。针对weblogic中间件存在几个优化点,比如:JVM内存、本地I/0开启、线程、数据源、Accept BackLog和日志文件等。
5.1 内存优化
1) Heap堆大小:管理节点JVM内存限制在 1G-2G左右,被管理节点服务器JVM内存限制在 4G-8G,其它情况需合理利用服务器资源,至少预留1~2G本地内存给操作系统使用;
2) Perm区大小:通用场景设置512MB即可,对于大内存应用场景可适当调整为约占整个heap的1/4大小。Permanent区用于加载类(class)的专门的内存区域,该参数仅针对Sun JDK和HP JDK。
注:在WebLogic中,为了获得更好的性能,ORACLE官方推荐最小堆内存等于最大堆内存 。
5.2 本地IO
在能使用Native I/O的平台上尽量 开启本地原生I/O,此参数优势是会使用Java线程进行网络操作会降低WLS性能。以下操作是如何去开启原生I/0参数
5.3 线程池
为了提升系统业务并发,线程池的优化直接影响到了业务系统的并发上升空间和 weblogic 处理能力,因此应该合理的去分配服务的线程池大小,这里提供两种线程调优方式。
1. work managers线程自调优:
2. 手动线程调优
在startWeblogic.sh启动脚本中的JAVA_OPTIONS变量加入以下参数
-Dweblogic.threadpool.MinPoolSize=500 -Dweblogic.threadpool.MaxPoolSize=500
要求最小线程和最大线程大小要相等,为了降低申请线程资源的开销,有助性能提升。
5.4 线上运行模式
生产交付的weblogic系统,要求将域启动模式设置成生产模式,有助weblogic性能提高。请修改startWebLogic.sh脚本中,将PRODUCTION_MODE变量的值更改为TRUE。
5.5 数据源
为了提升数据源的性能,保障业务能正常获取数据源中每个健康的连接,同时也能释放出非活动连接提升主机的性能,以参考以下指标进行优化。
5.6 Accept Backlog
WebLogic使用Accept Backlog (TCP queue)参数规定WebLogic向系统请求的queue的大小, Accept Backlog属性決定了在 waiting queue中最多可以有多少TCP连接等待处理,默认值为300。如果在许多client连接被拒绝,而在服务器端沒有错误显示,说明该值设得过低。可以适当增大acceptBacklog的值,每次增加25%
服务器->配置->优化->接受积压:
5.7 日志参数
由于Weblogic安装后默认的各节点日志生成是不规范的,是无法满足安全基线规范,为了适应广西电网中间件安全基线要求,强化日志输出标准,请按以下参数标准设置。