之前写过一篇关于MegaRAID Storage Manager(简称MSM)的安装过程说明:《安装 MegaRAID 存储管理器集中监控 DAS 存储状态》。
笔者:国际认证信息系统审计师、软考系统分析师
MSM是一个用于服务器本机存储管理的软件,适用于现在属于Broadcom(博通)公司产品线的磁盘阵列卡,是主流品牌服务器的标配。
前不久MSM推出了新版本17.05.06,测试后发现对于较新的阵列卡可以提供更多的管控操作功能,于是安排对手头的服务器群进行升级安装。
但是,一番折腾发现,这新版本不再打包附带JRE的做法,产生了一个关键问题:
如果服务器上运行了需要使用特定新版本(或者旧版本)的JDK/JRE的中间件服务,那就会和MSM 17.05.06需要使用Java 8的要求冲突。
而且具体到Windows操作系统和Linux操作系统下还有所不同,两个平台的MSM在调用Java环境时有不同的操作方式,而且,Linux版本的MSM里面的脚本有各种BUG......
至于安装包里面的README文件,虽然对安装过程有给出一些指引,但就只是点到为止而已。而且太多过时的内容了,和新内容混杂在一起对网管全都是干扰。现在还有谁会在物理机器上使用Windows 2000,RHEL 5甚至VMware 3.5?这些内容都应该删掉。
最后决定把过程中碰到的问题,以及解决办法作个记录。注意我这里只以64位系统为例进行说明,本篇先介绍Windows操作环境的处置方法,涉及知识点包括Windows Server 操作系统用户管理、系统及用户环境变量设置、本地安全策略、服务管理等,并需要了解JDK和JRE等Java运行环境的基本知识。
在安装或升级前,要先确定Java环境是否存在冲突,这可以通过以下三个问题确定:
(1)服务器上是否存在其它软件需要使用公共Java环境(JRE或者JDK); (2)该软件指定的公共Java环境版本是否和MSM需要的Java 8不同; (3)该软件稳定运行的重要性是否高于MSM。
只要任一的回答为“是”,那么就需要为MSM单独配置Java运行环境,而不是按README指引的方法为MSM配置全局的Java运行环境。
以上问题最典型的例子就是某些指定要使用JDK 6的财务软件。
实际笔者的观点是,即使服务器上暂时不存在需要使用Java环境的软件,为了避免未来可能出现的冲突,也应该为MSM单独配置Java运行环境。
按README,首先到:
https://github.com/javaee/activation/releases/tag/JAF-1_2_0
下载 javax.activation.jar 文件。
然后到
https://adoptium.net/zh-CN/temurin/releases/
按服务器的操作系统版本下载OpenJDK 8 JRE的ZIP包(Windows)或者tar.gz包(Linux)。在编写本文时,OpenJDK 8的版本是8u362b08。
解压缩,然后把 javax.activation.jar 复制到 JRE 的 bin 子文件夹内。
在我之前的文章里面也有介绍。为避免读者不了解而浪费时间,这里再说明一下。如果要远程连接和操作服务器上MSM,需要在服务器的本机防火墙,开启如下端口和协议:
3071 TCP/UDP 5571 UDP
Windows环境下问题较少,卸载和安装过程都很顺利。按默认的路径,选择完整安装、启用或取消LDAP登录,选择默认的2048位密钥,日志告警选择默认的“自最后一次重启后”(Since Last Shutdown),很快就装完了。
注意,如果在安装时尚未配置Java运行环境,则安装结束前会弹出类似“CreateProcess Failed”这样的提示,这是因为MSM的服务程序无法启动Java进程而给出的提示。直接忽略就可以了。
1、完成安装后,移动之前解压的Open JDK 8 JRE目录到MSM的安装目录内。移动时应同时把文件夹名改短,比如直接命名为jre。移动后记录下jre的8.3格式短路径,如果MSM安装在默认位置:
C:\Program Files (x86)\MegaRAID Storage Manager
则8.3格式短路径即为:
C:\PROGRA~2\MEGARA~1\JRE
2、对服务器添加新用户。
该用户仅用于启动MSM的后台服务,账号名可以随意,比如就叫msm。重点是如何设置msm用户的属性。必须如下设置:
(1)密码和登录:设置复杂密码并勾选不能更改密码、密码永不过期。
(2)用户组:设置msm用户归属到Administrators组。
(3)本地安全策略设置:在“用户权限分配”策略组中的“作为服务登录”策略设置中添加msm用户。
注意以上设置有可能因个别测评机构的具体要求而存在冲突,在测评期间需要进行沟通说明,并按测评要求进行补充加固设置。
3、以msm用户身份登录,设置msm用户的环境变量。具体是在“msm的用户变量”列表下,点击“新建”按钮创建新的用户环境变量,变量名JRE_HOME,变量值是OpenJRE 8文件夹的短写路径。
如果“系统变量”列表中已经设置了JAVA_HOME和JRE_HOME之类的环境变量,则同名的用户环境变量会覆盖系统变量的变量值。
在上下截图中,可以观察到系统变量本身已经定义了JRE_HOME和JAVA_HOME,但当msm用户登录后,用户变量的JRE_HOME就会取代系统变量。
注销并切换回去系统管理员账号。
4、启动“服务”,找到MSMFramework服务项。如果服务已经在运行则先停止服务。
修改服务的登录页面属性,设置登录身份使用的账户为msm用户,输入密码。点击应用按钮后,切换回常规页面,点击启动按钮启动服务。
服务应能正常启动,可以通过任务管理器查看到VivaldiFramework.exe以及其派生的java进程正在运行。
注意,有可能是只启动了VivaldiFramework.exe,但并没有真正启动承担服务功能的java进程。
VivaldiFramework.exe的作用是通过获取JRE_HOME环境变量,调用java运行环境去启动服务进程,如果JRE_HOME没有设置,或者设置的路径不对,那就会出现服务没有能真正启动的情况。
笔者建议使用Process Explorer,它可以通过树状结构地呈现进程之间的创建关系,例如:
Process Explorer 是 Microsoft Windows Sysinternals Suite的其中一个工具,下载地址在:
https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite
5、因为同样需要基于指定的Java运行环境去运行MSM的控制台,因此需要修改MSM控制台启动脚本。即把这个文件:
C:\Program Files (x86)\MegaRAID Storage Manager\startupui.bat
用文本编辑器打开,然后把其中的
start %JRE_HOME%\bin\javaw -DVENUS=true -classpath .;GUI.jar;monitorgui.jar;DebugLog.jar;jaxen-1.1.jar;jdom-1.1.jar GUI.VivaldiStartupDialog ajsgyqkj=71244
修改为
start jre\bin\javaw -DVENUS=true -classpath .;GUI.jar;monitorgui.jar;DebugLog.jar;jaxen-1.1.jar;jdom-1.1.jar GUI.VivaldiStartupDialog ajsgyqkj=71244
调用javaw的操作也可以写成绝对路径而不是相对路径,但务必避免路径中出现空格。
6、双击startupui.bat,启动MegaRAID Storage Manager的控制台,检查能否发现本机服务器。然后登录服务器,检查日志,以及对存储尝试进行无害操作。以上操作均能成功完成就可以确认MSM已经完成安装。
7、最后是对msm用户补充安全加固设置。一般以等保测评的要求为前提,结合msm用户本身的用途定位进行设置。最低限度应该实施的本地安全策略设置包括:
拒绝本地登录 拒绝从网络访问这台计算机 拒绝通过远程桌面服务登录
小结
我们在Windows下通过指定用户启动MSM后台服务,并通过“用户环境变量”实现了为MSM后台服务单独配置了Java运行环境。在我自己而言有点折腾但还不算很折腾。但Linux那边就......且听下回分解。
本站微信订阅号:
本页网址二维码: