修订历史记录

版本 ** ** ** **
2.0 2020-8-16 刘军 创建
2.1 2020-9-25 吴常 修改
2.2 2021-6-18 吴常 添加了IHS配置SSL说明


**

1. 安装手册简介

1.1. 编写目的

本文将在Centos环境下基于WebSphere Application Server Network Deployment Liberty部署Maximo集群环境;其目的是为开发、测试、运维人员独立部署Maximo集群环境提供资料参考。

2. 基于Centos操作系统的部署

2.1. 服务器准备

IP ** **
192.168.115. 108 操作系统:64位 CentOS Linux release 7.6
CPU: 4核
内存:4G
磁盘:40G
IHS服务器1
192.168.115. 112 操作系统:64位 CentOS Linux release 7.6
CPU: 4核
内存:4G
磁盘:40G
IHS服务器2
192.168.115.118 操作系统:64位 CentOS Linux release 7.6
CPU: 4核
内存:8G
磁盘:40G
集群控制器2、集群成员2
192.168.115.119 操作系统:64位 CentOS Linux release 7.6
CPU: 4核
内存:8G
磁盘:40G
集群控制器1、集群成员1
192.168.115.103 操作系统:64位 CentOS Linux release 7.6
CPU: 8核
内存:8G
磁盘:80G
数据库服务器

上述服务器配置为实验环境的配置,生产环境需要根据具体需求进行调整。

2.2. 安装包准备

上传安装介质:
//WAS-Liberty ND 安装包
wlp-nd-all-20.0.0.7.jar
//Open jdk 安装包
jdk-8u201-linux-x64.tar.gz
//IHS安装包
9.0.5-WS-IHS-ARCHIVE-linux-x86_64-FP003.zip
//Keepalived 安装包
keepalived-2.1.5.tar.gz

安装压缩解压工具:
yum install zip
yum install unzip

配置JDK:
Ø 解压安装包
tar -vxzf jdk-8u201-linux-x64.tar.gz -C /app/
Ø 配置环境变量
打开vi /etc/profile,添加jdk配置:
image.png
执行source /etc/profile

2.3. WAS-Liberty集群搭建

WAS-Liberty官方文档:
https://www.ibm.com/support/knowledgecenter/zh/SSAW57_liberty/as_ditamaps/welcome_liberty_ndmp.html

2.3.1. 安装WAS-Liberty

集群控制器、集群成员服务器上需要安装WAS-Liberty

进入WAS-Liberty安装介质目录,执行:
java -jar wlp-nd-all-20.0.0.7.jar —acceptLicense /app/IBM/wlp_20
image.png
进入WAS-Liberty安装目录:
cd /app/IBM/wlp_20/wlp
image.png
查看版本信息:
进入目录:/app/IBM/wlp_20/wlp /bin 执行:
./productInfo version
image.png

2.3.2. 创建集合体控制服务

分别登录两台集群控制器服务器:192.168.115.118、192.168.115.119
Ø 进入控制服务器wlp目录:/app/IBM/wlp_20/wlp /bin,执行:
./server create MXController
image.png
Ø 创建集合体控制器配置,执行:
./collective create MXController
—keystorePassword=ksAdmin
—createConfigFile=/app/IBM/wlp_20/wlp/usr/servers/MXController/collective-create-include.xml
image.png
进入集合体控制器服务目录/app/IBM/ wlp_20/wlp/usr/servers/MXController,
Ø 修改collective-create-include.xml 文件:
设置集合体管理员账号为(wasadmin/wasadmin):
修改
image.png
Ø 修改server.xml文件:
添加
ssl-1.0
adminCenter-1.0
dynamicRouting-1.0功能组件,实现集群控制功能;

添加



实现动态路由功能:
connectorClusterName 属性指定与集合体关联的动态路由选择的名称,如果未指定 connectorClusterName 属性,那么会使用集合体的名称(在多集合体动态路由的场景中必须针对每个进行动态路由的集合体设置唯一的逻辑名称)。
retryInterval 属性指定连接失败时重新连接到控制器之前等待的时间。
maxRetries 属性指定尝试重新连接到失败的集合体控制器的次数。

添加${server.config.dir},实现控制台在线编辑集群文件;
添加引入文件:
image.png
Ø 启动集合体控制服务:
进入目前/app/IBM/wlp/bin执行:
./server start MXController

Ø 集合体控制器管理界面
集合体控制器1http://192.168.115.119:9080/adminCenter/login.jsp
集合体控制器2:http://192.168.115.118:9080/adminCenter/login.jsp
image.png
输入之前设置的集合体管理员账号(wasadmin/wasadmin)进行登录
image.png

2.3.3. 创建集合体成员服务

分别登录集群成员服务器:192.168.115.118、192.168.115.119

Ø 登录集合体成员服务器进入wlp目录:/app/IBM/ wlp_20/wlp/bin,执行:
./server create maximo-ui-server
image.png

在目录/app/IBM/ wlp_20/usr/servers下会生成集合体成员服务目录maximo-ui-server:
image.png

Ø 启动集合体成员服务
进入目前/app/IBM/ wlp_20/bin执行:
./server start maximo-ui-server

2.3.4. 添加成员服务到集合体

分别登录集群成员服务器:192.168.115.118、192.168.115.119

Ø 进入成员服务器wlp目录/app/IBM/MXServer/ wlp_20/wlp/bin,执行:
./collective join maximo-ui-server
//要添加的成员服务器IP
—hostName=192.168.115.118
//集合体控制服务器IP
—host=192.168.115.118
//集合体控制服务器端口
—port=9443
//集合体控制服务器管理员用户
—user=wasadmin
//集合体控制服务器管理员密码
—password=wasadmin
//集合体控制服务器keystore密码
—keystorePassword=ksAdmin
//成员服务配置文件输出路径
—createConfigFile=/app/IBM/wlp_20/wlp/usr/servers/maximo-ui-server/collective-join-include.xml
image.png
Ø 进入目录:/app/IBM/wlp_20/wlp /usr/servers/ maximo-ui-server
修改collective-join-include.xml:
添加集群功能组件:clusterMember-1.0
添加集群名称:<clusterMember name=”maximoCluster02”/>
image.png
修改server.xml
添加功能组件:
ssl-1.0
sessionDatabase-1.0

添加会话保持配置(这里直接将用户会话数据写入会话数据库,如果系统用户访问并发比较大,建议通过单独的数据库来存储用户会话数据):
Ø 这里需要先将数据库驱动包添加到成员服务目录:/app/IBM/wlp_20/wlp/usr/servers/maximo-ui-server /apps/lib中.




transactional=”true”
type=”javax.sql.DataSource”
statementCacheSize=”10”
isolationLevel=”TRANSACTION_READ_COMMITTED”
commitOrRollbackOnCleanup=”commit”
syncQueryTimeoutWithTransactionTimeout=”true”
supplementalJDBCTrace=”false”>


minPoolSize=”10”
purgePolicy=”ValidateAllConnections”
connectionTimeout=”10s”
maxIdleTime=”30m”
agedTimeout=”30m”/>


添加集群配置:
${server.config.dir}

<?xml version=”1.0” encoding=”UTF-8”?>




javaMail-1.6
jdbc-4.2
jndi-1.0
wasJmsClient-2.0
ssl-1.0
webProfile-8.0
sessionDatabase-1.0



httpPort=”80”
httpsPort=”443” />





invalidationTimeout=”1800”
maxInMemorySessionCount=”5000”
alwaysEncodeUrl=”true”
cookieHttpOnly=”true”
invalidateOnUnauthorizedSessionRequestException=”false”/>



sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>




transactional=”true”
type=”javax.sql.DataSource”
statementCacheSize=”10”
isolationLevel=”TRANSACTION_READ_COMMITTED”
commitOrRollbackOnCleanup=”commit”
syncQueryTimeoutWithTransactionTimeout=”true”
supplementalJDBCTrace=”false”>


minPoolSize=”10”
purgePolicy=”ValidateAllConnections”
connectionTimeout=”10s”
maxIdleTime=”30m”
agedTimeout=”30m”/>

















${server.config.dir}





Ø 更新成员服务注册信息
进入成员服务器wlp目录/app/IBM/wlp_20/wlp/bin,执行:
./collective updateHost
//要更新的成员服务器IP
192.168.115.118
//集合体控制服务器IP
—host=192.168.115.118
//集合体控制服务器端口
—port=9443
//集合体控制服务器管理员用户
—user=wasadmin
//集合体控制服务器管理员密码
—password=wasadmin
//成员服务器OS的登录用户名
—rpcUser=root
//成员服务器OS的登录密码
—rpcUserPassword=itrobot
//文件传输操作的可读路径 (集合体控制服务的wlp目录)
—hostReadPath=/app/IBM/wlp_20/wlp
//文件传输操作的可写路径 (集合体控制服务的wlp目录)
—hostWritePath=/app/IBM/wlp_20/wlp
//成员服务器的jdk目录
—hostJAVAHome=/app/jdk1.8.0_201
image.png

Ø 启动成员服务
进入/app/IBM/wlp_20/wlp/bin 目录,执行:
./server start maximo-ui-server

注意:在集群控制服务中要看到maximo-ui-server服务是正常启动的,这样才能在后来HIS(动态路由)中正常访问
image.png
每个独立的服务器都要部署MXController和maximo-ui-server服务,一个MXController就是一个集群

2.3.5. 从集合体移除成员服务

如果需要从集合体中移除成员服务:
分别登录集群成员服务器:192.168.115.118、192.168.115.119

Ø 进入成员服务器wlp目录/app/IBM/ wlp_20/wlp/bin,执行:
./collective remove
//要移除的成员服务名
maximo-ui-server
//要移除的成员服务器IP
—hostName=192.168.115.118
//集合体控制服务器IP
—host=192.168.115.118
//集合体控制服务器端口
—port=9443
//集合体控制服务器管理员用户
—user=wasadmin
//集合体控制服务器管理员密码
—password=wasadmin
image.png

2.3.6. 安装IHS

分别登录IHS服务器192.168.115.108、192.168.115.120
将IHS安装归档文件9.0.5-WS-IHS-ARCHIVE-linux-x86_64-FP003.zip解压到指定目录/app/IBM:

unzip 9.0.5-WS-IHS-ARCHIVE-linux-x86_64-FP003.zip -d /app/IBM

进入IHS安装目录/app/IBM/IHS:
image.png
执行./postinstall.sh
image.png

2.3.7. 动态路由配置

动态路由功能部件允许将 HTTP 请求路由至 Liberty 集合体的成员,而不必在环境变化时重新生成 WebSphere 插件配置文件。添加、移除、启动、停止或修改服务器、集群成员、应用程序或虚拟主机时,系统会将新信息动态传送至 WebSphere 插件;系统将根据最新信息路由请求。

Ø 生成集群动态路由配置文件:
登录其中一台集合体控制服务器192.168.115.118,进入/app/IBM/wlp_20 /wlp/bin目录,执行:
./dynamicRouting setup
//集合体控制服务用户名:密码@IP:端口(如果是多集合体中间用逗号隔开,如:wasadmin:wasadmin@10.27.146.18:443,wasadmin:wasadmin@10.178.156.37:443)
—collectives=wasadmin:wasadmin@192.168.115.118:9443,wasadmin:wasadmin@192.168.115.119:9443
//集合体控制服务存储库密码
—keystorePassword=ksAdmin
//Plug-ins目录
—pluginInstallRoot= /app/IBM/IHS/plugin /
//Plug-ins服务名
—webServerNames=webserver1
image.png
在/app/IBM/ wlp_20/wlp/bin目录下会生成四个个文件:
plugin-cfg.xml
plugin-key.p12
plugin-key-collective1.p12
plugin-key-collective2.p12
将这四个文件复制到IHS服务器的WebSphere 插件服务目录:
scp
plugin-cfg.xml
plugin-key.p12
plugin-key-collective1.p12
plugin-key-collective2.p12
root@192.168.115.120: /app/IBM/IHS/plugin/config/webserver1/

Ø 再将p12格式密钥存储库转换为CMS格式:
登录IHS服务器192.168.115.120,进入/app/IBM/IHS /bin目录,执行:
./gskcmd -keydb -convert
//储存库密码(keystorePassword)
-pw ksAdmin
-db /app/IBM/IHS/plugin/config/webserver1/plugin-key.p12
-old_format pkcs12
-target /app/IBM/IHS/plugin/config/webserver1/plugin-key.kdb
-new_format cms
-stash

./gskcmd -keydb -convert
//储存库密码(keystorePassword)
-pw ksAdmin
-db /app/IBM/IHS/plugin/config/webserver1/plugin-key-collective1.p12
-old_format pkcs12
-target /app/IBM/IHS/plugin/config/webserver1/ plugin-key-collective1.kdb
-new_format cms
-stash

./gskcmd -keydb -convert
//储存库密码(keystorePassword)
-pw ksAdmin
-db /app/IBM/IHS/plugin/config/webserver1/plugin-key-collective2.p12
-old_format pkcs12
-target /app/IBM/IHS/plugin/config/webserver1/ plugin-key-collective2.kdb
-new_format cms
-stash

会在当前目录生成.kdb .rdb .sth格式的文件
image.png
Ø 修改plugin-cfg.xml成如下格式
image.png

Ø 启动IHS,进入/app/IBM/HTTP/Server/bin目录,执行:
./apachectl -k start

IBM HTTP Server在Windows须在IHS\bin 目录下,先执行httpd.exe -k install -n IHS9A(服务器名)创建服务。
卸载服务:httpd.exe -k uninstall -n IHS9A
在执行httpd.exe -k start -n IHS9A(服务器名) 启动服务

Ø 查看服务是否已启动,执行:
ps -ef | grep httpd
image.png
Ø 停止IHS,进入/app/IBM/HTTPServer/bin目录,执行:
./apachectl -k stop

2.3.8. 安装Keepalived

分别登录IHS服务器192.168.115.108、192.168.115.120

安装依赖包:
yum install -y gcc gcc-c++ openssl openssl-devel

解压Keepalived安装包:tar -zxvf keepalived-2.1.5.tar.gz
进入解压后的目录keepalived-2.1.5分别执行:
./configure —prefix=/usr/local/keepalived —sysconf=/etc
make && make install

安装成功后会在/usr/local、/etc 目录下创建keepalived目录
安装目录:/usr/local/keepalived
配置文件目录:/etc/keepalived

2.3.9. IHS高可用配置

通过Keepalived+VIP(192.168.115.150)的方式来避免IHS的单点故障。
分别登录IHS服务器192.168.115.108(从)、192.168.115.120(主)
进入Keepalived配置文件目录:/etc/keepalived
创建IHS服务监控脚本文件check_ihs.sh:

#!/bin/bash

A=ps -C httpd --no-header &#124; wc -l #判断IHS服务是否正常运行
if [ $A -eq 0 ];then #如果A=0说明IHS没有在运行
/app/IBM/IHS/bin/apachectl -k start #尝试重新启动IHS
sleep 3 #睡眠3秒
if [ ps -C httpd --no-header &#124; wc -l -eq 0 ];then #如果IHS服务重启不成功,则返回1,否则返回0
exit 1
else
exit 0
fi
fi

给权限:chmod +x check_ihs.sh
修改Keepalived配置文件keepalived.conf:
192.168.115.120(主)


! Configuration File for keepalived
#检测IHS进程的脚本,如果IHS服务没有在运行(返回1)则将Keepalived主节点权重减20,当权重小于Keepalived备节点的权重时,VIP就会自动漂到从服务器上
vrrp_script chk_ihs {
script “/etc/keepalived/check_ihs.sh”
interval 5 #5秒执行一次监控脚本,这个时间要大于Keepalived心跳检测时间
weight -20 #监控脚本检测失败时减少的权重
}

global_defs {
notification_email {
#可以添加邮件提醒
}
}

vrrp_instance VI_1 {
state MASTER #服务器角色(主)
interface ens33 #映射的网卡接口名
virtual_router_id 51 #虚拟路由ID, 主从节点保持一致
unicast_src_ip 192.168.115.120 #单播的源地址
unicast_peer {
192.168.115.108 #单播目标地址
}
priority 100 #实例优先级(主节点要大于从节点)
advert_int 1 #心跳检测时间间隔 1 秒

authentication {
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass 123456 #设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
}
track_script { chk_ihs #检测脚本 }#虚拟IP地址,可以设置多个虚拟IP地址,每行一个 virtual_ipaddress {
192.168.115.150
}
}


192.168.115.108(从)


! Configuration File for keepalived
#检测IHS进程的脚本,如果IHS服务没有在运行(返回1)则将Keepalived主节点权重减20,当权重小于Keepalived从节点的权重时,VIP就会自动漂到从服务器上
vrrp_script chk_ihs {
script “/etc/keepalived/check_ihs.sh”
interval 5 #5秒执行一次监控脚本,这个时间要大于Keepalived心跳检测时间
weight -20 #监控脚本检测失败时减少的权重
}

global_defs {
notification_email {
#可以添加邮件提醒
}
}

vrrp_instance VI_1 {
state BACKUP #服务器角色(从)
interface ens33 #映射的网卡接口名
virtual_router_id 51 #虚拟路由ID, 主从节点保持一致
unicast_src_ip 192.168.115.108 #单播的源地址
unicast_peer {
192.168.115.120 #单播目标地址
}
priority 100 #实例优先级(主节点要大于从节点)
advert_int 1 #心跳检测时间间隔 1 秒

authentication {
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass 123456 #设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
}
track_script { chk_ihs #检测脚本 }#虚拟IP地址,可以设置多个虚拟IP地址,每行一个 virtual_ipaddress {
192.168.115.150
}
}


主从服务器的IHS检测脚本及Keepalived配置文件都创建好后,分别启动主从Keepalived服务;分别登录192.168.115.120(主)、192.168.115.108(从):
执行:systemctl start keepalived
可以发现虚拟IP自动绑定到主服务器(192.168.115.120)上:
image.png
从服务器(192.168.115.108)则没有绑定虚拟IP:
image.png
此时如果通过虚拟IP 192.168.115.150 访问IHS服务,则默认请求的是主服务器(192.168.115.120)上的IHS服务。
image.png
现在模拟主服务器宕机,将192.168.115.120服务器关机,会发现虚拟IP自动绑定到从服务器(192.168.115.108)上:
image.png
此时通过虚拟IP仍然可以正常访问IHS服务,此时请求的是从服务器上的IHS服务,这样就实现了IHS服务的高可用:
image.png
设置Keepalived服务开机自启动:
systemctl enable keepalived

取消Keepalived服务开机自启动:
systemctl disable keepalived

停止Keepalived服务:
systemctl stop keepalived

重启Keepalived服务:
systemctl restart keepalived

2.3.10 HIS配置SSL

10.1 Linux环境下创建密钥

进入HIS安装目录/app/IBM/HIS/bin下执行如下命令

—创建密钥
./gskcapicmd -keydb -create -db /app/IBM/HIS /conf/key.kdb -pw password -stash
//使用一组缺省可信 CA 证书来填充密钥库,缺省情况下,新的密钥库未包含任何可信 CA 证书。
./gskcmd -cert -populate -db E:\app\IBM\IHS\conf\key.kdb -pw password
//创建自签名证书以用于测试目的(可选)
./gskcapicmd -cert -create -db E:\app\IBM\IHS\conf\key.kdb -dn “cn=172.16.20.10” -label “172.16.20.10” -size 2048
//将证书从 JKS 或 PKCS12 导入到 IBM HTTP Server 可使用的密钥文件中(可选)
//您可以将其他工具创建的现有专用密钥和证书导入到现有的密钥文件中,而不是创建新的专用密钥(个人证书)。
gskcapicmd -cert -import -db other.p12 -pw pkcs12password -target key.kdb -target_pw password
//列示密钥库中的证书。
gskcapicmd -cert -list -db E:\app\IBM\IHS\conf\key.kdb
//查看证书到期数据(可选)
// -expiry 标志会导致显示未来 numdays 天内被视为到期的证书。使用 0 以显示已到期的证书,或者使用较大的数字以显示所有证书的到期日期。
gskcapicmd -cert -list -db E:\app\IBM\IHS\conf\key.kdb -expiry 365

参考网址:
https://www.ibm.com/docs/zh/ibm-http-server/9.0.5?topic=environment-http-server-certificate-management

10.2 Windows环境下创建密钥

在HIS安装目录下E:\app\IBM\IHS\bin,执行ikeyman.bat,会弹出IBM密钥管理工具
image.png
image.png
image.png
创建新的证书签名请求

  • 从菜单选项创建新证书请求。此请求,也称为证书签名请求 (CSR),将发送到证书颁发机构进行验证。根据请求中提供的信息,CA 将对您做功课,以确保您就是您所说的那个人,包括可能尝试通过电子邮件或电话联系您或您的企业。这些信息尽可能准确很重要:
    • 密钥标签:MAX_SSL_KEY
    • 钥匙尺寸:2048
    • 通用名称:www.mycompany.com(这是您要保护的主机名,必须正确!)
    • 组织:我的公司
    • 地区:您所在的城市
    • 州/省:您所在的州
    • 邮编:您的邮编
    • 国家或地区:您的国家
    • 电子邮件地址:admin@mycompany.com
    • 输入文件名:C:\IBM\HTTPServer\maximo.arm
    • 单击“确定”。现在我们将让 IBM 密钥管理实用程序保持打开状态。我们稍后再谈。

image.png
也可以导入已有的密钥
image.png
可以选择多种格式
image.png
更新您的 Maximo 系统属性

  • 此时,您应该能够通过 SSL (HTTPS) 访问 Maximo。只有一些系统属性应该更新,以便让一切都搞定。
  • 以管理员身份登录到 Maximo。
  • 导航到系统配置 > 平台配置 > 系统属性应用程序。
  • 更新以下属性,这应该只涉及更改现有属性值以将 http:// 更改为 https://

    • mxe.doclink.path01:这是用于附加文档。
    • mxe.help.protocol:用于应用程序帮助。请注意,在 7.6.0.4 中,帮助现在指向 IBM 的网站。在任一情况下,属性值都应更改为 https。
    • mxe.int.webappurl:用于集成框架 Web 服务和 HTTP 调用。
    • mxe.oslc.restwebappurl:这是用于通过 REST 接口的 OSLC 调用。
    • mxe.oslc.webappurl:这是通过标准接口进行 OSLC 调用。

      10.3 修改httpd.conf配置文件

      将监听端口放开,指定好创建的密钥文件,重启HIS,这个时候https和http都能正常访问
      image.png


    image.png
    image.png
    https之所以是红色是因为证书过了有效期
    image.png
    参考网址:
    https://a3jgroup.com/maximo-ssl-https-configuration/

    2.4. 基于集群部署Maximo

    分别登录成员服务器:192.168.115.118、192.168.115.119进行操作

    1.4.1 构建Maximo部署包


    进入Maximo WAS-Liberty版部署包构建目录:
    /app/IBM/SMP/maximo/deployment/was-liberty-default
    image.png
    分别构建Maximo各模块应用包,除了Maximo-UI和Maximo-X应用包部署在同一个服务器上之外,其他每个应用包都可以部署在单独的服务器上。

** ** **
Maximo User Interface maximo-ui The UI code and supporting code. Required because it is the primary interface for accessing Maximo Asset Management.
Maximo-X maximo-x Bundle contains the static UI code for the Work Center UI. Required.
Maximo Cron maximo cron Contains the code that is needed to run Maximo cron jobs. Required.
Maximo Application Programming Interface maximo api Contains the older REST API and the new REST API code. Optional. Used only if the API needs to be available separately. By default, the REST API is bundled with the Maximo UI bundle.
Maximo JMS Consumer maximo jms consumer Used to continuously process the integration messages available on JMS Queues by using message driven beans (MDB). Optional. Used only if messages need to be processed.
Maximo Enterprise Adapter maximo mea This bundle exposes the enterprise web services API. Optional. Used only if the web services API is used.
Maximo Report maximo report Contains the code that is needed to enable BIRT Report Only Server (BROS). Optional. Used to separate out the work load that is related to execution of reports that are submitted from the Maximo UI. The report engine is also bundled with the Maximo UI bundle and the BROS server is only used if the BROS server URL is setup by using the Maximo propertymxe.report.birt.viewrurl

构建的部署包位于目录:/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment
image.png

1.4.2 部署maximo-ui服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-ui/maximo-ui-server/apps
将maximo-ui服务部署包
maximoui.war
maximo-x.war
拷贝到集合体成员服务器的/app/IBM/wlp_20/wlp/usr/servers/ maximo-ui-server/apps目录下。

1.4.3 部署maximo-cron服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-cron/maximo-cron-server/apps
将maximo-cron服务部署包
maximocron.war
拷贝到maximo定时任务服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-cron-server/apps目录下。

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-cron/maximo-cron-server将server.xml文件拷贝到
maximo定时任务服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-cron-server/apps
目录下,并调整server.xml内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>




wasJmsClient-2.0
jndi-1.0

javaMail-1.6
jdbc-4.2
ssl-1.0
webProfile-8.0


















sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>

1.4.4 部署maximo-api服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-api/ maximo-api-server/apps
将maximo-api服务部署包
maximoapi.war
拷贝到maximo接口服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-api-server/apps目录下。

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-api/ maximo-api-server将server.xml文件拷贝到
Maximo接口服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-api-server目录下,并调整server.xml内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>




javaMail-1.6
jdbc-4.2
ssl-1.0
webProfile-8.0
wasJmsClient-2.0



host=”*”
httpPort=”9081”
httpsPort=”9444” />






















sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>

1.4.5 部署maximo-report服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-report/maximo-report-server/apps
将maximo-report服务部署包
maximoapi.war
拷贝到maximo报表服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-report-server/apps目录下。

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-report/maximo-report-server将server.xml文件拷贝到
Maximo接口服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-report-server目录下,并调整server.xml内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>




javaMail-1.6
jdbc-4.2

ssl-1.0
webProfile-8.0



host=”*”
httpPort=”9082”
httpsPort=”9445” />






















sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>


对独立部署了报表服务,就要在maximo-ui-server服务中的maximo.properties配置文件中添加报表地址,这样打开报表时就可以跳转到报表服务器上
image.png

1.4.5.1 Nginx配置报表服务高可用

1. 目的
在部署二个或以上的报表服务的时候,其中一个报表服务器宕机的情况下maximoui能够自动选择运行正常服务器进行访问。
2. 安装步骤
先安装相关的依赖包

[root@nginx ~]# yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装ngingx

[root@nginx ~]# yum -y install nginx

常用命令

查看状态 systemctl status nginx.service
启动 systemctl start nginx.service
停止 systemctl stop nginx.service
重启 systemctl restart nginx.service
重新加载Nginx配置 killall -s HUP nginx

启动成功后访问方式是端口加ip,例如通过浏览器访问http://172.28.8.205/, 就会出现欢迎页面,默认端口是80,修改端口在配置文件中修改/etc/nginx/nginx.conf
3. 修改配置文件

4. # For more information on configuration, see:
5. # Official English Documentation: http://nginx.org/en/docs/
6. #
Official Russian Documentation: http://nginx.org/ru/docs/
7.
8. user nginx;
9. #nginx进程数,建议设置为等于CPU总核心数
10. workerprocesses auto;
11. #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
12. error_log /var/log/nginx/error.log;
13. #进程文件
14. pid /run/nginx.pid;
15.
16. # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
17. include /usr/share/nginx/modules/.conf;
18. #工作模式与连接数上限
19. events {
20. #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是
21. #Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
22.    #use epoll;
23. #单个进程最大连接数(最大连接数=连接数
进程数)
24. worker_connections 1024;
25. }
26. #设定http服务器
27. http {
28. log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ‘
29. ‘$status $body_bytes_sent “$http_referer” ‘
30. ‘“$http_user_agent” “$http_x_forwarded_for”‘;
31.
32. access_log /var/log/nginx/access.log main;
33.
34. sendfile on;
35. tcp_nopush on;
36. tcp_nodelay on;
37. #==客户端链接超时时间
38. keepalive_timeout 65;
39.
40. types_hash_max_size 2048;
41.
42. include /etc/nginx/mime.types;
43. default_type application/octet-stream;
44.
45. # Load modular configuration files from the /etc/nginx/conf.d directory.
46. # See http://nginx.org/en/docs/ngx_core_module.html#include
47. # for more information.
48. include /etc/nginx/conf.d/.conf;
49.
50. # 设定负载均衡后台服务器列表
51. upstream maximoreport {
52. #(访问ip)
53. #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务#器,可以解决session的问题。
54. ip_hash;
55. #server 172.28.8.205:9082 weight=10;
56. #206和205是报表服务器的IP地址
57. server 172.28.8.206:9082 max_fails=2 fail_timeout=60s;
58. server 172.28.8.205:9082 max_fails=2 fail_timeout=60s;
59. }
60.
61. server {
62. #监听端口
63. listen 81 default_server;
64. listen [::]:81 default_server;
65. #域名可以有多个,用空格隔开
66. #172.28.8.205是nginx所在服务器ip
67. server_name 172.28.8.205
68. root /usr/share/nginx/html;
69.
70. # Load configuration files for the default server block.
71. include /etc/nginx/default.d/
.conf;
72.
73. #location用来匹配同一域名下多个URI的访问规则
74. #比如动态资源如何跳转,静态资源如何跳转等
75. #location后面跟着的/代表匹配规则
76. location / {
77. #站点根目录,可以是相对路径,也可以使绝对路径
78. #没有可以不用设置
79. #root html;
80. #默认主页(没有可以不用设置)
81. #index index.html index.htm;
82. #转发后端站点地址,一般用于做软负载,轮询后端服务器
83. proxy_pass http://maximoreport/;
84. #重新定义或者添加发往后端服务器的请求头
85. #给请求头中添加客户请求主机名
86. proxy_set_header Host $host;
87. #给请求头中添加客户端IP
88. proxy_set_header X-Real-IP $remote_addr;
89. #将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。
90. #如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值
91. #将与$remote_addr变量相同
92. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
93. }
94.
95. error_page 404 /404.html;
96. location = /404.html {
97. }
98.
99. error_page 500 502 503 504 /50x.html;
100. location = /50x.html {
101. }
102. }
103.
104. # Settings for a TLS enabled server.
105. #
106. # server {
107. # listen 443 ssl http2 default_server;
108. # listen [::]:443 ssl http2 default_server;
109. # server_name
;
110. # root /usr/share/nginx/html;
111. #
112. # ssl_certificate “/etc/pki/nginx/server.crt”;
113. # ssl_certificate_key “/etc/pki/nginx/private/server.key”;
114. # ssl_session_cache shared:SSL:1m;
115. # ssl_session_timeout 10m;
116. # ssl_ciphers HIGH:!aNULL:!MD5;
117. # ssl_prefer_server_ciphers on;
118. #
119. # # Load configuration files for the default server block.
120. # include /etc/nginx/default.d/*.conf;
121. #
122. # location / {
123. # }
124. #
125. # error_page 404 /404.html;
126. # location = /404.html {
127. # }
128. #
129. # error_page 500 502 503 504 /50x.html;
130. # location = /50x.html {
131. # }
132. # }
133.
134. }

修改每个maximo-ui-server服务中的maximo.properties配置文件中的报表访问地址
mxe.report.birt.viewerurl地址是上面nginx配置的监听地址
image.png
image.png
配置完成,只要报表服务器有一个是正常的,就不会影响用户访问

1.4.6 部署maximo-mea服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-mea /maximo-mea-server/apps
将maximo-mea服务部署包
maximomea.ear
拷贝到maximo报表服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-mea-server/apps目录下。

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-mea /maximo-mea-server将server.xml文件拷贝到
Maximo接口服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-mea-server目录下,并调整server.xml内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>





javaMail-1.6
jdbc-4.2

jaxws-2.2
jndi-1.0
wasJmsClient-2.0

ssl-1.0
webProfile-8.0




host=”*”
httpPort=”9084”
httpsPort=”9447” />






















sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>

1.4.7 部署maximo-jmsconsumer服务

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-jmsconsumer/maximo-jmsconsumer-server/apps
将maximo-jmsconsumer服务部署包
maximojmsconsumer.ear
拷贝到maximo报表服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-jmsconsumer-server /apps目录下。

从目录
/app/IBM/SMP/maximo/deployment/was-liberty-default/deployment/maximo-jmsconsumer/maximo-jmsconsumer-server将server.xml文件拷贝到
Maximo JMS服务器的/app/IBM/wlp_20/wlp/usr/servers/maximo-jmsconsumer-server目录下,并调整server.xml内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>




javaMail-1.6
jdbc-4.2

mdb-3.2
jmsMdb-3.2
jndi-1.0
wasJmsClient-2.0

ssl-1.0
webProfile-8.0




host=”*”
httpPort=”9083”
httpsPort=”9446” />

























sslProtocol=”TLSv1.2”
keyStoreRef=”defaultKeyStore”
trustStoreRef=”defaultTrustStore”
clientAuthenticationSupported=”true” />

sslProtocol=”TLSv1.2”/>

sslProtocol=”TLSv1.2”/>

1.4.8 部署附件服务器

1.4.8.1 创建附件服务器

登录附件服务器并进去目录/app/IBM/wlp_20/wlp/bin
创建附件服务 ./server create maximo-doclinks-server
启动附件服务 ./server start maixmo-doclinks-server
修改/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/server.xml文件

<?xml version=”1.0” encoding=”UTF-8”?>




javaMail-1.6
jdbc-4.2
jndi-1.0
wasJmsClient-2.0
ssl-1.0
webProfile-8.0



host=”*”
httpPort=”9083”
httpsPort=”9446” />












在服务的apps文件夹下创建doclinks.war文件夹,并在doclinks.war文件夹下创建Assist、Attachements、Diagrams、Images、WEB-INF四个文件,进入WEB-INF文件夹下创建web.xml文件并添加如下内容

<?xml version=”1.0” encoding=”UTF-8”?>

<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
http://java.sun.com/dtd/web-app_2_3.dtd">





dwg


image/vnd.dwg




doc


application/msword




txt


text/plain




csv


application/csv




dxf


image/vnd.dxf




pcx


image/x-pcx




DWG


image/vnd.dwg




DOC


application/msword




TXT


text/plain




CSV


application/csv




DXF


image/vnd.dxf




PCX


image/x-pcx




xls


application/vnd.ms-excelword




XLS


application/vnd.ms-excelword


测试附件服务是否部署成功
进入Attachements文件夹,创建test.txt文件,在文件里输入Hello World
在浏览器中输入http://172.28.8.205:9083/doclinks/Attachements/test.txt
image.png
出现Hello World 表示服务成功启动

1.4.8.2 部署NFS

如果搭建了多个集群服务,独立部署的附件服务器需要使用NFS实现目录文件共享(网络磁盘挂载),附件服务器作为NFS的服务端,其它集群服务器作为NFS的客户端


1. 服务端操作
1.1 安装nfs-utils, rpcbind (注意:服务端和客户端都要安装)
yum install nfs-utils rpcbind
1.2 设置rpcbind和nfs服务开机自动启动
systemctl start rpcbind #启动rpcbind
systemctl enable rpcbind #配置rpcbind开机启动

systemctl start nfs-server #启动nfs
systemctl enable nfs-server #配置nfs开机启动

rpcinfo -p localhost #查看注册端口情况
showmount -e localhost #查看自己共享的服务
1.3 设置配置文件/etc/exports

[root@successful ~]# vim /etc/exports
/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war 172.28.8.*(rw,sync,insecure,no_subtree_check,no_root_squash)

*表示172.28.8下所有的客户端都可以挂载
1.4 启动nfs 和启动rpcbind

[root@successful ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@successful ~]# service rpcbind start
Starting rpcbind: [ OK ]
  1. <br /> 1.5 查看是否已经设置成功<br />
showmount -e 查看服务端挂载是否成功已经挂载的目录
[root@eam_test_app Attachements]# showmount -e
Export list for eam_test_app:
/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war 172.28.8.*
showmount -a 查看是否有客户端挂载到服务端
[root@eam_test_app Attachements]# showmount -a
All mount points on eam_test_app:



2. 客户端操作
2.1 分别登录到所有的集群服务下查看服务端是否有共享磁盘

[root@eam_test_db ~]# showmount -e 172.28.8.205
Export list for 172.28.8.205:
/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war 172.28.8.*


2.2 挂载远程磁盘到本地目录
创建本地目录/app/doclinks
进行挂载

[root@eam_test_db doclinks]# mount -t nfs 172.28.8.205:/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war /app/doclinks
  1. <br />如果挂载失败有可能是防火墙的问题,开通下列防火墙<br />80/tcp 9080/tcp 873/tcp 24/tcp 2049/tcp 111/tcp
开放指定的端口
# firewall-cmd —zone=public —add-port=2049/tcp –permanent
重启防火墙
# firewall-cmd –reload
查看开放了那些端口
# firewall-cmd —list-ports


常用命令介绍

mount常用命令参数选项介绍:
-t vsftype:指定要挂载的设备上的文件系统类型;
-r: readonly,只读挂载;
-w: read and write, 读写挂载;
-n: 不更新/etc/mtab;
-a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L ‘LABEL’: 以卷标指定挂载设备;
-U ‘UUID’: 以UUID指定要挂载的设备;
-B, —bind: 绑定目录到另一个目录上;

image.png
mount -l 可以查看详细的挂载信息

2.3 查看是否挂载成功
image.png
挂载失败时如果报:mount.nfs: No route to host的错误,可能是防火墙的问题,要关闭防火墙或者开放指定的端口
2.4 开机自动挂载
编辑# vim /etc/fstab
image.png
输入10.181.172.171:/data/ /data/ nfs defaults 0 0
10.181.172.171:/data/是服务端的ip和目录,/data是客户端的目录
取消挂载命令 umount /app/doclinks
取消挂载失败可以用强制取消挂载的方式
umount: /app/doclinks: target is busy
如果已备份了数据需要强行卸载,并且尝试umount -f /app/doclinks 还是失败的情况
或者使用“懒卸载”方式,命令执行后系统会自动关闭相关进程后再卸载:
umount -l /app/doclinks

1.4.8.3 Maximo配置

进入系统属性应用,配置附件路径
image.png

进入应用修改缺省文件路径
image.png

测试:添加文件并查看
image.png
image.png
image.png
能够正常的查看附件内容,至此附件服务部署成功,附件服务也存入对应的文件
image.png
集群服务器上也有对应的文件
image.png
注意:如果集群服务器上取消挂载,集群服务器上的附件文件就会消失,只有附件服务器上才有附件文件

1.4.8.4 实时自动同步备份附件内容

4.1 rsync+inotify简介

rsync(remote synchronize)是 Liunx/Unix 下的一个远程数据同步工具,它可通过 LAN/WAN 快速同步多台主机间的文件和目录。
inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux 内核从2.6.13版本起,加入了对 inotify 的支持。通过 inotify 可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,inotify-tools便可以监控文件系统下文件的各种变化情况了

4.2 检查系统内核是否支持inotify
  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1750374/1623998296759-b16a9cf9-e472-4242-a6d5-48ce6da30fd6.png#align=left&display=inline&height=259&margin=%5Bobject%20Object%5D&name=image.png&originHeight=259&originWidth=797&size=138281&status=done&style=none&width=797)

4.3 同步节点部署(rsync)
  1. 安装rsync yum -y install rsync<br /> rsync 安装好之后,在 etc 目录下有一个rsyncd.conf 文件,修改rsync配置文件<br /> vim /etc/rsyncd.conf,内容如下<br />
uid = nobody
gid = nobody
use chroot = yes
max connections = 10
strict mode=yes
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup]
path = /db/doclinks/backup205/
comment = backup file
ignore errrors
read only=no
write only=no
hosts allow=172.28.8.205
hosts deny=*
list=false
uid=root
gid=root
auth users=root
secrets file=/etc/rsync.password
  1. 其中需要用到一个密码文件,也就是上面配置的 secrets file 的值 /etc/rsync.password,在 rsync3.1.3 版本中默认没有密码文件,需要手动创建,内容格式为:user:passworduser 就是上面配置的 yxcpassword 就是密码,如下所示。<br />echo "root:1234qwer" > /etc/rsync.password<br />然后需要给密码文件600权限<br />chmod 600 /etc/rsync.password<br />启动 rsync 守护进程<br />/usr/bin/rsync --daemon<br />启动之后可查看 rsync 进程,如下<br />ps -ef | grep rsync<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1750374/1623998314172-0745e14e-4188-4df6-bee3-2dc6f49f6d26.png#align=left&display=inline&height=117&margin=%5Bobject%20Object%5D&name=image.png&originHeight=117&originWidth=882&size=77833&status=done&style=none&width=882)<br />如有需要可加入系统自启动文件
echo “/usr/bin/rsync —daemon” >> /etc/rc.local

rsync 默认端口为873,所以开放873端口

firewall-cmd —add-port=873/tcp —permanent —zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd —reload

4.4 源服务器节点部署(rsync+inotify)
  1. 安装rsync yum -y install rsync<br /> 配置rsync<br /> 源服务器节点中只需要配置认证密码文件,首先在etc 文件夹下创建文件 rsync.password,只需要密码,不需要用户,密码需要和同步节点中的一致,我这里也就是1234qwer。<br />
vim /etc/rsync.password
1234qwer
#需要给密码文件600权限
chmod 600 /etc/rsync.password
#启动 rsync 守护进程
/usr/bin/rsync —daemon
#如有需要可加入系统自启动文件
echo “/usr/bin/rsync —daemon” >> /etc/rc.local
#如有需要可加入系统自启动文件
firewall-cmd —add-port=873/tcp —permanent —zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd —reload

4.5 手动同步测试
rsync -avH —port 873 —delete /app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/ root@172.28.8.206::backup —password-file=/etc/rsync.password
  1. 在同步服务器上(172.28.8.206)查看文件<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1750374/1623998337094-68138934-9f43-46a5-bcab-c72d15c6902f.png#align=left&display=inline&height=295&margin=%5Bobject%20Object%5D&name=image.png&originHeight=295&originWidth=685&size=187182&status=done&style=none&width=685)<br /> 源服务节点(172.28.8.205)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1750374/1623998345146-304187ba-401f-4822-a694-d48541e77348.png#align=left&display=inline&height=258&margin=%5Bobject%20Object%5D&name=image.png&originHeight=258&originWidth=760&size=167590&status=done&style=none&width=760)

4.6 部署inotify

1 下载安装
inotity-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
解压并安装

[root@jwxt src]# tar zxvf inotify-tools-3.14.tar.gz
[root@jwxt src]# cd inotify-tools-3.14
[root@jwxt inotify-tools-3.14]# ./configure —prefix=/usr/local/inotify
[root@jwxt inotify-tools-3.14]# make && make install


2 创建rsync同步的shell脚本

[root@eam_test_app doclinks.war]# vim /app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/inotifyrsync.sh

脚本内容如下

#!/bin/bash
host1=172.28.8.206
src=/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/
dst1=backup
user1=root
/usr/local/inotify/bin/inotifywait -mrq —timefmt ‘%d/%m/%y %H:%M’ —format ‘%T %w%f%e’ -e close_write,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg —delete —progress —password-file=/etc/rsync.password $src $user1@$host1::$dst1 > /dev/null 2>&1
echo “${files} was rsynced.” >> /tmp/rsync.log 2>&1
done


其中 host1 是 client 的 ip,src 是 server 端要实时监控的目录,des1 是认证的模块名,需要与 client 一致,user1 是建立密码文件里的认证用户。

#然后给这个脚本赋予权限
chmod 755 /app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/inotifyrsync.sh
#后台运行这个脚本
/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/inotifyrsync.sh &
#有需要可以将脚本加入系统自启动文件中
echo “/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/inotifyrsync.sh &” >> /etc/rc.local

4.7 实时同步备份验证

源服务器节点创建文件
image.png
在同步节点服务器查看
image.png
同步自此完成,要注意的地方是同步节点服务器修改文件是不会同步到源服务器节点上
如果想实现双向同步,就需要把刚才的步骤在节点服务器喝源服务器反向做一遍

4.8 使用screen现实同步脚本后始终保持台运行

虽然inotifyrsync.sh脚本在后台运行,但如果你断开Terminal(终端)连接,inotifyrsync.sh后天进程也会跟着停止,同步就会失效,使用screen可以然进程始终在后台运行
1.安装:yum -y install screen
2.创建窗口:screen -S [name] //这样新建一个名字为name的窗口,并入到该窗口中
例如:screen -S syncdoclink,执行完后会进入screen的窗口,再执行你要运行的脚本/app/IBM/wlp_20/wlp/usr/servers/maximo-doclinks-server/apps/doclinks.war/inotifyrsync.sh &
然后按CTRL +a +d 快捷键可以实现分离,这时窗口会弹出[detached]的提示,并回到主窗口,这样同步脚本会始终在后台保持执行
screen -ls 查看已创建的会话
screen kill +进程ip 终止进程

1.4.9 启动Maximo服务

分别登录Maximo各服务所在服务器,进入目录/app/IBM/wlp_20/wlp/bin
启动maximo-ui服务:./server start maximo-ui-server
启动maximo-cron服务:./server start maximo-cron-server
启动maximo-api服务:./server start maximo-api-server
启动maximo-report服务:./server start maximo-report-server
启动maximo-mea服务:./server start maximo-mea-server
启动maximo-jmsconsumer服务:./server start maximo-jmsconsumer-server

1.4.10 停止Maximo服务

分别登录Maximo各服务所在服务器,进入目录/app/IBM/wlp_20/wlp/bin
启动maximo-ui服务:./server stop maximo-ui-server
启动maximo-cron服务:./server stop maximo-cron-server
启动maximo-api服务:./server stop maximo-api-server
启动maximo-report服务:./server stop maximo-report-server
启动maximo-mea服务:./server stop maximo-mea-server
启动maximo-jmsconsumer服务:./server stop maximo-jmsconsumer-server

2.5. FAQ

2.5.1 Unable to find supported browser

原因分析:
如果Firefox已更新到版本10或更新版本,则Launchpad无法识别Firefox是否已安装.

解决办法:
恢复到Firefox的早期版本,或者编辑脚本launchpad\browser.sh,将以下代码添加到下面的方法中
修改前:

supportedFirefoxVersion()
{
case “$“ in
Firefox\ [1-9].) return 0;;
Firefox/[1-9].) return 0;;
Firefox) return 1;;
rv:1.[7-9]) return 0;;
rv:[2-9].) return 0;;
rv:) return 1;;
Mozilla
\ 1.[7-9]) return 0;;
Mozilla
\ [2-9].[0-9]) return 0;;
) return 1;;
esac
}


修改后:

supportedFirefoxVersion()
{
case “$“ in
Firefox\ [1-9][0-9].) return 0;;
Firefox/[1-9][0-9].) return 0;;
Firefox\ [1-9].) return 0;;
Firefox/[1-9].) return 0;;
Firefox) return 1;;
rv:1.[7-9]) return 0;;
rv:[2-9].) return 0;;
rv:) return 1;;
Mozilla
\ 1.[7-9]) return 0;;
Mozilla
\ [2-9].[0-9]) return 0;;
) return 1;;
esac
}


如果还是报同样的错,查看火狐浏览器版本: firefox -version
如果浏览器版本高于:Mozilla Firefox 40.0,建议安装小于40版本的火狐浏览器,经测试如下两个版本的火狐浏览器可以:
Mozilla Firefox 30.0
Mozilla Firefox 40.0

2.5.2 CTGIN8229E

/var/ibm/InstallationManager/bundles/plugins/com.ibm.tivoli.pae.prereq_7.6.1000.201807190108/com/ibm/tivoli/pae/prereq/SystemRequirements/result.xml not found exception
image.png
原因分析:
安装过程种,PRS检查程序未执行通过。

解决办法:
执行:export BYPASS_PRS=True
再执行:./launchpad64.sh

2.5.3 执行打包脚本报错

image.png

原因分析:
这个错误是由于Windows系统和Linux系统的不同编码造成的。Windows下的回车是\r\n,而Linux下的回车是\n,所以用shell远程编写的脚本中的回车不被Linux系统识别,但使用vim编辑的时候还看不到\r。

解决办法:
用vim编辑脚本文件时加上-b,即vim -b filename,这样打开的文件是”Binary mode”,可以看到多出来的东西,显示的是^M,删掉保存运行就行了。

2.5.4 应用服务启动报ClassNotFoundException异常

image.png

原因分析:
以应用包maximoui.war为例,maximoapi.war、maximocron.war、maximoreport.war也存在同样问题的应用包原因一样;
java.lang.ClassNotFoundException: org.apache.xerces.util.XMLChar 是因为用原生打包脚本打包的 maximoui.war缺少依赖包:xercesImpl-2.7.1.jar;经查maximoui.war原生打包脚本/app/IBM/SMP/maximo/deployment/was-liberty-default/ buildmaximoui-war.xml,发现打包时并没有把xercesImpl-2.7.1.jar打包到war包中:
image.png
解决办法:
修改原生打包脚本
/app/IBM/SMP/maximo/deployment/was-liberty-default/ buildmaximoui-war.xml
将xercesImpl-2.7.1.jar 一起打包入war包中。
image.png
然后重新打包maximoui.war

2.5.5 执行gskcmd命令报错



原因分析:
开源jdk的bin目录下没有ikeycmd命令
image.png
解决办法:
下载ibm官方jdk,比如:ibm-java-sdk-8.0-6.15-linux-x86_64.tgz,解压后,在jre目录下有ikeycmd命令;然后修改ihs的gskcmd命令内容,直接调用ibm官方jdk中的ikeycmd命令:
image.png
错误: 找不到或无法加载主类com.ibm.gsk.ikeyman.ikeycmd
image.png
解决办法:Windows的就下载ibm-java-sdk-8.0-6.15.zip
image.png

2.5.6 通过IHS进行动态路由报503错误

image.png
原因分析:
集合体成员服务的server.xml 的httpEndpoint里配置了host=””属性
image.png

解决方法:
将集合体成员服务的server.xml 的httpEndpoint里host=”
”属性去掉即可。
image.png

2.5.7 通过IHS进行动态路由出现登录后无法正常跳转到启动中心

原因分析:
集合体成员服务开启了会话保持功能,但是用户登录的会话在持久化时出现了异常,导致Session没有正常进行持久化。

解决方法:
如果无法定位到会话持久化异常的原因,则先关闭会话保持功能。

2.5.8 会话持久化到数据库报错

image.png
image.png
image.png
原因分析:
Maximo原生的类:
psdi.webclient.system.websession.SimpleWebAppSession
psdi.server.MXServerInfo
psdi.util.logging.Log4jLogger
没有实现java.io.Serializable接口,导致对会话中这些类型对象序列化时报错,导致会话无法持久化到数据库中。

解决方法:
对maximo这三个原生类进行反编译并重写,实现java.io.Serializable接口,并重写打包部署文件。
image.png

image.png

2.5.9 Keepalived监控脚本无法执行

监控脚本本身没问题,可以单独执行,但是通过Keepalived无法通过监控脚本进行主从切换;经查Keepalived日志
发现如下提示:
日志提示1:WARNING - script ‘/etc/keepalived/check_nginx.sh’ is not executable for uid:gid 0:0 - disabling.

原因分析:
keepalived监控脚本没有执行权限

解决方法:
给监控脚本开放权限:chmod +x /etc/keepalived/check_nginx.sh


日志提示2:/etc/keepalived/check_nginx.sh exited due to signal 15

解决方法:
修改keepalived配置文件如下两个参数:
interval 5 #监控脚本的执行时间要大于advert_int(3秒不行就5秒)
advert_int 1 #心跳检查间隔时间

2.5.10 windows下httpd服务安装错误

image.png
解决办法:修改C:\app\IBM\IHS\conf\httpd.conf配置文件
image.png
把文件中相关的文件路径和配置文件路径替换成IHS安装的路径