部署環境:使用4臺服務器來部署grid應用,必須把4臺服務器的防火牆都關閉
Register主服務:192.168.10.11, Register從服務:192.168.11.12,
Node1:192.168.10.13
Node2:192.168.10.14
客戶端:192.168.11.44
注:以下是windows下部署方案,linux部署類同,配置文件可以複用。
192.168.10.11部署步驟:
1. 創建ICE運行環境。
具體動作:複製ICE的bin目錄到150的任何位置,該目錄約400MB,例如:D:\ZeroC\Ice-3.5.1\bin
2. 創建ICE配置文件目錄
具體動作:創建一個目錄來存放配置文件。例如:D:\MyIceGrid
3. 配置Register主服務
具體動作:創建config.register文件,填寫以下內容。
#實例名稱,不能重複
IceGrid.InstanceName=DemoIceGrid
Ice.Default.Locator=DemoIceGrid/Locator:default -p 4061
# IceGrid registry configuration.
# 訪問授權相關,默認就行
IceGrid.Registry.Client.Endpoints=default -p 4061
IceGrid.Registry.Server.Endpoints=default
IceGrid.Registry.Internal.Endpoints=default
#定位服務的持續化存儲,如果不存在要手工創建
IceGrid.Registry.Data=db/registry
#標識爲主服務
IceGrid.Registry.ReplicaName=Master
# 訪問授權相關,默認就行
IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.SSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
IceGrid.Registry.AdminSSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
#配置管理授權的帳號和密碼
IceGridAdmin.Username=foo
IceGridAdmin.Password=bar
4. 運行Register主服務。
具體動作:D:\ZeroC\Ice-3.5.1\bin\icegridregistry --Ice.Config=config.register
5. 配置應用信息。
具體動作:複製一份application.xml文件,修改名稱爲application_with_replication.xml,內容更新成以下內容。
<icegrid>
<application name="Simple">
<server-template id="SimpleServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server.exe" activation="on-demand">
<adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/>
<property name="Identity" value="hello"/>
<property name="IceMX.Metrics.Debug.GroupBy" value="id"/>
<property name="IceMX.Metrics.Debug.Disabled" value="1"/>
<property name="IceMX.Metrics.ByParent.GroupBy" value="parent"/>
<property name="IceMX.Metrics.ByParent.Disabled" value="1"/>
</server>
</server-template>
<replica-group id="ReplicatedHelloAdapter">
<load-balancing type="round-robin"/>
<object identity="hello" type="::Demo::Hello"/>
</replica-group>
<node name="node1">
<server-instance template="SimpleServer" index="1"/>
<server-instance template="SimpleServer" index="2"/>
<server-instance template="SimpleServer" index="3"/>
</node>
<node name="node2">
<server-instance template="SimpleServer" index="4"/>
<server-instance template="SimpleServer" index="5"/>
<server-instance template="SimpleServer" index="6"/>
</node>
</application>
</icegrid>
6. 運行管理命令。
具體動作:
D:\ZeroC\Ice-3.5.1\bin\icegridadmin --Ice.Config=config.register -e "application add 'application_with_replication.xml' "
如果已經存在,則運行更新命令
D:\ZeroC\Ice-3.5.1\bin\icegridadmin --Ice.Config=config.register -e "application update 'application_with_replication.xml' "
7. 用工具測試效果
具體動作:打開bin\IceGridGUI.jar
創建直接連接,輸入IP,端口,管理的帳號和密碼。不報錯就表示成功
192.168.10.12部署步驟:
1. 創建ICE運行環境。
具體動作:複製ICE的bin目錄到150的任何位置,該目錄約400MB,例如:D:\ZeroC\Ice-3.5.1\bin
2. 創建ICE配置文件目錄
具體動作:創建一個目錄來存放配置文件。例如:D:\MyIceGrid
3. 配置Register從服務
具體動作:創建config.register2文件,填寫以下內容。
IceGrid.InstanceName=DemoIceGrid
#
# The IceGrid locator proxy.
#
#定位主服務的地址,必須配置
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.10.11 -p 4061
#
# IceGrid registry configuration.
#
#當前定位服務的地址,必須配置
IceGrid.Registry.Client.Endpoints=default -h 192.168.10.12 -p 4061
#IceGrid.Registry.Client.Endpoints=default
IceGrid.Registry.Server.Endpoints=default
IceGrid.Registry.Internal.Endpoints=default
IceGrid.Registry.Data=db/registry
#標識爲從服務,名稱不爲master就行
IceGrid.Registry.ReplicaName=slave1
IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.SSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
IceGrid.Registry.AdminSSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
4. 運行Register從服務。
具體動作:D:\ZeroC\Ice-3.5.1\bin\icegridregistry --Ice.Config=config.register2
5. 用工具測試效果
具體動作:打開bin\IceGridGUI.jar
創建直接連接,輸入IP,端口,管理的帳號和密碼。不報錯就表示成功
192.168.10.13部署步驟:
1. 創建ICE運行環境。
具體動作:複製ICE的bin目錄到150的任何位置,該目錄約400MB,例如:D:\ZeroC\Ice-3.5.1\bin
2. 創建ICE配置文件目錄
具體動作:創建一個目錄來存放配置文件。例如:D:\MyIceGrid
3. 配置Node1服務
具體動作:創建config.node1文件,填寫以下內容。
#配置定位器的地址爲 定位主服務的地址和從服務的地址,由node節點主動向定位服務進行註冊
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.10.11 -p 4061:default -h 192.168.10.12 -p 4061
#
# IceGrid registry configuration.
#
#
# IceGrid node configuration.
#結點配置信息
IceGrid.Node.Name=node1
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node
#IceGrid.Node.Output=db
#IceGrid.Node.RedirectErrToOut=1
#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1
4. 運行Node1服務
具體動作:D:\ZeroC\Ice-3.5.1\bin\icegridnode --Ice.Config=config.node1
192.168.10.14部署步驟:
1. 創建ICE運行環境。
具體動作:複製ICE的bin目錄到150的任何位置,該目錄約400MB,例如:D:\ZeroC\Ice-3.5.1\bin
2. 創建ICE配置文件目錄
具體動作:創建一個目錄來存放配置文件。例如:D:\MyIceGrid
3. 配置Node1服務
具體動作:創建config.node2文件,填寫以下內容。
#配置定位器的地址爲 定位主服務的地址和從服務的地址,由node節點主動向定位服務進行註冊
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.10.11 -p 4061:default -h 192.168.10.12 -p 4061
#
# IceGrid registry configuration.
#
#
# IceGrid node configuration.
#結點配置信息
IceGrid.Node.Name=node2
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node2
#IceGrid.Node.Output=db/node2
#IceGrid.Node.RedirectErrToOut=1
#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1
4. 運行Node2服務
具體動作:D:\ZeroC\Ice-3.5.1\bin\icegridnode --Ice.Config=config.node2
客戶端配置:
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.10.11 -p 4061:default -h 192.168.10.12 -p 4061
測試過程:
1. 把定位主服務關閉, 客戶端連接正常,信息顯示正確。
2. 把定位從服務關閉,客戶端連接正常,信息顯示正確。
3. 把node1關閉,客戶端連接正常,信息顯示正確。
4. 把node2關閉,客戶端連接正常,信息顯示正確。