Servigistics InService 部署 > 在叢集中部署 Viewer > 安裝和配置叢集中的 Viewer
  
安裝和配置叢集中的 Viewer
下列小節提供如何在叢集環境中部署 Servigistics InService 的範例。
* 
在記錄文件期間,將會呼叫 Linux/UNIX 與 Windows 作業系統間語法與檔案名稱的差異。一般來說,如果您使用的是 Windows 作業系統,則請使用適當的變數語法。
例如:
${ENIGMA_CONFIG_HOME} 變更為 %ENIGMA–CONFIG–HOME%。此外,使用 Windows 指令時,.bat 檔案陳述式的開頭應該為 "SET"
在 Linux/UNIX 中提供 shell 指令集 (.sh) 檔案,在 Windows 中則提供批次 (.bat) 檔案。
針對 Windows 作業系統的考量
Servigistics InService 不支援將 <InS_Data> 資料夾 (資料目錄) 儲存在 Windows 中裝載的硬碟上。僅支援 UNC 路徑。例如︰\\<hostname>\ptc\InS_Data
Servigistics InService 僅支援本機伺服器上的 <InS_SW> 資料夾 (軟體目錄)。目前不支援位於遠端伺服器/位置的 <InS_SW>
進行下列組態變更。
1. 轉至登錄 (執行->regedit)。
2. 導覽至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
3. 新增一個名為 DisabledComponents 的新參數,值為 ff
4. 重新啟動電腦。
事前準備
在開始之前,您必須:
1. 安裝並配置 Oracle 資料庫。
2. 定義 Viewer 叢集名稱。
建立 Viewer 的叢集名稱。這是使用者存取系統所用的名稱或 URL。例如,mycompany.ptc.com
在所有 Viewer 伺服器上,修改 /etc/hosts 中的回送行,使每個 Viewer 回應預定的叢集名稱:
127.0.0.1 localhost mycompany.ptc.com
3. 配置 Publisher 和 Viewer 之間的共用空間:
對於 TAL 任務,使用 Publisher 可寫入 TAL 內容的共用位置,Viewer 可存取該位置並寫入至其 E3C Storage。
* 
在此範例中,此位置位於 /ptcdata/bundles 下。這是所有這些伺服器皆可存取的 NFS 裝載位置。
4. 配置 Viewer 之間的共用空間:
每個資料中心的 E3C Storage 位置應該是該資料中心中所有 Viewer 皆可存取的共用位置。
* 
在此範例中,E3C Storage 位置位於 /ptcdata/E3C/ 下。這是所有這些 Viewer 可存取的 NFS 裝載位置。在此組態中,會在這些共用磁碟位置建立 InService DataWork 目錄。
安裝 Windchill Directory Server
如果要針對高可用性解決方案進行配置,則必須在 Servigistics InService 載入點之外安裝 Windchill Directory Server。如果未在高可用性解決方案中安裝,則可略過此部分,並繼續安裝 Publisher
欲安裝 Windchill Directory Server,請遵循下列步驟:
1. 啟動 Servigistics InService 安裝程式。如需啟動和使用此安裝程式的詳細資訊,請參閱使用 Servigistics InService 安裝程式
2. 選取「獨立版產品或元件」
3. 選取 Windchill Directory Server
4. 選取不在預定 Servigistics InService 載入點中的位置。可以是旁邊的位置。例如,如果慾將 Servigistics InService 安裝於 /ptc/InService,則將 Windchill Directory Server 安裝於 /ptc/WindchillDS_10.2/WindchillDS
5. 設定 LDAP 設定確保組態、管理與企業管理分開時,完成 ‘o=’ 陳述式。例如,‘o=ptc’
6. 完成安裝
7. 執行下列步驟,將 Publisher (或 Viewer) 安裝於 Windchill Directory Server 所在的同一個伺服器上:
在載入點內,以 tar 或 zip 的方式壓縮安裝程式資料夾。
移除安裝程式資料夾 (保留 tar 或 zip 檔案)
移除安裝程式資料夾之後,即可繼續進行 Publisher/Viewer 安裝程式。
安裝 Publisher
欲安裝 Publisher,請參閱使用 Servigistics InService 安裝程式。請注意以下事項:
選取「新建產品安裝」後,選取 Publisher 選項。
在現有資料庫上建立新使用者。確保已選取「建立資料庫結構描述並載入基礎資料」選項。
如果您已經有現有的 Windchill Directory Server (由於使用高可用性解決方案時需要),請選取「配置給現有安裝」選項。否則,安裝並配置新的 Windchill Directory Server
安裝 Viewer
欲安裝 Publisher,請參閱使用 Servigistics InService 安裝程式。請注意以下事項:
在所有 Viewer 伺服器上,修改 /etc/hosts 中的回送行,使每個 Viewer 回應預定的叢集名稱。例如:127.0.0.1 insrv.mycompany.com
選取「新建產品安裝」後,選取 Viewer 選項。
在現有資料庫上建立新使用者。確保已選取「建立資料庫結構描述並載入基礎資料」選項。
* 
如果您要在多網站叢集中安裝 Viewer,您必須為叢集中的每個網站指定不同的 Oracle 結構描述、Data 目錄以及 Work 目錄。
如果您已經有現有的 Windchill Directory Server (由於使用高可用性解決方案時需要),請選取「配置給現有安裝」。否則,安裝並配置新的 Windchill Directory Server
對於 web 伺服器,使用已新增至主機檔案的叢集名稱。例如:insrv.mycompany.com
DataWork 目錄應列出預定的 E3C Storage 位置,預定叢集中的所有 Viewer 可存取此共用位置。
Publisher 後安裝步驟
對於安裝後的 Publisher,必須執行下列動作:
1. 停止任何可能正在執行的 coreServer、coreCMIserver 以及 jboss 服務。
2. 備份 E3C.properties。輸入下列內容備份 E3C.properties:
$ cd <InService>/SW
$ cp –p E3C.properties E3C.properties.bak
3. 編輯 E3C.properties 以包含下列內容。某些是新內容,其他則是將修改的現有內容。
* 
請勿移除在安裝期間建立的任何現有參數。
針對 Linux/UNIX:
proxy.url=<Publisher hostname>:8080
package.destination.folder=/ptcdata/bundles/StorePackets
pub.host.name=<Publisher hostname>
pub.port=8080
Site1.host.name=<Viewer in Site 1 to manage TAL activity>
remote.port=8080
針對 Windows:
proxy.url=<publisher hostname>:8080
package.destination.folder=\\\\ptcdata\\bundles\\StorePackets
pub.host.name=<publisher hostname>
pub.port=8080
Site1.host.name=<Viewer in Site 1 to manage TAL activity>
remote.port=8080
* 
請確保為叢集中每個 Viewer 新增一個網站主機名稱 (Site1.host.name)。
4. 編輯 E3C.properties 修改‘localhost’參照,將其替換為實際伺服器主機名稱。將這些內容從︰
core.server.host=localhost
bl.host.name=localhost
pr.host.name=localhost
調整為
core.server.host=<Publisher host name>
bl.host.name=<Publisher host name>
pr.host.name=<Publisher host name>
5. 輸入下列內容備份 sitesDescriptor.xml:
$ cd <InService>/Config/System/Config
$ cp –p sitesDescriptor.xml sitesDescriptor.xml.bak
6. 編輯 sitesDescriptor.xml,如下所示:
根據您的作業系統 (Windows 或 Linux) 調整 Preview 網站要成為的 Datatransfer 節點
針對 Linux/UNIX:
<Datatransfer OS=”linux” path=”${package.destination.folder}”/>
針對 Windows:
<Datatransfer OS=”WindowXp” path=”${package.destination.folder}”/>
在 <Sites></Sites> 內新增新的「執行時間」網站節點:
針對 Linux/UNIX:
<Site id="Runtime–Site1">
<Distribution type="FS">
<Datatransfer OS="linux" path="${package.destination.folder}"/>
</Distribution>
<Communication url="${Site1.host.name}:${remote.port}"/>
</Site>
針對 Windows:
<Site id="Runtime–Site1">
<Distribution type="FS">
<Datatransfer OS="WindowsXP" path="${package.destination.folder}"/>
</Distribution>
<Communication url="${Site1.host.name}:${remote.port}"/>
* 
對叢集中的每個網站重複此步驟。
7. 在 <SiteGroups></SiteGroups> 內新增新的群組節點
針對 Linux/UNIX:
<Group id="Runtime">
<Distribution type="FS">
<DatatransferOS="linux" path="${package.destination.folder}"/>
</Distribution>
<Site siteType="REMOTE" id="Runtime-Site1" master="YES" />
</Group>
針對 Windows:
<Group id="Runtime">
<Distribution type="FS">
<Datatransfer OS="windowsXP" path="${package.destination.folder}"/>
</Distribution>
<Site siteType="REMOTE" id="Runtime-Site1" master="YES" />
</Group>
* 
如果 SiteGroup 內有多個網站,只有一個應該包含 master="Yes" 屬性。
8. 對叢集中的每個網站重複上述步驟。
9. 備份 SiteInfo.conf.xml
$ cd <InService>Config/System/Config
$ cp –p SiteInfo.conf.xml SiteInfo.conf.xml.bak
10. 修改 SiteInfo.conf.xml,具體方式是將分散節點從 (取決於您的作業系統,Linux/UNIX 或 Windows):
<Distribution type="FTP">
<Datatransfer hostname="${ftp.host.name}" port="${ftp.port}"
username="${ftp.user.name}" password="${ftp.password}"
transferMode="binary" path="${ftp.relative.path}"/>
</Distribution>
調整為針對 Linux/UNIX:
<Distribution type="FS">
<Datatransfer OS="linux" path="${package.destination.folder}"/>
</Distribution>
或針對 Windows:
<Distribution type="FS">
<Datatransfer OS="WindowXP" path="${package.destination.folder}"/>
</Distribution>
或者,您可以建立啟動指令集來啟動所有 Publisher 流程。為此,請在 <InService>/SW 資料夾中建立啟動指令集:
針對 Linux/UNIX
#!/bin/sh –e

# this version of startup commands will start services in the background
#./coreServer.sh startservice
#./coreCMIServer.sh startservice
#./jboss.sh &

# this version of startup commands will start services in separate xterm windows.
Easier for testing and validation
xterm –title "Core Server" –sb –sl 9999 –e "cd /ptc/
InService/SW && ./coreServer.sh" &
xterm –title "Core CMI Server" –sb –sl 9999 –e "cd /ptc/
InService/SW && ./coreCMIServer.sh" &
xterm –title "InService"
–sb –sl 9999 –e "cd /ptc/
InService/SW && ./jboss.sh" &
針對 Windows:
INFO NEEDED
Viewer 後安裝步驟
對於安裝後的 Viewer,必須執行下列動作:
1. 停止任何可能正在執行的 coreServer、coreCMIserver 以及 jboss 服務。
2. 輸入下列內容備份 E3C.properties:
$ cd <InService>/SW
$ cp –p E3C.properties E3C.properties.bak
3. 編輯 E3C.properties 以包含下列內容。某些是新內容,其他則是將修改的現有內容。此外,如果在叢集中有多個網站,則某些內容將有不同的值,具體視其網站而定。
* 
請勿移除在安裝期間建立的任何現有參數。
針對 Linux/UNIX:
proxy.url=<Publisher hostname>:8080
coreCMI.server.name=<primary Viewer hostname>
package.destination.folder=/ptcdata/bundles/StorePackets
pub.host.name=<Publisher hostname>
pub.port=8080
remote.host.name=<Publisher host name>
remote.port=<Publisher port>
core.server.host1=<Viewer 1 hostname>
core.server.host2=<additional Viewer host name>
core.server.port1=<initial coreServer port>
core.server.port2=<additional coreServer port>
bl1.host.name=<initial Viewer host name>
bl2.host.name=<additional Viewer host name>
pr1.host.name=<initial Viewer host name>
pr2.host.name=<additional Viewer host name>
lb.master.host=<initial Viewer host name>
lb.backup.host=<additional Viewer host name>
lb.port=2020
針對 Windows:
proxy.url=<publisher hostname>:8080
coreCMI.server.name=<primary viewer hostname>
package.destination.folder=\\\\ptcdata\\bundles\\StorePackets
pub.host.name=<publisher hostname>
pub.port=8080
remote.host.name=<publisher host name>
remote.port=<publisher port>
core.server.host1=<viewer 1 hostname>
core.server.host2=<additional viewer host name>
core.server.port1=<initial coreServer port>
core.server.port2=<additional coreServer port>
bl1.host.name=<initial viewer host name>
bl2.host.name=<additional viewer host name>
pr1.host.name=<initial viewer host name>
4. 編輯 E3C.properties 修改‘localhost’參照,將其替換為實際伺服器主機名稱。將這些內容從︰
core.server.host=localhost
bl.host.name=localhost
pr.host.name=localhost
調整為
core.server.host=<Viewer host name>
bl.host.name=<Viewer host name>
pr.host.name=<Viewer host name>
5. 備份 setEnv.sh / setEnv.bat
針對 Linux/UNIX:
$ cd <InService>/SW
$ cp –p setEnv.sh setEnv.sh.bak
針對 Windows:
$ cd <InService>/SW
$ cp –p setEnv.bat setEnv.bat.bak
6. 編輯 setenv.sh / setEnv.bat 以包含下列內容。如果在叢集中有多個網站,則某些內容將有不同的值,具體視其網站而定。
* 
請勿移除在安裝期間建立的任何現有參數。
在 Windows 中,.bat 檔案陳述式的開頭應該為 "SET"。
Linux:
# ===================================
# core server Load Balancer variables
# ===================================
LB_MASTER_HOST=<initial Viewer host name>
LB_BACKUP_HOST=<additional Viewer host name>
LB_PORT=2020
Windows:
# ===================================
# core server Load Balancer variables
# ===================================
SET LB_MASTER_HOST=<initial Viewer host name>
SET LB_BACKUP_HOST=<additional Viewer host name>
SET LB_PORT=2020
7. 備份 SiteInfo.conf.xml:
$ cd <Servigistics InService>Config/System/Config
$ cp –p SiteInfo.conf.xml SiteInfo.conf.xml.bak
8. 修改 SiteInfo.conf.xml
a. 如果您使用的 2 個 Viewer 都使用同一個 E3C Storage,則您需要將其他 URL 新增至 PresentationLayers BusinessLayers
* 
會使用應該在 3C.properties 中建立的以下新參數:
pr1.host.name
pr2.host.name
bl1.host.name
bl2.host.name
<PresentationLayers>
<PL Name="PLLayer1" Url="http://${pr1.host.name}:
${web.server.port}/Deployment/CommandServlet.srv?context
=Deployment.Application.Presentation"/>
<PL Name="PLLayer2" Url="http://${ pr2.host.name}:
${web.server.port}
/Deployment/CommandServlet.srv?context=
Deployment.Application.Presentation"/>
</PresentationLayers>
<BusinessLayers>
<BL Name="BLLayer1" Url="http://${bl1.host.name}:
${web.server.port}
/DeploymentApp/CommandServlet.srv?context=Deployment.Application.
BusinessLogic"/>
<Communication Host="${bl1.host.name}" Url="${bl1.host.name}:
${app.server.port}" />
<BL Name="BLLayer2" Url="http://${bl2.host.name}:
${web.server.port}/
DeploymentApp/CommandServlet.srv?context=Deployment.Application.
BusinessLogic"/>
<Communication Host="${bl2.host.name}" Url="${bl2.host.name}:
${app.server.port}" />
</BusinessLayers>
9. 取消註解並依如下方式編輯 LoadBalancer 節點:
<LoadBalancer ServerCrb="ServerCrb" LoadBalancerCrb="LoadBalancerCrb">
<BL Name="BLLayer2"/>
<PL Name="PLLayer1"/>
<BL Name="BLLayer1"/>
<PL Name="PLLayer2"/>
</LoadBalancer>
10. 找到參照 AdminRef1 的伺服器節點,並按照以下方式對其進行修改:
<Server Type="Read" Master="true" ServerCrb="ServerCrb" AdminRef =
"AdminRef1" >
<PL Name="PLLayer1"/>
<BL Name="BLLayer1"/>
</Server>
11. 為叢集中的每個核心伺服器新增其他伺服器節點。每個伺服器節點應該參照相應的 AdminRef 節點、簡報與商業元件的組合。
<Server Type="Read" Master="true" ServerCrb="ServerCrb"
AdminRef ="AdminRef2" >
<PL Name="PLLayer1"/>
<BL Name="BLLayer1"/>
</Server>
<Server Type="Read" Master="true" ServerCrb="ServerCrb"
AdminRef ="AdminRef3" >
<PL Name="PLLayer2"/>
<BL Name="BLLayer2"/>
</Server>
<Server Type="Read" Master="true" ServerCrb="ServerCrb"
AdminRef ="AdminRef4" >
<PL Name="PLLayer2"/>
<BL Name="BLLayer2"/>
</Server>
12. 將分散節點從 (取決於您的作業系統,Linux、UNIX 或 Windows):
<Distribution type="FTP">
<Datatransfer hostname="${ftp.host.name}" port="${ftp.port}"
username="${ftp.user.name}" password="${ftp.password}"
transferMode="binary" path="${ftp.relative.path}"/>
</Distribution>
調整為針對 Linux/UNIX:
<Distribution type="FS">
<Datatransfer OS="linux" path="${package.destination.folder}"/>
</Distribution>
或針對 Windows
<Distribution type="FS">
<Datatransfer OS="WindowXP" path="${package.destination.folder}"/>
</Distribution>
13. 備份 customContext_3.conf.xml
$ cd <InService>/Config/System/Config
$ cp –p customContext_3.conf.xml customContext_3.conf.xml.bak
14. 修改 customContext_3.conf.xml
* 
有三個 customContext_X.conf.xml 檔案;_1、_2 和 _3。啟動期間,會以該順序處理它們。最佳作法是僅修改 _3。如果元件已經存在於 _1 中,請將該元件複製到 _3 中並視需求對其進行修改 (如同下方對 ServerCrb_Upd1 與 AdminRef_Upd1 元件所執行的操作)。
15. 在 <Components></Components> 內新增下列元件節點,修改 customContext_3.conf.xml。
<Component Name="ServerCrb">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerCrbHelper</Helper>
<CorbaServiceLocator>Core</CorbaServiceLocator>
<IOR>corbaloc:iiop:${lb.master.host}:${lb.port},:${lb.backup.host}:
${lb.port}/ObjectNameServer</IOR>
</Creation>
</Component>

<Component Name="ServerCrb_Upd1" Singleton="true">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerCrbHelper</Helper>
<IOR>corbaloc:iiop:${coreCMI.server.name}:${coreCMI.server.port}/
ObjectNameServer</IOR>
</Creation>
</Component>

<Component Singleton="true" Name="AdminRef_Upd1">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerAdminCrbHelper</Helper>
<IOR>corbaloc:iiop:${coreCMI.server.name}:${coreCMI.server.port}/
ObjectNameServerAdmin</IOR>
</Creation>
</Component>

<Component Singleton="true" Name="AdminRef1">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerAdminCrbHelper</Helper>
<IOR>corbaloc:iiop:${core.server.host1}:${core.server.port1}/
ObjectNameServerAdmin</IOR>
</Creation>
</Component>

<Component Singleton="true" Name="AdminRef2">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerAdminCrbHelper</Helper>
<IOR>corbaloc:iiop:${core.server.host1}:${core.server.port2}/
ObjectNameServerAdmin</IOR>
</Creation>
</Component>

<Component Singleton="true" Name="AdminRef3">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerAdminCrbHelper</Helper>
<IOR>corbaloc:iiop:${core.server.host2}:${core.server.port1}/
ObjectNameServerAdmin</IOR>
</Creation>
</Component>

<Component Singleton="true" Name="AdminRef4">
<Creation Type="RegisteredCrb">
<Helper>com.enigma.Titan.crb.ServerAdminCrbHelper</Helper>
<IOR>corbaloc:iiop:${core.server.host2}:${core.server.port2}/
ObjectNameServerAdmin</IOR>
</Creation>
</Component>

<Component Name="LoadBalancerCrb" Singleton="true" >
<Creation Type="RegisteredCrb" >
<Helper>com.enigma.Titan.crb.LBControlCrbHelper</Helper>
<IOR>corbaloc:iiop:${lb.master.host}:${lb.port},:
${lb.backup.host}:${lb.port}/ObjectNameLBControl</IOR>
</Creation>
</Component>
配置多個核心伺服器
欲對叢集組態配置多個核心伺服器,請複製預設 coreServer 組態 XML 和 logger 內容檔案,然後視需要進行修改:
$ cd <InService>/Config/System/Config/Core
$ cp serverCfg.xml serverCfg01.xml
$ cp coreLoggerCfg.properties coreLoggerCfg01.properties
編輯 serverCfg01.xml
按如下方式編輯 serverCfg01.xml:
1. 修改 logger 節點,如下所示:
<Logger Path=”coreLoggerCfg01.properties”/>
2. 更新此行中的主機與埠號︰
<Param Name="-ORBendPointNoPublish" Value="${CORE_ORBendPointNoPublish:
-giop:tcp:127.0.0.1:2020}"/>
新增實際主機名稱,而不是 127.0.0.1,且埠號將為 2031。例如:
<Param Name="-ORBendPointNoPublish" Value="${CORE_ORBendPointNoPublish:
-giop:tcp:<Hostname>:2031}"/>
3. 更新下行:
<Param Name="-ORBendPointPublish" Value="${CORE_ORBendPointPublish:
-giop:tcp:127.0.0.1:2020}"/>
將其變更為:
<Param Name="-ORBendPointPublish" Value="${CORE_ORBendPointPublish:
-giop:tcp:<主要負載平衡器主機名稱>:
2020,giop:tcp:<備份負載平衡器主機名稱>:2020}"/>
 
4. 更新下行:
<Param Name="-TServerPIDFile" Path="coreServer.pid" />
將其變更為:
<Param Name="-TServerPIDFile" Path="coreServer01.pid" /> 
5. 在檔案的底部附近,輸入下列內容啟用 KeepEnigmaLTCache 項目:
<KeepEnigmaLTCache/>
6. 儲存修改
7. 按如下方式編輯 coreLoggerCfg01.properties
修改下列各行調整記錄檔建立:
log4j.appender.FILE_APPENDER.fileName=${core_log}/coreServer01.log
或者,輸入下列內容,將輸出層級設定為 DEBUG:
log4j.rootLogger=DEBUG, CONSOLE_APPENDER, FILE_APPENDER
8. 複製新的 coreServer 組態 XML (serverCfg01.xml) 以及 Logger 內容檔,以便將同時執行的每個預定 coreServer 都有一個這樣的檔案。例如:
$ cp serverCfg01.xml serverCfg02.xml
$ cp coreLoggerCfg01.properties coreLoggerCfg02.properties
9. 修改 serverCfg02.xml (以及任何其他的 coreServer 組態檔案) 以便擁有具唯一性的 logger 內容、埠號以及 pid 檔案:
<Logger Path=”coreLoggerCfg02.properties”/>
<Param Name="-ORBendPointNoPublish" Value="${CORE_ORBendPointNoPublish:
-giop:tcp:<Hostname>:2032}"/>
此外,更新下列陳述式︰
<Param Name="-TServerPIDFile" Path="coreServer01.pid" /> 
至︰
<Param Name="-TServerPIDFile" Path="coreServer02.pid" />  
* 
<Hostname> 應為您將在其上更新 ServerCfg.xml 的 Viewer。
10. 修改 coreLoggerCfg02.properties (以及任何其他的 Logger 內容檔) 以便擁有具唯一性的記錄檔名稱:
log4j.appender.FILE_APPENDER.fileName=$
{core_log}/coreServer02.log
11. 複製 coreServer 啟動指令集並視需要修改:
針對 Linux/UNIX:
$ cd <InService>/SW
$ cp coreServer.sh coreServer01.sh
針對 Windows:
$ cd <InService>/SW
$ cp coreServer.bat coreServer01.bat
12. 編輯 coreServer01.sh 以參照較早建立的 serverCfg01.xml。內容現在看起來應該是適用於特定作業系統。
針對 Linux/UNIX:
ENIGMA_WORK_HOME=$ENIGMA_WORK_HOME/System/Work/Core/${HOSTNAME}/coreServer–1

if [ "$1" = "startservice" ] ; then
nohup ./coreServer.exe ${BIND_CMD} ${ENIGMA_CONFIG_HOME}/System/Config/
Core/serverCfg01.xml
&elif [ "$1" = "" ]; then
./coreServer.exe ${BIND_CMD} ${ENIGMA_CONFIG_HOME}/System/Config/
Core/serverCfg01.xml
Fi
* 
您可使用 ${HOSTNAME},為處於共用到叢集的工作目錄內的 coreServer 提供具唯一性的資料夾。
針對 Windows:
Set ENIGMA_WORK_HOME=$ENIGMA_WORK_HOME/System/Work/Core/<ViewerHostName>/
if defined CORE_BINDING_MODE coreServer.exe -TBindType %CORE_BINDING_MODE%
%ENIGMA_CONFIG_HOME%\System\Config\Core\serverCfg01.xml
if not defined CORE_BINDING_MODE coreServer.exe
%ENIGMA_CONFIG_HOME%\System\Config\Core\serverCfg01.xml
* 
* 
您可使用 ${HOSTNAME},為處於共用到叢集的工作目錄內的 coreServer 提供具唯一性的資料夾。如果使用 Windows 作業系統,請將 ${ENIGMA_CONFIG_HOME} 變更為 %ENIGMA–CONFIG–HOME%
13. 複製新的啟動指令集 (coreServer01.sh / coreServer01.bat),以便欲同時執行的每個指定 coreServer 都有一個這樣的指令集:
針對 Linux/UNIX:
$ cp coreServer01.sh coreServer02.sh
針對 Windows:
$ cp coreServer01.bat coreServer02.bat
14. 編輯 coreServer02.sh / coreServer02.bat 以參照較早建立的 serverCfg02.xml。內容此時應如下所示:
針對 Linux/UNIX:
ENIGMA_WORK_HOME=$ENIGMA_WORK_HOME/System/Work/Core/${HOSTNAME}/coreServer–2

if [ "$1" = "startservice" ] ; then
nohup ./coreServer.exe ${BIND_CMD} ${ENIGMA_CONFIG_HOME}/System/Config/
Core/serverCfg02.xml &
elif [ "$1" = "" ]; then
./coreServer.exe ${BIND_CMD} ${ENIGMA_CONFIG_HOME}/System/Config/Core/
serverCfg02.xml
fi
針對 Windows:
if defined CORE_BINDING_MODE coreServer.exe -TBindType
%CORE_BINDING_MODE% %ENIGMA_CONFIG_HOME%\System\Config\Core\serverCfg02.xml
if not defined CORE_BINDING_MODE coreServer.exe
%ENIGMA_CONFIG_HOME%\System\Config\Core\serverCfg02.xml
15. 配置核心伺服器負載平衡器:
備份並修改負載平衡器啟動指令集,以便使用叢集中的所有 coreServer 實例:
針對 Linux/UNIX:
$ cd <InService>SW
$ cp loadBalancer.sh loadBalancer.sh.bak
針對 Windows:
$ cd <InService>/SW
$ cp loadBalancer.bat loadBalancer.bat.bak
修改 LBserverEndPoint 參數,以便列出每個 (計劃的) Viewer 中的每個 coreServer。在本案例中,2 個 Viewer 分別有兩個 coreServers。將下列指令集從:
Linux:
LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:localhost:2010
/ObjectNameServerCtrl "
#LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:host2:2010
/ObjectNameServerCtrl "
#LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:host3:2010
/ObjectNameServerCtrl "
調整為
LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:Viewer1.mycompany.com:2032
/ObjectNameServerCtrl "
LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:Viewer2.mycompany.com:2031
/ObjectNameServerCtrl "
LB_OPTS="${LB_OPTS} –LBserverEndPoint corbaloc:iiop:Viewer2.mycompany.com:2032
/ObjectNameServerCtrl "
Windows:
set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:host1:2010
/ObjectNameServerCtrl
set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:host2:2010
/ObjectNameServerCtrl
REM set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:host3:2010
/ObjectNameServerCtrl
調整為
Set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:ngs2-viewa1.ptc.com:2031
/ObjectNameServerCtrl
Set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:ngs2-viewa1.ptc.com:2032
/ObjectNameServerCtrl
Set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:ngs2-viewa2.ptc.com:2031
/ObjectNameServerCtrl
Set LB_OPTS=%LB_OPTS% -LBserverEndPoint corbaloc:iiop:ngs2-viewa2.ptc.com:2032
/ObjectNameServerCtrl
* 
每個網站的主機名稱應該不同。網站 2 負載平衡器不應該路由至網站 1 coreServers。對負載平衡器的下列變更僅會配置主要負載平衡器,即針對核心伺服器負載平衡器配置整體主動/被動組態。在遠端同步之後將配置備份負載平衡器。
16. loadBalancer.sh / loadBalancer.bat 指令集中,修改所監視的主機名稱與埠號。它們現已參數化,可在 setEnv.sh / setEnv.bat 中管理。為原始陳述式新增註解:
Linux:
ORB_OPTS="${ORB_OPTS} –ORBendPoint giop:tcp::2000 "
LB_OPTS="${LB_OPTS}
–LBserverEndPoint corbaloc:iiop:Viewa1.mycompany.com:2031/ObjectNameServerCtrl "
然後新增下列項目:
ORB_OPTS="${ORB_OPTS} –ORBendPoint giop:tcp:${LB_MASTER_HOST}:${LB_PORT} "

ORB_OPTS="${ORB_OPTS} –ORBendPointNoListen giop:tcp:${LB_BACKUP_HOST}:${LB_PORT} "
Windows:
Set ORB_OPTS=%ORB_OPTS% -ORBendPoint giop:tcp::2000
然後新增下列項目:
set ORB_OPTS=%ORB_OPTS% -ORBendPoint giop:tcp:%LB_MASTER_HOST%:%LB_PORT%
set ORB_OPTS=%ORB_OPTS% -ORBendPointNoListen giop:tcp:%LB_BACKUP_HOST%:%LB_PORT%
17. 備份 3C.properties
$ cd /SW/InService/
$ cp –p 3C.properties 3C.properties.bak
配置 Windchill 叢集
對於 Servigistics InService 的 Windchill 元件,配置相同的節點叢集。如需詳細資訊,請參閱 PTC Windchill Advanced Deployment Guide
在每個 Viewer 伺服器上執行下列指令:
$ cd <InService>/InS_SW/SW/Applications/Windchill.ear/bin
$ ./xconfmanager –t codebase/wt.properties –p –s “wt.cache.master.slaveHosts=
<Site1_Viewer1_hostname> <Site1_Viewer2_hostname>”
* 
所有網站中的所有計劃 Viewer 應該列於此變數底下。
其他網站的 Windchill 組態
如果在您的叢集中使用多個網站,則需要完成下列組態。
1. 確保所有網站僅參照一個 Windchill Directory Server。為此,請對其他網站 Viewer 執行下列 xconfmanager 指令,強制它們參照第一個網站 Windchill Directory Server
$ cd <Servigistics InService>/
/InS_SW/SW/Applications/Windchill.ear/bin

$ ./xconfmanager –t codebase.war/wt.properties –p –s
"wt.federation.ie.ldapServer=ldap://ngs2–viewa1.ptc.com:1389"

$ ./xconfmanager –t codebase.war/wt.properties –p –s
"wt.federation.ie.namingService=com.ptc.ngs2repl.namingService"

$ ./xconfmanager –t codebase.war/wt.properties –p –s
"wt.federation.ie.VMName=com.ptc.ngs2repl.InService"

$ ./xconfmanager –t codebase.war/WEB–INF/ieStructProperties.txt –p –s
"ie.ldap.managerDn=cn=Manager"

$ ./xconfmanager –t codebase.war/WEB–INF/ieStructProperties.txt –p –s
"ie.ldap.managerPw=wcadmin"

$ ./xconfmanager –t codebase.war/WEB–INF/ieStructProperties.txt –p –s
"ie.ldap.serverHostName=ngs2–viewa1.ptc.com"

$ ./xconfmanager –t codebase.war/WEB–INF/ieStructProperties.txt –p –s
"ie.ldap.serverPort=1389"

$ ./xconfmanager –t codebase.war/WEB–INF/ieStructProperties.txt –p –s
"ie.ldap.serviceName="

$ ./xconfmanager –t codebase.war/WEB–INF/MapCredentials.txt –p –s
"mapcredentials.admin.adapters=com.ptc.Ldap^cn\
=Manager^wcadmin;com.ptc.EnterpriseLdap^cn\=Manager^wcadmin"
2. 使用下列指令在 Wildfly 伺服器上備份,然後修改 standalone–full.xml 以參照第一個網站中的 Windchill Directory Server
$ cd <InService>/InS_SW/SW/System/WildFly/standalone/configuration
$ cp standalone–full.xml standalone–full.xml.bak
* 
在 standalone-full.xml 內,有一個名稱為 "Servigistics InService" 的 <security–domain> 節點。此節點主要包含對 Windchill Directory Server 中標準企業和管理 LDAP 位置的參照。必須調整此節點的內容,以參考第一個網站 Windchill Directory Server 分支。最佳作法是在第一個網站 1 standalone–full.xml 中檢視此內容,並確保相同的內容列在網站 2 版本中。
* 
請勿只將 standalone–full.xml 檔案從第一個網站複製到下一個網站 2,因為其中包含具唯一性的資料庫參考。
<security–domain name="InService" cache–type="default">
<authentication>
<login–module code="com.ptc.sc.sce.user.SCEDefaultLoginModule"
flag="optional"/>
<login–module code="org.jboss.security.auth.spi.LdapExtLoginModule"
flag="sufficient">
<module–option name="java.naming.provider.url"
value="ldap://<Site 1 WindchillDS hostname>:<ldap port>"/>
<module–option name="bindDN" value="cn=Manager"/>
<module–option name="bindCredential"
value="<Site 1 WindchillDS password>"/>
<module–option name="baseCtxDN"
value="ou=people,cn=EnterpriseLdap,cn=InService,o=PTC"/>
<module–option name="baseFilter" value="(uid={0})"/>
<module–option name="defaultRole" value="valid–user"/>
<module–option name="rolesCtxDN"
value="ou=people,cn=EnterpriseLdap,cn=InService,o=PTC"/>
<module–option name="roleFilter" value="(member={1})"/>
<module–option name="roleAttributeID" value="cn"/>
</login–module>
<login–module code="org.jboss.security.auth.spi.LdapExtLoginModule"
flag="sufficient">
<module–option name="java.naming.provider.url"
value="ldap://<>:1389"/>
<module–option name="bindDN" value="cn=Manager"/>
<module–option name="bindCredential" value="wcadmin"/>
<module–option name="baseCtxDN"
value="ou=people,cn=AdministrativeLdap,cn=InService,o=PTC"/>
<module–option name="baseFilter" value="(uid={0})"/>
<module–option name="defaultRole" value="valid–user"/>
<module–option name="rolesCtxDN"
value="ou=people,cn=AdministrativeLdap,cn=InService,o=PTC"/>
<module–option name="roleFilter" value="(member={1})"/>
<module–option name="roleAttributeID" value="cn"/>
</login–module>
</authentication>
</security–domain>
3. 配置資料庫結構描述。對於此安裝過程,我們確認主要 Windchill 結構描述是使用第一個網站 1 所建立。欲完成 Windchill 叢集,我們也需要修改其他網站來使用此相同的 Windchill 結構描述。
* 
其他網站應該僅參照第一個網站中的 Windchill 結構描述。其他結構描述 (CMI、E3C、Titan、Titan2) 應該對其他網站保持唯一性。
4. 收集第一個網站中 Windchill 結構描述的下列連接資訊:
Oracle 主機、埠和服務名稱
結構描述名稱與密碼
5. 執行下列 xconfmanager 指令,將此連接資訊套用至其他網站:
$ cd <InService>/InS_SW/SW/Applications/Windchill.ear/bin

$ ./xconfmanager –t db/db.properties –p –s “wt.pom.dbUser=<Site
1 Windchill Schema name>”

$ ./xconfmanager –t db/db.properties –p –s “wt.pom.dbPassword=<Site
1 Windchill Schema password>”

$ ./xconfmanager –t db/db.properties –p –s “wt.pom.jdbc.host=<Site
1 Windchill Schema host>”

$ ./xconfmanager –t db/db.properties –p –s “wt.pom.jdbc.port=<Site
1 Windchill Schema port>”

$ ./xconfmanager –t db/db.properties –p –s “wt.pom.jdbc.service=<Site
1 Windchill Schema service name>”
建立啟動指令集啟動全部 Viewer 流程
此為選用選項。欲自動啟動全部 Viewer 流程,請在 <InService>/SW 資料夾中建立啟動指令集。
* 
此選用啟動指令集將會啟動整體 Viewer 所需的所有項目︰WildFly、核心伺服器、核心伺服器負載平衡器及核心 CMI 伺服器。所有網站中的所有計劃 Viewer 都應該列於此變數下。對叢集使用此指令集時,僅應在網站內的伺服器上啟動核心 CMI 伺服器。網站中所有 Viewer 的 E3C.properties 都將參照這一個核心 CMI 伺服器的主機和連接埠。
#!/bin/sh –e

# this version of startup commands will start services in the background
#./coreServer01.sh startservice
#./coreServer02.sh startservice
#./loadbalancer.sh &
#./coreCMIServer.sh startservice # should only be started on one Viewer
#./jboss.sh &

# this version of startup commands will start services in separate xterm windows.
Easier for testing and validation
xterm –title "Core Server 01" –sb –sl 9999 –e "cd /ptc/InService/SW &&
./coreServer01.sh" &
xterm –title "Core Server 02" –sb –sl 9999 –e "cd /ptc/InService/SW &&
./coreServer02.sh" &
xterm –title "Load Balancer" –sb –sl 9999 –e "cd /ptc/InService/SW &&
./loadbalancer.sh" &
xterm –title "Core CMI Server" –sb –sl 9999 –e "cd /ptc/InService/SW
&& ./coreCMIServer.sh" & # should only be started on one Viewer
xterm –title "InService" –sb –sl 9999 –e "cd /ptc/InService/SW && ./jboss.sh" &
將 Viewer 載入點遠端同步到其他 Viewer 伺服器上
使用 rsync 將此 Viewer 載入點複製到其他 Viewer 伺服器上相符的載入點。
* 
Windows 中不支援 Rsync。您必須手動將 <InService> 資料夾複製到其他 Viewer 伺服器。手動複製檔案時,如果檔案名稱太長,可能會遇到錯誤。您可能需要使用協力廠商的複製公用程式。
1. 在目標伺服器上輸入下列指令:
$ rsync –av –e ssh InService_account_name@Viewer1.mycompany.com
/ptc/InService/ /ptc/InService
2. 修改 <InService>/InS_SW/SW/startServers.sh (或 startServers.bat) 使得 coreCMI 流程不會在新建立的 Viewer 上啟動。
3. 修改 <InService>/InS_SW/SW/E3C.properties,以遠端同步目標的實際主機名稱取代遠端同步來源主機名稱的參照。很可能應該以 rsync 目標主機名稱調整下列內容。
core.server.host=<rsync target hostname>
bl.host.name=<rsync target hostname>
pr.host.name=<rsync target hostname>
computer.name=<rsync target hostname>
4. 在指定為備份核心伺服器負載平衡器的伺服器上,修改負載平衡器批次檔案。
針對 Linux:<INSERVICE>/InS_SW/SW/loadBalancer.sh
ORB_OPTS=
ORB_OPTS="${ORB_OPTS} –ORBendPoint giop:tcp:${LB_MASTER_HOST}:${LB_PORT} "
ORB_OPTS="${ORB_OPTS} –ORBendPointNoListen giop:tcp:${LB_BACKUP_HOST}:${LB_PORT} "
調整為
ORB_OPTS=
ORB_OPTS="${ORB_OPTS} –ORBendPoint giop:tcp:${LB_BACKUP_HOST}:${LB_PORT} "
ORB_OPTS="${ORB_OPTS} –ORBendPointNoListen giop:tcp:${LB_MASTER_HOST}:${LB_PORT} "
針對 Windows:<INSERVICE>/SW/loadBalancer.bat
Set ORB_OPTS=
Set ORB_OPTS=%ORB_OPTS% -ORBendPoint giop:tcp:%LB_MASTER_HOST%:%LB_PORT%
Set ORB_OPTS=%ORB_OPTS% -ORBendPointNoListen giop:tcp:%LB_BACKUP_HOST%:%LB_PORT%
調整為
set ORB_OPTS=
set ORB_OPTS="%ORB_OPTS% -ORBendPoint giop:tcp:%LB_BACKUP_HOST%:%LB_PORT%
Set ORB_OPTS="%ORB_OPTS% -ORBendPointNoListen giop:tcp:%LB_MASTER_HOST%:%LB_PORT%
5. 針對每個網站重複此操作。
提供負載平衡器
提供負載平衡器,將使用者流量路由至所有網站中的所有 Viewer。如需負載平衡器的更多使用說明,請參閱架構概觀。此範例使用 Windchill 安裝中提供的 HTTP 伺服器作為負載平衡器。
* 
負載平衡器可配置為作為服務執行。如需詳細資訊,請參閱〈啟動負載平衡器作為服務〉一節。在叢集中部署 Viewer
1. 執行獨立安裝。安裝伺服器以使用連接埠 8080。
2. 修改 conf/httpd.conf 以將下列內容作為最後一行包括在檔案中:conf/extra/load_balancer.conf
3. 建立 conf/extra/load_balancer.conf 檔案。兩個 <Proxy balancer…> 節點應參照系統中的 Viewer 主機名稱:
#–––––––––––––––load balancer modules–––––#
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so
LoadModule headers_module modules/mod_headers.so
#–––––––––––––––––––––––––––––––––––––––––#

ExtendedStatus On

<Location /server–status>
SetHandler server–status
Order deny,allow
Deny from *.ptc.com
Allow from all
</Location>


#–––– Load Balancing (start)––––#

ProxyRequests off
ProxyTimeout 600

RequestHeader set X–Forwarded–Proto "https"

ProxyPass /balancer–manager !
ProxyPass /server–status !
ProxyPass /apstatus !

<Location "/balancer–manager">
SetHandler balancer–manager
Order deny,allow
Deny from *.ptc.com
Allow from all
</Location>

Header add Set–Cookie "ROUTEID=.%
{BALANCER_WORKER_ROUTE}e; path=/"
env=BALANCER_ROUTE_CHANGED

<Proxy balancer://stickyCluster>
BalancerMember http://<Viewer #1 hostname>:8080 route=1
BalancerMember http://<Viewer #2 hostname>:8080 route=2
ProxySet stickysession=ROUTEID
</Proxy>

<Proxy balancer://RESTfulCluster>
ProxySet failonstatus=503
BalancerMember http://<Viewer #1 hostname>:8080 retry=120
BalancerMember http://<Viewer #2 hostname>:8080 retry=120
</Proxy>

# For InService (as a RESTful app) the following ProxyPass and
ProxyPassReverse statements should work

ProxyPass /InService/infoengine balancer://stickyCluster/InService/infoengine
ProxyPassReverse /InService/infoengine balancer://stickyCluster/InService/infoengine

ProxyPass /InService balancer://RESTfulCluster/InService
ProxyPassReverse /InService balancer://RESTfulCluster/InService

ProxyPass /InService–HCUSER balancer://RESTfulCluster/InService–HCUSER
ProxyPassReverse /InService–HCUSER balancer://RESTfulCluster/InService–HCUSER

ProxyPass /InService–HCADMIN balancer://RESTfulCluster/InService–HCADMIN
ProxyPassReverse /InService–HCADMIN balancer://RESTfulCluster/InService–HCADMIN

ProxyPass / balancer://RESTfulCluster
ProxyPassReverse / balancer://RESTfulCluster

#–––– Load Balancing (end)––––#
4. 透過 apache 指令啟動負載平衡器。
將負載平衡器作為服務啟動
針對具有多個 Viewer 的系統,可將負載平衡器作為服務執行。
loadBalancer.sh 中的下面一行變更為 set INSTALL_AS_SERVICE=1 
* 
欲啟用此功能,必須在「管理」模式下執行 loadBalancer.sh
為系統中的每個 coreServer 建立快取資料夾
如前所述,工作目錄會在網站內的 Viewer 間共用。因此快取資料夾不能只憑藉名稱識別,還要透過提供 coreServer 的 Viewer 主機名稱。
* 
必須對叢集中的每個網站執行這些指令。
之前,您已將下列內容新增至 coreServer 啟動指令集 (coreServer01.shcoreServer01.batcoreServer02.shcoreServer02bat):
針對 Linux/UNIX:
(in coreServer01.sh)
ENIGMA_WORK_HOME=$ENIGMA_WORK_HOME/System/Work/Core/${HOSTNAME}/coreServer–1
(in coreServer02.sh)
ENIGMA_WORK_HOME=$ENIGMA_WORK_HOME/System/Work/Core/${HOSTNAME}/coreServer–2
針對 Windows:
(in coreServer01.bat)
ENIGMA_WORK_HOME=%ENIGMA_WORK_HOME%/System/Work/Core/%HOSTNAME%/coreServer-1
(in coreServer02.bat)
ENIGMA_WORK_HOME=%ENIGMA_WORK_HOME%/System/Work/Core/%HOSTNAME%/coreServer-2
執行 rsync 指令之後,可能會有多個 Viewer 伺服器全部共用此「工作資料夾」。這是上述 ${HOSTNAME} 變數的用處。
$ENIGMA_WORK_HOME/System/Work/Core 位置內,確保建立下列資料夾結構。請確定執行 coreServer 的相同 OS 使用者可以存取該位置。
$ENIGMA_WORK_HOME/System/Work/Core/
<Viewer #1 hostname>
coreServer–01
coreServer–02
<Viewer #2 hostname>
coreServer–01
coreServer–02
<continue pattern for any additional Viewers>
啟動 Servigistics InService
透過啟動流程,啟動 Oracle 與 WindchillDS (如有需要),然後啟動 Publisher,接著一次啟動一個 Viewer。第一個要啟動的 Viewer 會是 Windchill 快取主物件。
執行 TAL 任務
依照Servigistics InService Publishing and Loading Guide所述執行 TAL 任務。
驗證叢集功能
1. 此資訊不提供作為負載平衡器使用的 web 伺服器組態。但是,基本組態應該足夠。
2. 在沒有負載平衡器的情況下,您可以修改用戶端主機檔案,以將叢集名稱流量導向至其中一個 Viewer 伺服器。
3. 您可以啟動|停止服務來測試經驗。例如,停止 viewer_1 中的 coreServers,觀察到其使用 viewer_2 中 coreServers。