insights 磁力
新的IBM ODM Advanced V8.7 Decision Server Insights产品旨在使企业能够尽早发现并响应风险和机遇。 Decision Server Insights以事件的形式接收数据,这些事件来自多个来源,例如业务系统,社交网络,移动设备和传感器。 为了获得可行的见解,从而能够做出明智的决策,可以使用事件事件中的数据以及存储在内存中的数据上的分析功能和业务规则,对事件进行处理。
为了以有效的方式完成这种类型的处理,Decision Server Insights需要一个运行时平台,该平台能够处理大量事件,通常每秒处理数万个事件,并且可以线性方式扩展。 WebSphere eXtreme Scale和WebSphere Application Server Liberty Profile应用程序服务器的分布式数据网格功能提供了非功能性功能的正确组合,以实现此规模的内存中事务处理。
完成本教程后,您应该能够安装和配置满足您的非功能性需求(包括高可用性,安全性和可恢复性)的Decision Server Insights运行时生产环境。 本教程说明如何在Decision Server Insights参考拓扑的上下文中实现非功能性功能。
需要明确的是,没有能够满足所有客户需求的“一刀切”的拓扑。 不同的应用程序可能具有不同级别的非功能性要求和风险承受能力。 描述Decision Server Insights的参考拓扑的动机是双重的:1)在考虑到IBM ODM及其运行或依赖的软件的任何软件限制的情况下,以平衡的方式解决“典型”的非功能需求集以及2)提供对确定,限制特定拓扑偏好的需求,参数和功能的洞察力。
本部分介绍了了解参考拓扑的配置所需的最少的WebSphere eXtreme Scale概念集。
WebSphere eXtreme Scale是一个“弹性的”内存数据网格。 为了至少能够配置此网格,您必须熟悉以下概念:
Decision Server Insights功能的详细视图不在本教程的范围之内。 有关更多信息,请参阅IBM Operational Decision Manager Advanced V8.7 Decision Server Insights产品文档。 本教程仅限于介绍与参考拓扑相关的最少基本概念。
Decision Server Insights 解决方案(可以视为一种应用程序)在网格中存储实体 (数据对象)并处理通常与那些实体相关的事件。 事件将通过相关性ID路由到数据所在的容器。 在容器中,它们由关联的规则 , Java或预测性评分 (IBM SPSS Statistics) 代理处理 。
可以直接通过Solution Gateway API(使用Java)或通过入站连接间接将来自外部系统的事件提交到Decision Server Insights运行时环境。 对于入站连接,将一台或多台Liberty配置文件服务器配置为入站连接服务器,以充当外部消息传递终结点与Solution Gateway API之间的桥梁。 针对外部系统的出站事件被路由到一个或多个出站连接服务器。
Decision Server Insights参考拓扑是单站点拓扑。 虽然在许多情况下需要分区或多主拓扑,但不在本教程的讨论范围之内。
参考拓扑基于以下目标,这些目标取决于软件的功能:
这些目标用于定义Decision Server Insights参考拓扑,该拓扑大致由入站和出站连接服务器,目录服务器,容器服务器以及用于将网格数据持久存储到磁盘存储介质的数据库形成。
入站和出站连接服务器负责事件流入和流出系统,因此这些服务器应具有一定的冗余性。 一个好的起点是在两台不同的计算机上使用其中之一,这是避免单点故障的最低要求。 确定特定事件吞吐量所需的入站或出站服务器的实际数量没有经验法则。 入站和出站服务器的数量根据许多参数而有所不同,这些参数包括事件数据的大小,可能执行的事件转换的类型,是否将事件持久性用于Java Messaging Service(JMS)以及类型使用的协议(例如,HTTP或JMS)。 为了获得最佳结果,请从两台服务器开始并监视资源使用情况(例如,CPU和内存)。 对于高事件速率,您可以继续将入站和出站连接服务器添加到同一台计算机上,直到达到计算机的理想资源消耗阈值为止。 达到阈值后,可以根据需要添加新计算机。
上一节讨论了目录服务以及为什么在生产环境中需要三个或更多目录服务器。 如果选择使用三个目录服务器,则出于高可用性的原因,它们应位于单独的计算机上。
所需容器服务器的数量取决于在网格上运行的解决方案的数量和类型以及它们处理的事件的数量。 这个数字可以增加或缩小,但是通常在生产环境中有多个(以支持高可用性要求)。
根据拓扑目标,您可以推断,除了主要数据外,还需要同步副本和异步副本。 这不仅可以满足您的高可用性目标,而且可以确保以高效的方式完成“滚动更新”或一次在一个容器服务器上执行的任何维护活动。 例如,如果主要数据丢失,则与主要数据相同的同步副本立即成为主要数据。 同样,然后可以非常快地将异步副本升级为同步副本,而不必等待主副本被重新创建,如果没有其他副本,便会是这种情况。
根据这些观察,理想情况下,至少应在4个远程容器主机上运行4个容器。 使用4个容器,您可以停止一个容器进行维护,而其余3台机器仍具有所需的冗余级别。 这很重要,因为如果开发模式标志设置为false,则目录服务不会将属于同一分区的主或副本分片放置在同一虚拟机或同一IP地址中。
可以动态添加到网格的最大容器数受分区数和在每个分区中配置的副本数的限制。 这种限制源于以下事实:只有在网格关闭的情况下才能更改分区的数量,并且还因为拥有更多的容器服务器比可以使用的最大数量没有意义。 此数目由分区数 x(1 + 副本数 )确定。 例如,如果分区数为20,并且您有2个副本,则意味着您有20个主副本+ 20 x 2个副本(= 20 *(1 + 2)),这导致最多可以添加60个容器到网格并实际使用(每台计算机上只有一个副本或主分片)。
考虑到这一限制,选择大量的分区似乎有助于增长并允许更好地平衡内存资源。 但是,每当网格发生变化时,就必须与更大数量的线程,增加的网格通信开销以及更高水平的平衡工作进行平衡。 当分区数量大且容器数量少时,在删除或添加容器时,网格重新配置工作量会很大。
实际上,考虑到建议的每台机器一个容器服务器,将分区数设置为您希望拥有的最大容器数(C)乘以容器主机的内核数(M)是一个很好的经验法则。乘以2(因此C x M x 2)。 假设每个容器主机中的内核数相等。 另外,如果分区的数目是质数,则鉴于某些WebSphere eXtreme Scale操作更有效,因此将该数四舍五入为下一个质数是一个好习惯。 例如,假设您预期最多有6个容器服务器主机,每个服务器主机具有4个核心,则分区数的一个不错的值将是:nextPrime(6 x 4 x 2)= 53。分区数为127。
图1显示了一个网格,其中包含3个容器和n个分区,每个分区都有一个主分区和2个副本分片。 值为n较大时,每个容器还将有大量分区。 添加容器时,分区会分布在新容器中,从而减少了每个容器的分区数。
Decision Server Insights在内存数据网格上运行。 但是,在单站点拓扑中,必须将网格数据持久保存到数据库中,才能从灾难中恢复或启用任何需要关闭网格的罕见维护活动。 您可以在同步(直写)或异步(后写)数据库持久性模式之间进行选择。 需要仔细考虑同步持久性的使用,因为它通常意味着较高的性能损失。 另一方面,异步持久性将批量执行数据库更新,并且性能损失很小。 数据库更新的频率可能会根据可接受的风险级别而有所不同,它使用一个称为writeBehind
的参数根据时间间隔和批处理更新的数量进行writeBehind
。 例如, writeBehind
配置值'T20;C200'
意味着每20秒或每有200个待处理的更新数就写入数据库,无论哪种情况先发生。
请注意,在满足以下条件的情况下,在受控关闭网格的过程中不应丢失数据:
等待关闭网格,直到满足这些条件。
对于参考拓扑,本教程使用异步数据库持久性配置。 除非在灾难发生时没有数据丢失是至关重要的,否则不值得付出同步持久性选项的性能和吞吐量损失。
WebSphere eXtreme Scale可以将数据库更新排队,从而允许一些数据库停机,但是理想情况下,数据库应该具有高可用性(例如,通过使用DB2高可用性灾难恢复)。 对于非常高的事件负载,请考虑使用高度可扩展的数据库以确保该数据库不会成为瓶颈。
图2显示了如上所述的Decision Server Insights参考拓扑。
请注意,该示例为拓扑中的每个Decision Server Insights服务器使用不同的物理服务器,该配置提供了组件之间的高度隔离。 最少有3台物理服务器即可满足高可用性和可恢复性的目标,这还不包括数据库在内。 但是,具有4个服务器的拓扑更适合作为最低的高可用性拓扑。 这样的拓扑允许您有4个容器服务器,每台主机中有一个。 这些机器中的3台可以具有目录服务器。 此外,您应该在4台物理服务器中的至少2台上具有入站和出站服务器。
要安装和配置Decision Server Insights参考拓扑,请使用以下策略:
要使超大型目录具有高可用性,请创建一个由3个目录服务器组成的目录服务器域。
在prototypes机器上的installation_directory /runtime/wlp/bin
,运行以下命令从cisCatalog模板创建服务器:
./server create cisCatalog --template=cisCatalog
请注意,您在模板参数中使用了两个破折号( --
)。
如下例所示,在bootstrap.properties文件中配置目录库集群端点。 将vmwtpmxxxx
更改为您自己的主机名。
ia.clusterEndpoints=vmwtpm094x-cisCatalog:vmwtpm094x:6600:6601,vmwtpm0953-cisCatalog:vmwtpm0953:6600:6601,vmwtpm098d-cisCatalog:vmwtpm098d:6600:6601.
注意:为了便于克隆目录服务器,在指定目录集群端点时,请避免使用${ia.serverName}
和${ia.host}
变量。
要创建安全的服务器环境,必须配置以下设置:
注意:此配置假定网络安全,并且未解决网格中服务器的安全以及这些服务器之间的通信。 有关更多信息,请参见“ 启用Decision Server Insights网格安全性”技术说明 。
installation_directory /runtime/wlp/bin
目录中创建包含自签名证书的密钥库,如以下示例所示: ./securityUtility createSSLCertificate --server=cisCatalog --password=ins1ghts --validity=1000 –subject=CN=*.ibm.com,O=IBM,C=UK
createSSLCertificate
命令时,应该看到类似于以下示例的输出: Creating keystore /opt/IBM/ODMInsights87/runtime/wlp/usr/servers/cisCatalog/resources
/security/key.jks
Created SSL certificate for server cisCatalog
Add the following lines to the server.xml to enable SSL:
ssl-1.0
SSL功能定义已经在server.xml
文件中,因此您无需将SSL功能定义添加到该文件中。 但是,必须将keyStore定义
复制到server.xml
文件中。 或者,您可以从server.xml文件中已有的密钥库定义中删除注释,而只需添加密码。 此配置对于属于网格的所有服务器以及所有连接服务器都是必需的。
仍然在server.xml
文件中,定义用于JMX访问的管理员角色:
DWGroup
要启用仲裁,请将属性enableQuorum =“ true”添加到server.xml文件中的xsServer条目,如以下示例所示:
]
另外,要获得多数仲裁,必须将jvm.options文件(位于cisCatalog目录中)的com.ibm.websphere.objectgrid.server.catalog.majority.quorum Java虚拟机属性设置为'true'。如以下示例所示:
-Dcom.ibm.websphere.objectgrid.server.catalog.majority.quorum=true
配置并启动环境后,请验证是否启用了仲裁和多数仲裁。 启动目录服务器后,在消息日志中查找以下消息:
I CWOBJ1251I: Quorum is enabled for the catalog service.
I CWOBJ0054I: The value of the "com.ibm.websphere.objectgrid.server.catalog.majority.quorum"
property is "true"
使用以下命令从原型目录服务器克隆3个目录服务器,这些命令从/opt/IBM/ installation_directory /runtime/ia/bin:
./cloneServer cisCatalog root catalog_host_name /opt/IBM/installation_directory/runtime
接下来,创建并配置容器服务器。
在installation_directory /runtime/wlp/bin
,运行以下命令从cisContainer
模板创建服务器:
./server create cisContainer –template=cisContainer
bootstrap.properties
文件 如以下示例所示,在容器的bootstrap.properties
文件中配置目录库引导端点:
ia.bootstrapEndpoints=vmwtpm094x:2809,vmwtpm0953:2809,vmwtpm098d:2809
克隆期间,自动将'localhost'
替换为相关的主机名。
对于容器服务器,请使用与目录服务器相同的安全配置。 将cisCatalog原型中的资源目录(例如/opt/IBM/ODMInsights87/runtime/wlp/usr/servers/cisCatalog/resources
复制到cisContainer原型的cisContainer目录。
将keyStore定义(
)添加到容器服务器原型的server.xml
文件中。
以与对目录服务器相同的方式在server.xml
文件中配置基本注册表:
在server.xml文件中,定义用于JMX访问的管理员角色:
DWGroup
对于容器服务器,必须配置REST API所使用的读取器(获取)和写入器(获取,发布,放置和删除)安全角色,如以下示例所示:
打开installation_directory /runtime/wlp/usr/servers/cisContainer/grids/objectGridDeployment.xml
文件。
您会注意到,网格的默认配置已经针对推荐的1个同步副本和1个异步副本进行了自定义。
重要:为了避免在启动网格时不必要的平衡工作,在启动目录服务器之后以及在启动容器服务器之前,请运行installation_directory /runtime/ia/bin/serverManager suspendbalancing
命令。 启动所有容器服务器后,发出serverManager resumebalancing命令以确保网格平衡在启动期间仅发生一次。
本教程示例将默认容器数从127更改为53。
配置后, 'iaMaps'
地图集看起来类似于以下示例:
'iaPreloadMaps'
地图集具有类似的配置,但请注意, iaGrMaps
仅具有一个分区。
默认情况下,数据保留在网格中,并且不会持久保存。 为确保持久保存数据以进行灾难恢复,请完成以下步骤:
your_installation_location \runtime\ia\persistence\sql\DB2\DB2Distrib.sql
提供的DDL创建Decision Server Insights数据库表。 请注意,您的DBA可能希望基于性能考虑或特定的组织标准对DDL进行一些更改。 jdbc-4.0
到featureManager
元素。
确保您还从ia_persistence entry
删除了注释:
最后,配置要保留在objectgrid.xml文件中的映射。 最简单的方法是使用installation_directory /runtime/ia/persistence/grids/write-behind/objectgrid.xml
的模板。 本教程使用后写模板,以便所有映射都异步保留。
您可能还选择更改数据库写入之间的默认批处理时间延迟和批处理大小,例如:
使用以下命令从原型容器服务器克隆4个容器服务器,这些命令从/opt/IBM/ installation_directory /runtime/ia/bin
:
./cloneServer cisContainer root container_host_name /opt/IBM/installation_directory/runtime
从相应的模板创建原型入站和出站服务器。
使用目录服务器端点为服务器配置bootsrap.properties
文件。
以与对容器服务器相同的方式配置安全性(无需配置REST API授权角色)。
从应用程序安全功能中删除注释,例如以下示例:
根据解决方案的要求配置入站或出站连接功能,例如:
appSecurity-2.0
ia:iaConnectivityInboundJMS-8.7.0
wmqJmsClient-1.1
本教程描述了Decision Server Insights的参考拓扑。 您学习了必要的WebSphere eXtreme Scale和Decision Server Insights基本概念以及网格的重要可配置元素,例如分区数。 本教程介绍了对拓扑的一组非功能性需求,并根据这些需求描述了拓扑布局和配置选择。 最后,您学习了参考拓扑的安装和配置步骤。
作者要感谢Decision Server Insights产品架构师David Martin对本文的审阅。 我们还要感谢David Rushall,David Granshaw和Lewis Evans的宝贵意见。
翻译自: https://www.ibm.com/developerworks/bpm/bpmjournal/1503_defreitas1/1503_defreitas1.html
insights 磁力