IceGrid应用 配置手册
1. ?概述
1.1 配置目標
本文檔是描述Ice中間件中的IceGrid服務的應用配置,通過使用IceGrid服務來實現:
1.? 服務器端服務分布式部署。
2.? 服務器端服務按需激活。
3.? 服務器端服務多節點負載均衡。
4.? 注冊服務主/從熱備(Master/Slaves)
5.? 集成IceBox服務
1.2 實驗環境
1.? 硬件:hp服務器,3臺
2.? 操作環境:Red Hat 5
3.? 服務器程序:ServerApp.jar
4.? 說明:實際應用中,服務器節點可任意擴充、操作系統可被更換、服務器程序可用實際項目的服務程序替換,本文檔所描述的配置方式具有通用性,適用但不局限于當前實驗環境。
1.3 局限
本文檔不詳細描述IceGrid服務的運行機制和實現原理,不詳細介紹服務器端和客戶端程序的實現,主要描述IceGrid服務應用的配置步驟、主要配置項及驗證配置結果等。
2. ?配置過程
2.1? 服務器端配置
配置步驟:
1.? 創建主注冊服務(Master)的配置文件config_master.grid,文件名稱可以任意
2.? 創建從注冊服務(Slave)的配置文件?config_slave.grid, 文件名稱可以任意
3.? 創建各節點服務的配置文件config.node,文件名稱可以任意
4.? 創建分布式應用配置文件app.xml,文件名稱可以任意,但格式最好定義成xml
5.? 運行Ice提供的工具,啟動我們的分布式應用,主要有如下兩個工具:icegridnode和icegridadmin。詳細啟動過程如下:
1) icegridnode--Ice.Config=config_master.grid? 啟動主注冊服務
2) icegridnode--Ice.Config=config_slave.grid? 啟動從注冊服務
3) icegridadmin--Ice.Config= config_master.grid -e "application add app.xml"?? 部署分布式服務
icegridadmin --Ice.Config= config_master.grid-e "application update app.xml"??重新部署分布式服務
4) icegridnode--Ice.Config=config.node? 將各節點注冊到注冊服務的注冊表中
配置文件清單:
假設有n個節點(n > 0), 其中從注冊服務有x個,(x > 0)
?? config_master.grid?? ---------- 主注冊服務配置文件 ---------? 1份
?? config_slave.grid?? ----------- 從注冊服務配置文件 ---------? x份
?? config.node??----------------- 節點配置文件? --------------? n份
?? app.xml?---------------------- 部署配置文件? --------------? 1份
通常情況下,由于注冊服務占用資源很少,所以一般都會和一個節點集成在一起,并且可以和節點服務在一個進程中運行。因此,如果假設服務部署到n個服務器,通常情況下配置文件清單如下:
config_master.grid-- 主注冊服務配置文件 -- 1份? -- 主注冊服務信息+節點信息
config_slave.grid--- 從注冊服務配置文件 -- x份? -- 從注冊服務信息+節點信息
config.node--------- 節點配置文件 ---- n-1-x份? -- 節點信息
app.xml------------- 部署配置文件 -------- 1份? -- 部署信息
其中app.xml要和config_master.grid放在一臺服務器上,下面的各章節將詳細介紹各配置文件。
2.1.1? 主注冊服務配置
config_master.grid的內容:
#
# The IceGrid InstanceName
#
IceGrid.InstanceName=IceGridRDDataSource????# 1
?
#
# The IceGridlocator proxy.
#
Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.5.201 -p 12000:default -h 10.0.5.202-p 12000???????? #2
?
#
# IceGridregistry configuration.
#
IceGrid.Registry.Client.Endpoints=default-p 12000?? #3
IceGrid.Registry.Server.Endpoints=default?? ?#4
IceGrid.Registry.Internal.Endpoints=default?? #5
IceGrid.Registry.Data=master????? #6
IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier???? #7
IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8
IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9
IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier??? #10
?
#
# IceGrid SQLconfiguration if using SQL database.
#
#Ice.Plugin.DB=IceGridSqlDB:createSqlDB???? #11
#IceGrid.SQL.DatabaseType=QSQLITE??? ? #12
#IceGrid.SQL.DatabaseName=register/Registry.db?????? #13
#
?
#
#Ice Error andStandard output Set
#
#Ice.StdErr=master/stderr.txt???????? ???????? #14
#Ice.StdOut= master/stdout.txt??? #15
?
#
#Trace Registryproperties
#
Ice.ProgramName=Master???? #16
IceGrid.Registry.Trace.Node=3??????? #17
IceGrid.Registry.Trace.Replica=3??? #18
?
#
# IceGrid nodeconfiguration.
#
IceGrid.Node.Name=node_1??????????????????????????? ??#19??????
IceGrid.Node.Endpoints=default?????????????????????? ? #20
IceGrid.Node.Data=node_1???????????????#21
IceGrid.Node.CollocateRegistry=1??????????????????? ? #22
#IceGrid.Node.Output=node_1????????????#23
#IceGrid.Node.RedirectErrToOut=1?????????#24
?
# Traceproperties.
#
IceGrid.Node.Trace.Activator=1???????????? #25
#IceGrid.Node.Trace.Adapter=2???????????? #26
#IceGrid.Node.Trace.Server=3???????????? ?#27
?
#
# Dummy usernameand password for icegridadmin.
#
IceGridAdmin.Username=mygrid?????????? #28
IceGridAdmin.Password=mygrid?????????? ?#29
配置項說明:
?? #1?為這個應用實例指定一個唯一的標識
?? # 2? 注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到
?? # 3? 客戶端訪問注冊服務器的端點信息
?? # 4? 服務訪問注冊服務器的端點信息,通常是default
?? # 5? 內部訪問端點信息,通常是default,節點用這個端口和注冊服務通信
?? # 6? 注冊服務的數據目錄的路徑
?? # 7? 設定防火墻安全代理,從而控制客戶端訪問注冊表時可用的權限
?? # 8? 設定防火墻安全代理,從而控制注冊表管理者可用的權限
? ?# 9? 設定SSL安全代理,從而設定客戶端訪問注冊表時的SSL安全訪問機制
?? # 10? 設定SSL安全代理,從而設定注冊表管理者的SSL安全訪問機制
?? # 11? 指定Ice對象序列化的機制,如果不設置,默認用Freeze機制
?? # 12? 指定使用數據庫的類型
?? #13? 指定使用數據庫的名稱
?? #14? 指定標準錯誤輸出文件
?? #15? 指定標準輸出文件
?? #16? 指定主注冊服務的名稱
?? #17? 指定主注冊服務跟蹤節點信息的級別(0~3),默認為0
?? #18? 指定主/從熱備注冊服務的跟蹤級別(0~3),默認為0
?? # 19? 定義節點的名稱,必須唯一
?? # 20?節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default
?? # 21? 節點的數據目錄的路徑
?? # 22? 定義節點是否和注冊服務并置在一起,設為1時并置,設為0時不并置
?? # 23? 節點標準輸出信息重定向蹈的目錄路徑,會自動生成輸出文件
?? # 24? 節點上的服務程序的標準錯誤重定向到標準輸出
?? # 25? 激活器跟蹤級別,通常有0,1,2,3級,默認是0
?? # 26? 對象適配器跟蹤級別,通常有0,1,2,3級,默認是0
?? # 27? 服務跟蹤級別,通常有0,1,2,3級,默認是0
?? # 28? IceGrid管理器登錄該應用的用戶名
?? # 29? IceGrid管理器登錄該應用的密碼
?? 未涉及的屬性還有一些,如果需要請參考官方文檔。
2.1.2? 從注冊服務配置
config_slave.grid的內容:
?
#
# The IceGridlocator proxy.
#
Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000???????? #1
?
#
# IceGridregistry configuration.
#
IceGrid.Registry.Client.Endpoints=default-p 12000?? #2
IceGrid.Registry.Server.Endpoints=default?? ?#3
IceGrid.Registry.Internal.Endpoints=default?? #4
IceGrid.Registry.Data=slave_1??????? #5
IceGrid.Registry.ReplicaName=slave_1 ? #6
IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier???? #7
IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8
IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9
IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier??? #10
?
#
# IceGrid SQLconfiguration if using SQL database.
#
#Ice.Plugin.DB=IceGridSqlDB:createSqlDB???? #11
#IceGrid.SQL.DatabaseType=QSQLITE??? ? #12
#IceGrid.SQL.DatabaseName=register/Registry.db?????? #13
#
?
#
#Ice Error andStandard output Set
#
#Ice.StdErr=slave_1/stderr.txt???????????????? #14
#Ice.StdOut=slave_1/stdout.txt???? #15
?
#
#Trace Registryproperties
#
Ice.ProgramName=Slave_1???? #16
IceGrid.Registry.Trace.Node=3??????? #17
IceGrid.Registry.Trace.Replica=3??? #18
?
#
# IceGrid nodeconfiguration.
#
IceGrid.Node.Name=node_2??????????????????????????? ??#19??????
IceGrid.Node.Endpoints=default?????????????????????? ? #20
IceGrid.Node.Data=node_2???????????????#21
IceGrid.Node.CollocateRegistry=1??????????????????? ? #22
#IceGrid.Node.Output=node_2????????????#23
#IceGrid.Node.RedirectErrToOut=1?????????#24
?
# Traceproperties.
#
IceGrid.Node.Trace.Activator=1???????????? #25
#IceGrid.Node.Trace.Adapter=2???????????? #26
#IceGrid.Node.Trace.Server=3???????????? ?#27
?
#
# Dummy usernameand password for icegridadmin.
#
IceGridAdmin.Username=mygrid?????????? #28
IceGridAdmin.Password=mygrid?????????? ?#29
配置項說明:
其實這個文件和主注冊配置文件基本一樣,差別只有一點:
1.?????? 沒有指定應用實例名,因為在主注冊服務中已經有了定義
2.?????? 多了第6行,IceGrid.Registry.ReplicaName=slave_1,指定從注冊服務的名稱
其它的基本就沒有差別了,大部分屬性項在config_master.grid里面都有定義,為了方便閱讀,下面也將用到的各項給出說明:
?? # 1? 注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到
?? # 2? 客戶端訪問注冊服務器的端點信息
?? # 3? 服務訪問注冊服務器的端點信息,通常是default
?? #4? 內部訪問端點信息,通常是default,節點用這個端口和注冊服務通信
?? # 5? 注冊服務的數據目錄的路徑
?? # 6? 指定從注冊服務的名稱
?? # 7? 設定防火墻安全代理,從而控制客戶端訪問注冊表時可用的權限
?? #8? 設定防火墻安全代理,從而控制注冊表管理者可用的權限
? ?# 9? 設定SSL安全代理,從而設定客戶端訪問注冊表時的SSL安全訪問機制
?? #10? 設定SSL安全代理,從而設定注冊表管理者的SSL安全訪問機制
?? # 11? 指定Ice對象序列化的機制,如果不設置,默認用Freeze機制
?? # 12? 指定使用數據庫的類型
?? #13? 指定使用數據庫的名稱
?? #14? 指定標準錯誤輸出文件
?? #15? 指定標準輸出文件
?? #16? 指定從注冊服務運行時程序名稱
?? #17? 指定從注冊服務跟蹤節點信息的級別(0~3),默認為0
?? #18? 指定主/從熱備注冊服務的跟蹤級別(0~3),默認為0
?? # 19? 定義節點的名稱,必須唯一
?? # 20? 節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default
?? # 21? 節點的數據目錄的路徑
?? # 22? 定義節點是否和注冊服務并置在一起,設為1時并置,設為0時不并置
?? # 23? 節點標準輸出信息重定向蹈的目錄路徑,會自動生成輸出文件
?? # 24? 節點上的服務程序的標準錯誤重定向到標準輸出
?? # 25? 激活器跟蹤級別,通常有0,1,2,3級,默認是0
?? # 26? 對象適配器跟蹤級別,通常有0,1,2,3級,默認是0
?? # 27? 服務跟蹤級別,通常有0,1,2,3級,默認是0
?? # 28? IceGrid管理器登錄該應用的用戶名
?? # 29? IceGrid管理器登錄該應用的密碼
2.1.3? 應用部署配置
app.xml配置文件內容:
1<icegrid>
2? <application name="RTDSSystem">
3??? <server-template id="RTDSSystemServer">
4????? <parameter name="index"/>
5????? <server id="RTDSSystemServer-${index}"exe="java" ??????????????? ?????????????????????????activation="on-demand">
6??????? <adapter name="RTDataSysytem" endpoints="tcp" ?? ??????? ????????????????????????? ??? replica-group="ReplicatedRTDataSysytemAdp"/>
7?????? ?<option>-jar</option>
8??????? <option>ServerApp.jar</option>
9??? ??</server>
10??? </server-template>
11
12??? <replica-group id="ReplicatedRTDataSysytemAdp">
13????? <load-balancing type="round-robin"/>
14????? <object identity="RTDataSource"????????????? ??????????????????????????????????? ??? type="::RTDataSystem::RTDataSource"/>
15??? </replica-group>
16
17??? <node name="node_1">
18????? <server-instance template="RTDSSystemServer" index="1"/>
19????? <server-instance template="RTDSSystemServer" index="11"/>
20????? <server-instance template="RTDSSystemServer" index="111"/>
21??? </node>
22??? <node name="node_2">
23????? <server-instance template="RTDSSystemServer" index="2"/>
24????? <!--server-instancetemplate="RTDSSystemServer" index="22"/-->
25????? <!--server-instancetemplate="RTDSSystemServer" index="222"/-->
26??? </node>
27??? <node name="node_3">
28????? <server-instance template="RTDSSystemServer" index="3"/>
29????? <!--server-instancetemplate="RTDSSystemServer" index="33"/-->
30????? <!--server-instancetemplate="RTDSSystemServer" index="333"/-->
31??? </node>
32? </application>
33</icegrid>
?
配置文件結構分析:
IceGrid里,部署是一個在注冊服務中表述一個應用(Application)的過程,而部署配置文件就是來描述這些配置信息的文件,這個配置文件是用xml標記性語言來描述的。通常一個部署應該包含如下信息:
1.? 應用標簽(application),name屬性定義這個應用的名字
2.? 服務(server), 一個邏輯上的服務器,能夠通過exe命令而啟動的一個服務程序。activation屬性,是設置服務的啟動方式,on-demand是最常用的方式,另外還有always等啟動方式;option標簽是exe執行命令命令行的參數;
3.? 適配器(adpter),定義服務器端的適配器。
name屬性唯一標志這個適配器;
endpoints屬性指定端點信息;
replica-group屬性標示該適配器是個可復制組集群,并指定這個可復制組的名稱;
register-process屬性定義了是否這個節點是否可以被icegrid關閉;
4.? 節點(node),它應該代表了一個物理上的節點。
name屬性指定節點的名字,并且是唯一的。
5.? 可復制組(replica-group),一組對象適配器的集合。
id屬性唯一標識一個可復制組;
load-balancing子項中type屬性指定負載均衡策略,icegrid提供了四種負載均衡策略: Random (隨機方式)
????? ?Adaptive(適配方式)
?????? Round Robin(最近最少使用)
?????? Ordered(順序方式)
object子項定義適配器綁定的服務對象信息。其中identity屬性指定對象的標識,type屬性指定了對象的層次結構類型。這兩個屬性都可以唯一的標識一個服務對象。
6.? 服務模板(server-temple),服務模板是對服務的一個抽象,避免了重復定義。這樣,在節點中描述服務時只需要實例化它的服務模板就可以了。
id屬性唯一標識一個服務模板;
parameter子項定義服務模板的參數,可包含多個,主要實例化服務時用;
server子項就是上面2中的服務定義;
另外還有一些特殊的服務模板,比如:icebox服務模板,它的定義和通用的服務模板的定義不太一樣。
?
解析app.xml文件:
通過對配置文件結構的分析,來解析一下app.xml。
第1行,標識這是一個icegrid的配置文件;
第2行,標識應用的名稱為RTDSSystem,這個名稱是唯一的;
第3~10行,定義了一個服務模板RTDSSystemServer,并有一個參數index;
????????? 其中5~9定義了這個模板包含的服務定義,第6行是這個服務包含的對象適配器
????????? 的定義;
第12~15行,是對可復制組的定義,包括服務對象的定義和負載均衡策略;
第17~21行,是對節點node_1的定義,指定了節點的名稱,包含的服務(3個服務);
第22~26行,是對節點node_2的定義
第27~31行,是對節點node_3的定義
最后兩行是閉合標簽,至此一個icegrid的分布式部署配置文件就完成了。
?
部署配置文件的擴展:
app.xml中對服務模板、適配器、服務對象等的配置都是一個,事實上這些可以在文件中定義多個,比如可以有多個服務模板,一個服務里可以有多個適配器,可以有多個可復制組,一個節點里可以有多個不同類型的服務等。
另外,app.xml可以包含其它的xml。
2.1.4? 節點配置
config.grid文件的內容:
#
# The IceGridlocator proxy.
#
Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000???????? #1
?
#
# IceGrid nodeconfiguration.
#
IceGrid.Node.Name=node_2????????????????? #2
IceGrid.Node.Endpoints=default????????????? #3
IceGrid.Node.Data=node_2?????????????????????? #4
IceGrid.Node.Output=node_2??? ???????? #5
IceGrid.Node.RedirectErrToOut=1?????????? #6
?
# Trace properties.
#
IceGrid.Node.Trace.Activator=1???????????? #7
#IceGrid.Node.Trace.Adapter=2???????????? #8
#IceGrid.Node.Trace.Server=3????????????? #9
配置項說明:
事實上,這個文件里面的配置項,在config_slave.grid中都有描述,但這里也列出來,方便閱讀。
#1 ??注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到
#2 ??定義節點的名稱,必須唯一
#3 ??節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default
#4 ??節點的數據目錄的路徑
#5 ??節點標準輸出信息重定向的目錄路徑,會自動生成輸出文件
#6?節點上的服務程序的標準錯誤重定向到標準輸出
#7 ??激活器跟蹤級別,通常有0,1,2,3級,默認是0
#8 ??對象適配器跟蹤級別,通常有0,1,2,3級,默認是0
#9 ??服務跟蹤級別,通常有0,1,2,3級,默認是0
2.2?????客戶端配置
客戶端的配置很簡單,和分布式相關的配置就一項,添加如下:
#
# The IceGridlocator proxy.
#
Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000 #注冊服務的端點信息(主注冊服務和所有的從注冊服務),用于定位
3. 結果驗證
3.1? 程序方式
1. 啟動服務器
1) icegridnode--Ice.Config=config_master.grid? 啟動主注冊服務和節點1
2) icegridnode--Ice.Config=config_slave.grid ??啟動從注冊服務和節點2
3) icegridadmin--Ice.Config=config_master.grid -e "application add app.xml"?? 部署分布式服務
4) icegridnode--Ice.Config=config.node 啟動節點3
2. 啟動客戶端,進行多次遠程調用,根據執行情況就可以判斷服務器端是否配置成功。
3.2? 工具方式
用Ice官方提供的可視化管理工具IceGridGUI.jar來驗證和管理icegrid的部署。
打開dos窗口,在命令行下進入C:\Program Files\ZeroC\Ice-3.4.1\bin目錄下,然后運行“java –jar IceGridGUI.jar”,彈出IceGrid Admin的主界面
1. 高級應用配置
4.1? 集成IceBox
在文檔《IceBox開發和配置》(當前是1.0版)中,介紹了一個IceBox服務程序的開發方法和單獨應用中配置和管理的過程。在實際的應用中,IceBox服務通常集成到IceGrid中,并通過IceGrid進行激活和部署。
本章節中IceBox服務是集成在IceGrid中,并通過IceGrid進行部署,所以IceBox服務的配置信息不再同《IceBox開發和配置》中一樣在config.icebox中描述,而是直接配置在部署文件app.xml中。那也就是說,IceGrid集成IceBox服務,只需要在app.xml文件中添加Icebox服務相關的配置信息就可以了。事實上,有關Ice所有的配置信息(除IceGrid自身的配置信息),都可以添加到app.xml中,并通過icegrid部署后生效。
下面各節詳細描述IceBox服務的集成過程。
4.1.1? IceBox服務程序編寫
請參考文檔《IceBox開發和配置》,這里不再詳述。由于IceBox服務相關的配置信息都放在了app.xml中,并且服務是通過IceGrid按需激活的,因此這里程序代碼略有調整。下面列出IceBox服務的實現代碼:
文件名:ServerService.java
import main.java.DataSource;
import IceBox.Service;
?
public class ServerService implements IceBox.Service {
??? /**
????* @param name 配置文件中的service名稱
????* @param communicator對象,由IceBox.ServiceManager負責創建和銷毀。
????*?????? ???可能同時被其他服務共享使用(由配置文件決定),object Adapter的名
????*????????? 稱必須是唯一的;
????* @param args? 配置文件中的參數列表
????* @Override
??? ?**/
??? public void start(String name,Ice.Communicator communicator,
???????????????????? ?String[] args){
?????? //創建objectAdapter,名稱有配置文件決定
?????? Adapter =communicator.createObjectAdapter(
??????????????????????????? "RTDataSystem-"+name);
??????
?????? //創建servant
?????? StringRTDataSourceIdentity = communicator.getProperties().
????????????????????????????????? getProperty("RTDataSource.Identity");
?????? DataSourceobjDataSrc = new DataSource("dataSource");
??? ??? Adapter.add(objDataSrc,
?????????? communicator.stringToIdentity(RTDataSourceIdentity));
??????
??? ??? Adapter.activate();
??? }
?
??? /**
??? ?*
????* @param args
????* @Override
??? ?*
????**/
??? public void stop()
??? {
?????? Adapter.destroy();
??? }
???
??? private Ice.ObjectAdapter Adapter;
}
4.1.2? IceGrid集成IceBox服務
IceGrid集成IceBox只和部署文件(app.xml)有關,IceBox服務(service)的粒度和普通的server是一樣的,因此IceBoxservice的部署和普通的server非常類似,它同樣有模板、服務(service)和實例化的概念,可以將IceBox service理解為一個特殊的server。
為了能更清楚的描述這個集成配置的過程,在IceGrid配置的基礎上,添加IceBox服務。具體目標如下:
1.??????集成ServerService服務(service),并且ServerService服務(service)使用的服務對象和之前server的服務對象使用同一個(type--::RTDataSystem::RTDataSource)
2.??????在節點1(node_1)上添加IceBox服務功能(IceBox-Node1),這個IceBox服務包含了5個ServerService服務;同樣的在節點2(node_2)上也添加一個IceBox服務功能(IceBox-Node2),也包含了5個ServerService服務
3.??????這些IceBox服務中分布的多個服務(service)和之前已經存在的服務(server)一起通過IceGrid實現負載均衡
為了實現上述的功能,需要添加IceBox服務的相關配置,首先看一下此時app.xml的變化,變化和添加部分用淺灰陰影標出。
app.xml
<?xml version="1.0"encoding="UTF-8" ?>
<icegrid>
? <applicationname="RTDSSystem">
??? <server-templateid="RTDSSystemServer">
????? <parameter name="index"/>
????? <server id="RTDSSystemServer-${index}" exe="java"activation="on-demand">
??????? <adapter name="RTDataSysytem"endpoints="tcp"
???????????????????????????????????? replica-group="RTDataSystemGroup"/>
??????? <option>-jar</option>
??????? <option>ServerApp.jar</option>
??? </server>
??? </server-template>
?
<!— begin服務模板定義-->
1?? <service-templateid="RTDSystemService">
2?????? <parameter name="name"/>
3?????? <service name="${name}" entry="ServerService">
4???????? ??<description>A simple service named after ${name}</description>
5?????????? <properties>
6???????????? <property name="RTDataSource.Identity" value="RTDataSource"/>
7?????????? </properties>
8????????? ?<adapter name="RTDataSystem-${name}" endpoints="tcp"
?????????????????????????????????????????????? id="RTDataSystem-${name}" replica-group="RTDataSystemGroup"
?????????????????????????????????????????????? server-lifetime="false"/>
11????? </service>
12? </service-template>
<!-- end服務模板定義-->
???
??? <replica-groupid="RTDataSystemGroup">
????? <load-balancingtype="round-robin"/>
????? <!--load-balancingtype="ordered" /-->
????? <!--load-balancingtype="adaptive" /-->
????? <!--load-balancingtype="random" n-replicas="0"/-->
????? <object identity="RTDataSource" type="::RTDataSystem::RTDataSource"/>
??? </replica-group>
?
???
??? <node name="node_1">
????? <server-instancetemplate="RTDSSystemServer" index="1"/>
????? <server-instancetemplate="RTDSSystemServer" index="11"/>
????? <server-instancetemplate="RTDSSystemServer" index="111"/>
<!— begin IceBox服務配置 IceBox-Node1-->
1???? <icebox id="IceBox-Node1" activation="on-demand"exe="java">
2??????? <description>Asample IceBox server IceBox-Node1</description>
3??????? <option>IceBox.Server</option>
4??????? <properties>
5?????????? <property name="IceBox.InstanceName" value="${server}"/>
6?????????? <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.241"/>
7?????????? <property name="IceBox.Trace.ServiceObserver" value="1"/>
8??????? </properties>
9?????? ?<service-instance template="RTDSystemService" name="one"/>
10?????? <service-instancetemplate="RTDSystemService" name="two"/>
11?????? <service-instancetemplate="RTDSystemService" name="three"/>
12?????? <service-instancetemplate="RTDSystemService" name="four"/>
13?????? <service-instancetemplate="RTDSystemService" name="five"/>
14???? </icebox>
<!— end IceBox服務配置 IceBox-Node1-->
??? </node>
??? <node name="node_2">
????? <server-instancetemplate="RTDSSystemServer" index="2"/>
????? <server-instancetemplate="RTDSSystemServer" index="22"/>
????? <server-instancetemplate="RTDSSystemServer" index="222"/>
<!— begin IceBox服務配置 IceBox-Node2-->
1???? <icebox id="IceBox-Node2" activation="on-demand"exe="java">
2??????? <description>Asample IceBox server IceBox-Node2</description>
3??????? <option>IceBox.Server</option>
4??????? <properties>
5?????????? <property name="IceBox.InstanceName" value="${server}"/>
6?????????? <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.242"/>
7?????????? <property name="IceBox.Trace.ServiceObserver" value="1"/>
8??????? </properties>
9??????? <service-instancetemplate="RTDSystemService" name="2-one"/>
10?????? <service-instancetemplate="RTDSystemService" name="2-two"/>
11?????? <service-instancetemplate="RTDSystemService" name="2-three"/>
12?????? <service-instancetemplate="RTDSystemService" name="2-four"/>
13?????? <service-instancetemplate="RTDSystemService" name="2-five"/>
14???? </icebox>
<!— begin IceBox服務配置 IceBox-Node2-->
??? </node>
??? <node name="node_3">
????? <server-instancetemplate="RTDSSystemServer" index="3"/>
??? </node>
? </application>
</icegrid>
app.xml中增加的IceBox服務相關的配置部分如下:
n? 服務摸板(Service Template):
????? 可以對比一下servertemplate的定義,兩者基本上沒有什么區別,最大的不同是
?? Server template中server是指定一個可執行的程序,而service中指定的是動態加載
?? 的組件入口。以下解釋上述配置中的服務模板的定義:
?????? 第1行指定定義模板的id,唯一標志一個服務模板,第12是閉合標簽;
?????? 第2行定義了一個參數name,默認值是“name”;
?????? 第3~11行定義了模板中使用的服務(service),并在該service中指定了名稱、?
?????? 入口、描述信息、配置屬性,定義了一個對象適配器;
?????? 第4行,是該服務的描述信息;
?????? 第5~7行,是屬性定義列表,這里定義了一個屬性RTDataSource.Identity,并
?????? 指定其值為RTDataSource;
?????? 第8行,定義了一個對象適配器,指定了其name、endpoints、id、replica-group
?????? 等屬性信息,這個基本上和server中adapter的定義沒有什么區別
??????
?????? 以上內容就是service模板的定義。
n? IceBox服務(IceBox-Node1):
????????????? ???icebox服務的定義被包含在分布的服務器節點中,主要包括三部分的信息:
1.??????IceBox服務的啟動配置信息
2.??????IceBox的屬性配置信息
3.??????Service服務實例化列表
???????? 下面解釋這塊內容:
????????? 第1~3行,指定了IceBox服務的名稱,啟動方式,啟動執行程序等
????????? 第4~8行,指定了IceBox服務的屬性配置列表,這里定義了IceBox服務的實
????????? 例名稱、管理器訪問端點以及service被跟蹤的級別
????????? 第9~13行,實例化了5個service服務
??????? 至此,一個包含了5個serverservice服務的IceBox服務被集成在node1中。
n? IceBox服務(IceBox-Node2)
同IceBox服務(IceBox-Node1)中描述,只是具體value有所不同,這里不再解釋。
? 4.1.3? 測試驗證
驗證方式同第3章,這里不再贅述。部署完成后,就可以通過IceGridGUI.jar程序來進行管理
總結
以上是生活随笔為你收集整理的IceGrid应用 配置手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宏比较值,坑的一B
- 下一篇: CPDA数据分析师:为什么Python在