转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52243427

1、环境

主机1:IP=192.168.0.239,上面部署注册表服务器registry和节点node1,registry和node1运行在同一进程中;
主机2:IP=192.168.0.25,上面部署节点node2;
其中每个节点中包含一个服务程序,服务程序均在节点启动时启动。

2、主机1配置

(1)服务程序部署XML:app_rep.xml,内容如下

<icegrid>
<application name="Simple"> #分布式系统名称<server-template id="SimpleServer"> #服务器模板
<parameter name="index"/> #自定义参数index
<server id="SimpleServer-${index}" exe="./server" activation="always"> #服务器id,程序路径,启动方式
<adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> #对象适配器配置
<property name="Identity" value="hello"/> #服务器中自定义属性Identity
</server>
</server-template><replica-group id="ReplicatedHelloAdapter">
<load-balancing type="round-robin"/> #负载均衡配置,使用轮询调度方式(最近最少使用算法)
<object identity="hello" type="::Demo::Hello"/> #该replica-group中的对象,客户端根据该对象标识或类型定位请求
</replica-group><node name="node1"> #节点1,对应于服务程序实例SimpleServer-1
<server-instance template="SimpleServer" index="1"/>
</node><node name="node2"> #节点2,对应于服务程序实例SimpleServer-2
<server-instance template="SimpleServer" index="2"/>
</node></application></icegrid>

(2)registry和node1的配置文件config.grid,内容如下

#
# The IceGrid instance name.
#
IceGrid.InstanceName=DemoIceGrid#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -p 12345 #注册表服务器的端点信息#
# IceGrid registry configuration.
#
IceGrid.Registry.Client.Endpoints=default -p 12345
IceGrid.Registry.Server.Endpoints=default
IceGrid.Registry.Internal.Endpoints=default
IceGrid.Registry.Data=db/registry #注册表服务器使用到的目录
IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.SSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
IceGrid.Registry.AdminSSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier#
# IceGrid SQL configuration if using SQL database.
#
#Ice.Plugin.DB=IceGridSqlDB:createSqlDB
#IceGrid.SQL.DatabaseType=QSQLITE#
# IceGrid node configuration.
#
IceGrid.Node.Name=node1 #节点1,对应于app_rep.xml中node1
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node #节点1用到的目录
IceGrid.Node.CollocateRegistry=1
#IceGrid.Node.Output=db #将节点上的服务程序的标准输出重定向到目录db下,会自动生成输出文件
#IceGrid.Node.RedirectErrToOut=1 #将节点上的服务程序的标准错误重定向到标准输出#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1
#IceGrid.Node.Trace.Adapter=2
#IceGrid.Node.Trace.Server=3#
# Dummy username and password for icegridadmin.
#
IceGridAdmin.Username=foo
IceGridAdmin.Password=bar

3、主机2配置

主机2上只需要配置node2的配置文件config.node即可,内容如下

#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.0.239 -p 12345 #注册表服务器的端点信息#
# IceGrid node configuration.
#
IceGrid.Node.Name=node2 #节点2,对应于app_rep.xml中node2
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node2
IceGrid.Node.Output=db/node2 #将节点上的服务程序的标准输出重定向到db/node2目录下,会自动生成输出文件
IceGrid.Node.RedirectErrToOut=1#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1

4、客户端配置

配置文件:config.client,内容如下:

#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.0.239 -p 12345 #只需有注册表服务器的端点信息即可

5、启动服务程序

(1)主机1上先启动注册表和节点1,执行:icegridnode --Ice.Config=config.grid
(2)主机1上部署服务(只需部署一次,除非修改过app_rep.xml),执行:
icegridadmin --Ice.Config=config.grid -e "application add app_rep.xml"
若要重新部署,执行:icegridadmin --Ice.Config=config.grid -e "application update app_rep.xml"
(3)主机2上启动节点2,执行:icegridnode --Ice.Config=config.node,此时因为服务配置为随节点启动,所以服务自动激活;

6、打开客户端

执行./client,客户端自动连接注册表服务器,接下来便可向服务器发起访问请求。

7、关于程序编码调整

IceGrid的使用会导致客户端、服务器的配置文件发生变动,而代码也只需做极少的改动。主要是客户端可能会由直接代理换成间接代理。
使用了IceGrid定位服务功能后,客户端无需知道服务器上对象适配器端点,只需要对象标识或对象适配器标识或replica-group标识
便可以访问到服务器上的对象。
服务器端可以在xml中配置对象标识,客户端可以从配置文件中读取相应对象标识,这样对象标识就不需要硬编码在程序中了。

ICE之——IceGrid负载均衡部署相关推荐

  1. 基于centos7.3 3.10-514的LVS双机负载均衡部署方案

    基于centos7.3 3.10-514的LVS双机负载均衡部署方案 主机:192.168.1.51 备机:192.168.1.52 LVS VIP: 192.168.1.50 0.制作系统本地的光盘 ...

  2. Nginx反向代理和负载均衡部署指南

    nginx不单能够作为强大的webserver,也能够作为一个反向代理server,并且nginx还能够依照调度规则实现动态.静态页面的分离.能够依照轮询.ip哈希.URL哈希.权重等多种方式对后端s ...

  3. nginx+uwsgi负载均衡部署django项目

    uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / u ...

  4. 【Nginx入门系列】第六章 Nginx+tomcat集群负载均衡部署

    待更新 转载于:https://www.cnblogs.com/evan-liang/p/9189612.html

  5. Nginx反向代理负载均衡的容器化部署

    首先,在home目录创建microservices目录,开启第一篇章. cd ~ && mkdir microservices && cd microservices ...

  6. LVS负载均衡群集 --NAT模式实战部署(图文详解)

    目录 一.群集应用概述 1.1 群集的含义 1.2 应用场景出现高并发的解决方案 1.3 系统性能扩展方式 1.4 群集的三种分类 1.4.1 负载均衡群集 1.4.2 高可用群集 1.4.3 高性能 ...

  7. 负载均衡原理及LVS-NAT的部署

    集群和分布式 系统性能扩展方式: Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务 Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Clus ...

  8. 二进制部署K8S多Master+LB负载均衡群集+K8S日志排错

    文章目录 服务器环境 实验步骤 Master2节点部署 LB1,2负载均衡部署 Node节点修改 实验测试 在LB1上查看nginx的K8S日志 创建测试pod 在Node节点上测试nginx 查看日 ...

  9. WEB集群与各种负载均衡简介 (资源)

    2019独角兽企业重金招聘Python工程师标准>>>                                负载均衡构架图      集群(Cluster):是一组独立的计 ...

最新文章

  1. 构建物联网网络的4个关键步骤简介
  2. 【数据结构】栈-顺序栈、链式栈、共享栈
  3. Linux 分区管理与swqp与逻辑卷创建修改删除
  4. 节点操作大全(二)~操作节点的属性
  5. ASPxGridView数据汇总收藏
  6. C++ begin( ) cbegin( ) end() cend()区别
  7. mysql over rank_总结几种MySQL中常见的排名问题
  8. 软考高项-质量管理论文范文
  9. 一种改进CA-CFAR算法及其MATLAB编程实现,论文仿真——《基于LFMCW雷达多目标检测的CA-CFAR改进算法》
  10. 程序员外包兼职平台介绍
  11. 指数函数,幂函数,对数函数
  12. GMT,UTC,CST,ISO等时间标志以及时区的总结
  13. 【Android】Error obtaining UI hierarchyError while obtaining UI hierarchy XML file: com.android...
  14. PPT文件不能编辑的原因
  15. api-ms-win-crt-stdio-l1-1-0.dll丢失问题解决
  16. 女生到底还做java还是前端_女孩子想转行的话学前端好还是java,哪个更有发展?...
  17. numpy之dtype用法
  18. JavaScript面试问题:事件委托和this
  19. html5 jquery魔方,基于jquery的魔方插件
  20. 程序员不修改Bug,我们该怎么办??

热门文章

  1. [SDK]Unity接入Sign in with Apple
  2. 18种各式各样的loading,纯html5+css3无图片
  3. lftp的使用以及常见的指令
  4. 如何在浏览器中运行Linux程序,如何在Chromebook的浏览器标签中运行完整的Linux桌面 | MOS86...
  5. 每日一练2,希尔排序
  6. Mac下独立设置触控板和鼠标的滚动方向
  7. libusb系列-002-Windows下libusb源码编译
  8. T5 s1 day14
  9. Win7 将 resync 命令发送到本地计算机 此计算机没有重新同步,因为要求的时间更改太大
  10. 基于esp32-cam的监控小车