安装和升级 > 安装和配置指南 > 使用 PTC 解决方案安装程序 > 安装 Windchill 解决方案 > 可选产品设置 > Windchill Index Search 安装 > Windchill Index Search 安装后配置 > 在云模式下安装索引搜索服务器
  
在云模式下安装索引搜索服务器
如果已在云模式下安装索引搜索服务器,则完成以下步骤。
* 
请确保您正在使用 Java 8 或更高版本。否则,您需要在执行以下命令之前设置 SOLR_JAVA_HOME 环境变量:
Windows:SET SOLR_JAVA_HOME=<PATH_TO_JAVA_8>
Unix:export SOLR_JAVA_HOME=<PATH_TO_JAVA_8>
设置和启动 Zookeeper 节点
1. 为每个 Zookeeper 节点创建数据目录。例如:
Windows:
D:\ptc\commondata\zkdata\node1
D:\ptc\commondata\zkdata\node2
D:\ptc\commondata\zkdata\node3
Unix:
/opt/ptc/commondata/zkdata/node1
/opt/ptc/commondata/zkdata/node2
/opt/ptc/commondata/zkdata/node3
2. 创建名为 "myid" 的文件以标识 Zookeeper 节点。文件的目录应标识节点。
例如,以下 myid 文件的目录可以仅通过编号 1 表示:
Windows:
D:\ptc\commondata\zkdata\node1\myid
Unix:
/opt/ptc/commondata/zkdata/node1/myid
同样,输入 2 可以导航至 node2/myid,输入 3 可以导航至 node3/myid
* 
这些编号是分配给 Zookeeper 的 ID,并且可在下一步骤中用于 zoo.cfg
3. 创建 Zookeeper 配置文件:
<INDEX_SEARCH_HOME>\zookeeper\conf\zoo.cfg
其中,<INDEX_SEARCH_HOME> 为索引搜索服务器的安装目录。
为 node1 添加以下内容:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\ptc\\commondata\\zkdata\\node1 OR /opt/ptc/commondata/zkdata/node1
# the port at which the clients will connect
clientPort=<端口号>
server.1=<主机1>.ptcnet.ptc.com:2888:3888
server.2=<主机2>.ptcnet.ptc.com:2889:3889
server.3=<主机3>.ptcnet.ptc.com:2890:3890
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
为每个 Zookeeper 节点指定以下特性,这些特性均应是唯一的:
dataDir
Zookeeper 节点的数据目录。
clientPort
Zookeeper 监听请求的端口。
4. 通过执行以下命令启动所有 Zookeeper 节点:
Windows:
<INDEX_SEARCH_HOME>\zookeeper\bin\zkServer.cmd
Unix:
sh <INDEX_SEARCH_HOME>\zookeeper\bin\zkServer.sh start
* 
当启动 Zookeeper 节点时,它将开始与集合配置 (zoo.cfg) 中指定的其他 Zookeeper 节点进行通信。
启动过程中,您可能会在控制台或日志报告中看到节点无法连接到其他 Zookeeper 节点的错误。这是因为尚未启动那些节点。可以忽略这些错误。
创建 Solr 核心 (云)
* 
请确保您正在使用 Java 8 或更高版本。否则,您需要在执行以下命令之前设置 SOLR_JAVA_HOME 环境变量:
Windows:SET SOLR_JAVA_HOME=<PATH_TO_JAVA_8>
Unix:export SOLR_JAVA_HOME=<PATH_TO_JAVA_8>
1. 打开命令提示符,然后使用以下命令启动 Solr:
启动 Solr (Windows):
<INDEX_SEARCH_HOME>/bin/Index_Search_Server.bat start
停止 Solr (Windows):
<INDEX_SEARCH_HOME>/bin/Index_Search_Server.bat stop
启动 Solr (Unix):
sh <INDEX_SEARCH_HOME>/bin/Index_Search_Server.sh start
停止 Solr (Unix):
sh <INDEX_SEARCH_HOME>/bin/Index_Search_Server.sh stop
其中,<INDEX_SEARCH_HOME> 为索引搜索服务器的安装目录。
2. 在命令提示符中,导航至 <INDEX_SEARCH_HOME>/solr/bin,并执行以下命令来创建所需模块的核心:
Windows:
solr.cmd create -c <集合名称> -n <ConfigSet 名称> -d <ConfigSet 路径> -shards <碎片的数量> -replicationFactor <副本数 (Solr 节点)>
Unix:
solr create -c <集合名称> -n <ConfigSet 名称> -d <ConfigSet 路径> -shards <碎片的数量> -replicationFactor <副本数 (Solr 节点)>
* 
只需通过任何安装执行一次命令即可。Zookeeper 将使核心对整个 Solr 云可用。
Windchill Index Search
Windows:
solr.cmd create -c wblib -n wblib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\wblib -shards 1 -replicationFactor 2
Unix:
solr create -c wblib -n wblib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/wblib -shards 1 -replicationFactor 2
Windchill PartsLink
Windows:
solr.cmd create -c clfstructurelib -n clfstructurelib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\clfstructurelib -shards 1 -replicationFactor 2
Unix:
solr create -c clfstructurelib -n clfstructurelib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/clfstructurelib -shards 1 -replicationFactor 2
S1000D
Windows:
solr.cmd create -c sisaadlib -n sisaadlib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\sisaadlib -shards 1 -replicationFactor 2
Unix:
solr create -c sisaadlib -n sisaadlib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/sisaadlib -shards 1 -replicationFactor 2
* 
PTC 建议您为 Windchill Index SearchWindchill PartsLink 和 S1000D 创建核心,即使未安装可选模块也应如此。如果您稍后决定安装这些模块,则不需要创建各个核心。
3. 打开 Solr 管理器界面,并验证 Solr 正在运行以及核心可用:
http://<SOLR_HOSTNAME>:<SOLR_PORT>/solr
针对云模式更新 Solr 架构 (可选)
要更新 Solr 架构,请完成以下步骤:
1. 导航至 <INDEX_SEARCH_HOME>/solr_schemas 并进行所需更新。
2. 导航至 <INDEX_SEARCH_HOME>/solr/server/scripts/cloud-scripts 并执行以下命令,以将已更新架构上载到 Zookeeper:
Windows:
zkcli.bat -cmd upconfig -confname <configset 名称> -z <以逗号分隔的 Zookeeper 主机名列表:端口条目> -confdir <schema_config 的路径>
Unix:
zkcli.sh -cmd upconfig -confname <configset 名称> -z <以逗号分隔的 Zookeeper 主机名列表:端口条目> -confdir <schema_config 的路径>
例如:
Windows:
zkcli.bat -cmd upconfig -confname wblib -z host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -confdir <INDEX_SEARCH_HOME>\solr_schemas\wblib\conf
Unix:
sh zkcli.sh -cmd upconfig -confname wblib -z host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -confdir <INDEX_SEARCH_HOME>\solr_schemas\wblib\conf
添加或移除现有 Solr 云中的 Solr 节点
添加 Solr 节点
1. 按照 在云模式下安装索引搜索服务器 中介绍的步骤安装索引搜索服务器,并为 Zookeeper 主机、Solr 主机、Solr 数据目录、Solr 端口、Solr 用户和 Solr 密码提供适当的输入。
2. 启动 Solr 节点。
3. 使用 Solr URL 调用以下 API,以在此新节点上创建副本,并将其添加到 Solr 云:
<SOLR_URL>/solr/admin/collections?action=ADDREPLICA&collection=<Collection_name>&shard=<shard_name>
例如:
Windchill Index Search
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=wblib&shard=shard1
Windchill PartsLink
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=clfstructurelib&shard=shard1
S1000D:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=sisaadlib&shard=shard1
* 
您还可以包含其他参数以指定应创建副本的节点。例如:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=wblib&shard=shard1&node=127.0.0.1:9501_solr
移除 Solr 节点
1. 使用 Solr URL 调用以下 API,以从 Solr 云删除副本:
<SOLR_URL>/solr/admin/collections?action=DELETEREPLICA&collection=<Collection_name>&shard=<shard_name>&replica=<replica_node_naeme>
* 
碎片名称 (shard) 和副本节点名称 (coreNodeName) 值可以在 <INDEX_SEARCH_HOME>/solr/server/solr/<collection_core_name> 下的 core.properties 中找到。
例如:
Windchill Index Search
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=wblib&shard=shard1&replica=core_node1
Windchill PartsLink
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=clfstructurelib&shard=shard1&replica=core_node1
S1000D:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=sisaadlib&shard=shard1&replica=core_node1
2. 您可以针对已删除的 Solr 节点删除安装文件。
添加或移除现有 Solr 云中的 Zookeeper 节点
添加 Zookeeper 节点
1. 按照“在云模式下安装索引搜索服务器”中介绍的步骤安装索引搜索服务器,并为 Zookeeper 主机、Solr 主机、Solr 数据目录、Solr 端口、Solr 用户和 Solr 密码提供适当的输入。
2. 按照“设置和启动 Zookeeper 节点”一节中所述,通过添加 zoo.cfg 配置 Zookeeper 节点。
3. 更新所有现有 Zookeeper 节点的 zoo.cfg,以为新节点添加条目。
4. 重新启动所有 Zookeeper 节点。
5. 更新所有 Solr 节点的 solrserver.properties,以添加新的 Zookeeper 节点:
xconfmanager -s wt.index.zookeeperHosts=<以逗号分隔的 Zookeeper 主机名列表:端口条目> -t config/solrserver.properties -p
6. 重新启动所有 Solr 节点。
7. 更新 wt.properties 以添加新 Zookeeper 节点:
xconfmanager -s wt.index.zookeeperHosts=<以逗号分隔的 Zookeeper 主机名列表:端口条目> -t codebase/wt.properties -p
8. 重新启动 Windchill
移除 Zookeeper 节点
1. 更新所有现有 Zookeeper 节点的 zoo.cfg,以移除节点的条目。
2. 重新启动所有 Zookeeper 节点。
3. 更新所有 Solr 节点的 solrserver.properties,以移除 Zookeeper 节点:
xconfmanager -s wt.index.zookeeperHosts=<以逗号分隔的 Zookeeper 主机名列表:端口条目> -t config/solrserver.properties -p
4. 重新启动所有 Solr 节点。
5. 更新 wt.properties 以移除 Zookeeper 节点:
xconfmanager -s wt.index.zookeeperHosts=<以逗号分隔的 Zookeeper 主机名列表:端口条目> -t codebase/wt.properties -p
6. 重新启动 Windchill
配置 Solr 的基本验证 (云模式)
1. 打开命令提示符,然后导航至 <INDEX_SEARCH_HOME>/solr/server/scripts/cloud-scripts
2. 执行以下命令将 security.json 加载到 Zookeeper 节点集合:
Windows:
zkcli.bat -cmd putfile /security.json <INDEX_SEARCH_HOME>/config/solr/security.json -z <以逗号分隔的 Zookeeper 主机名列表:端口条目>
Unix:
sh zkcli.sh -cmd putfile /security.json <INDEX_SEARCH_HOME>/config/solr/security.json -z <以逗号分隔的 Zookeeper 主机名列表:端口条目>
* 
每当执行 xconfmanger 以设置索引搜索服务器的特性时,它均会以指定用户名和密码生成 <INDEX_SEARCH_HOME>/config/solr/security.json。此文件可加载到 Zookeeper 节点集合中,以设置或更改 Solr 云的验证信息。
3. 打开 Solr 管理器界面,并验证系统是否会提示您输入用户名和密码:
http://<SOLR_HOSTNAME>:<SOLR_PORT>/solr
更改 Solr 用户或密码
更改 Solr 用户或密码时,您必须更新 Windchill Index Search 客户端和服务器。
1. 打开 Windchill shell 并执行以下命令,以更改 Windchill Index Search 客户端的密码或用户:
xconfmanager -s wt.index.solrAdminUser=<New_User> -t codebase/WEB-INF/conf/index.solrAuth.properties -p
xconfmanager -s wt.index.solrAdminPassword=<New_Password> -t codebase/WEB-INF/conf/index.solrAuth.properties -p
2. 重新启动 Windchill
3. 在命令提示符中,导航至 <INDEX_SEARCH_HOME>/bin 并执行以下命令,以更改 Windchill Index Search 服务器的密码或用户:
Windows:
xconfmanager -s wt.index.server.solrAdminUser=<New_User> -t config/solrserver.properties -p
xconfmanager -s wt.index.server.solrAdminPassword=<New_Password> -t config/solrserver.properties -p
Unix:
sh xconfmanager -s wt.index.server.solrAdminUser=<New_User> -t config/solrserver.properties -p
sh xconfmanager -s wt.index.server.solrAdminPassword=<New_Password> -t config/solrserver.properties -p
4. 按照上述步骤将 <INDEX_SEARCH_HOME>/config/solr/security.json 加载到 Zookeeper 节点集合。
5. 重新启动 Solr 和 Zookeeper 节点。
为云索引搜索服务器 (Solr) 配置 SSL
在开始配置之前,您必须拥有以单个文件形式转换为 PEM 格式的证书和密钥。
* 
如果仅证书文件不可用,您可以选择通过证书和密钥文件生成一个仅证书文件:
1. 使用 keytool 实用程序将 JKS 密钥库转换为 PKCS12 格式:
keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore solr-ssl.keystore.p12 -srcstoretype jks -deststoretype pkcs12
2. 使用 openssl 命令将 PKCS12 格式的密钥库 (仅包括证书,但不包括密钥) 转换为 PEM 格式:
openssl pkcs12 -nokeys -in solr-ssl.keystore.p12 -out solr-ssl.cacert.pem
为 Solr 配置 SSL
为运行 Solr 的所有节点配置 Windchill Index Search 服务器。将相同证书和密钥文件用于所有节点。
1. 将证书 (JKS) 文件复制到 <Index_Search_Home>/solr/server/etc 中。
2. 设置常用的 SSL 相关的系统特性。
要激活 SSL 设置,请取消注释并更新以下文件中以 SOLR_SSL_* 开头的特性集:
Windows:bin\solr.in.cmd
例如:
set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_KEY_STORE_PASSWORD=secret)
set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_TRUST_STORE_PASSWORD=secret
REM Require clients to authenticate
set SOLR_SSL_NEED_CLIENT_AUTH=false
REM Enable clients to authenticate (but not require)
set SOLR_SSL_WANT_CLIENT_AUTH=false
Unix:bin/solr.in.sh
例如:
bin/solr.in.sh example SOLR_SSL_* configuration
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_TRUST_STORE_PASSWORD=secret
# Require clients to authenticate
SOLR_SSL_NEED_CLIENT_AUTH=false
# Enable clients to authenticate (but not require)
SOLR_SSL_WANT_CLIENT_AUTH=false
其中,"secret" 为创建证书时提供的密码。
3. 打开 Windchill shell 并执行以下命令,以将该协议设置为索引搜索客户端在连接到索引搜索服务器时所使用的 HTTPS:
xconfmanager -s wt.index.solrProtocol=https -t codebase/wt.properties -p
4. Windchill 配置为使用 SSL 时,所有在 Windchill 之外使用的 Java 客户端都需要证书来进行连接。
因此,必须将证书导入 Solr 云中的 Solr 节点所使用的 JVM。这样,Solr 节点便可连接到 Windchill 并下载索引文档。
将证书文件添加到 JVM 信任存储 (Solr 节点的 JDK/JVM)。
a. 导航至 Solr 节点所使用的 Java 位置,以便验证 <JAVA>/jre/lib/securitycacerts 文件的路径。
b. 导航至 <JAVA>/jre/bin 以导入新的证书。以对 cacerts 具有写入权限的用户身份运行 keytool 实用程序:
keytool -import -file <许可证文件> -alias <唯一名称> -keystore <cacerts 文件路径>
例如:
keytool -import -file D:\SolrWithSSL\solr-5.4.1\server\etc\solr-ssl.cacert.pem -alias Key_Alias -keystore ../lib/security/cacerts
* 
JVM 密钥库的默认密码是 "changeit"。
5. 重新启动 Windchill
为 Zookeeper 配置 SSL
1. 启动任何 Solr 节点之前,urlScheme 群集范围内的特性需要设置为 https
打开命令提示符,并导航至 <INDEX_SEARCH_HOME>/solr/server/scripts/cloud-scripts,然后执行以下命令:
Windows:
zkcli.bat -zkhost <以逗号分隔的 Zookeeper 主机名列表:端口条目> -cmd clusterprop -name urlScheme -val https
例如:
zkcli.bat -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
Unix:
sh zkcli.sh -zkhost <以逗号分隔的 Zookeeper 主机名列表:端口条目> -cmd clusterprop -name urlScheme -val https
例如:
sh zkcli.sh -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
* 
每当重新启动 Zookeeper 节点时,均应执行 urlScheme 命令。
2. 重新启动 Solr 云 (Zookeeper 节点和 Solr 节点),然后导航至 Solr 管理界面以验证 Solr 已运行 SSL。
* 
有关 SSL 的已知问题,请参阅以下站点: