Zeroc Ice 学习笔记--Docker 部署服务
1、Docker Ice images安装
docker pull zeroc/icegridregistry
docker pull mycat/leader-icenode(包含JDK)
2、Ice Registry
registry.conf 文件:
IceGrid.InstanceName=IceGrid
IceGrid.Registry.Client.Endpoints=tcp -p 4061
IceGrid.Registry.Server.Endpoints=tcp
IceGrid.Registry.Internal.Endpoints=tcp
IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier
#持久化目录
IceGrid.Registry.Data=.
#是否允许动态注册
IceGrid.Registry.DynamicRegistration=1
执行命令:
docker run -d --name demo_registry -v /data/apps/light/registry/icegridreg.conf:/etc/icegridregistry.conf:ro
-v /data/apps/light/registry:/var/lib/ice/icegrid -p 4601:4601 zeroc/icegridregistry
部分说明:--name:registry名称
/data/apps/light/registry/icegridreg.conf:指定conf文件目录,替代/etc/icegridregistry.conf
/data/apps/light/registry:指定持久化目录,替代/var/lib/ice/icegrid目录
3、IceGrid Node
#主节点位置
Ice.Default.Locator=IceGrid/Locator:tcp -h 192.168.9.111 -p 4061
#节点1数据存储目录
IceGrid.Node.Data=/var/lib/ice/icegrid/nodedata
#节点1监听端口号
IceGrid.Node.Endpoints=tcp -h 0.0.0.0
#节点1名称
IceGrid.Node.Name=node1
#IceGrid.Node.Output=/var/lib/ice/icegrid/out.log
Ice.StdErr=/var/lib/ice/icegrid/stderr.log
Ice.StdOut=/var/lib/ice/icegrid/stderr.log
IceGrid.Node.RedirectErrToOut=1
IceGrid.Node.Trace.Replica=2
执行命令:
docker run --name light-temple-node1 --net=host
-v /data/apps/light/temple-service/dist/node1.conf:/etc/icegridnode.conf:ro
-v /data/apps/light/temple-service:/var/lib/ice/icegrid -d mycat/leader-icenode
4、IceGrid
<icegrid>
<application name="light-temple">
<properties id="props">
<property name="Ice.ThreadPool.Server.Size" value="50"/>
</properties>
<server-template id="TempleServerTemplate">
<parameter name="id"/>
<icebox id="TempleServices${id}" exe="java" user="ice">
<properties>
<properties refid="props"/>
</properties>
<option>IceBox.Server</option>
<env>CLASSPATH=/var/lib/ice/icegrid/dist/jars/*</env>
<service name="TempleServices" entry="com.gwsoft.light.services.temple.TempleService">
<adapter name="TempleServices" id="TempleServices${id}" endpoints="tcp -h localhost -t 10000" replica-group="TempleServiceRep"/>
</service>
</icebox>
</server-template>
<replica-group id="TempleServiceRep">
<load-balancing type="adaptive" n-replicas="0"/>
<object identity="TempleServices" type="::temple::TempleServices"/>
</replica-group>
<node name="temple_node1">
<server-instance template="TempleServerTemplate" id="1"/>
<server-instance template="TempleServerTemplate" id="2"/>
</node>
</application>
</icegrid>
说明:
<env>CLASSPATH=/var/lib/ice/icegrid/dist/jars/*</env>
在执行命令中等同于/data/apps/light/temple-service/dist/jars/*
endpoints="tcp -h localhost -t 10000"
设置当前服务endpoints属性,显著提升client调用响应时间
执行命令:
5、Client调用服务
--Ice.Default.Locator=IceGrid/Locator:tcp -h 192.168.9.111 -p 4061
自己相对于更改-h 、-p并可以调用服务