集群
Version 25.1.9222
集群
集群可以让多个知行之桥 EDI 平台协同工作,用相同的配置处理相同的数据。工作负载被水平分布在知行之桥集群中,以提高可扩展性和可用性。
概述
为了支持知行之桥中的高可用性和故障转移功能,应将应用程序安装在同一服务器集群的不同系统上。负载均衡器会在承载 EDI 实例的多个系统之间分配传入的流量。
当配置集群时,服务器集群中的每个 EDI 系统都使用相同的应用程序配置,处理磁盘上相同配置的数据,并将事务记录在相同的数据库表中。。
因此,应用程序的多个实例表现得就像是一个实例,并且任何一个实例的关闭不会破坏集群的性能。
配置知行之桥进行集群
在集群内的每个节点都安装知行之桥后,每个安装都应该配置使用相同的应用程序数据库和应用程序数据目录。
许可
必须为集群中的每个节点应用唯一的许可证密钥。转到每个节点的许可页面并应用其中一个密钥。应用程序在集群的共享目录中创建一个许可证文件。许可证文件名包括共享目录中两个节点的计算机名称。
应用程序数据库
知行之桥使用数据库来记录交易历史和发生在应用程序中的所有错误。知行之桥的每个实例都应该配置使用同一个应用程序数据库来确保所有处理的文件最终可以合并到数据库中。
Windows 版本
在 Windows 版本中配置应用程序数据库,AppDb 环境变量的配置必须包括正确的 connection string 和 provider。为此,修改安装目录 “www” 文件夹中的 Web.Config 文件,在此文件中有个被注释掉的 XML 元素 connectionStrings 例如:
<!-- connectionStrings>
<add
name="AppDb"
connectionString="server=SQLSERVER_LOCATION;database=DATABASE_NAME;uid=USER_ID;password=PASSWORD;"
providerName="System.Data.SqlClient"
/>
</connectionStrings -->
取消 connectionStrings 的注释,将 “connectionString” 和 “providerName” 属性设置为所需数据库的连接参数。如果知行之桥可以成功地使用这个连接字符串建立连接,那么将使用这个数据库作为应用程序数据库。
内置 Java 服务器
将 Java 版本与内置 Jetty 服务器一起使用时,将在安装目录下“webapp”文件夹中的 arc.xml 文件中配置应用程序数据库。在此服务器配置文件中,必须将 APP_DB 环境变量配置的 JDBC 连接字符串,并包含所需数据库的连接参数。例如:
<Call name="setInitParameter">
<Arg>APP_DB</Arg>
<Arg>jdbc:mysql:Server=MySQLServer;Port=3306;Database=mysql;User=user;Password=password</Arg>
</Call>
如果知行之桥可以成功与 APP_DB 连接字符串建立连接,那么将使用这个数据库作为应用程序数据库。
外部 Java 服务器
将 Java 版本与外部 Java servlet(应用程序内置 Jetty 服务器以外的任何服务器)一起使用时,配置应用程序数据库的细节取决于使用的特定 servlet。使用适用于特定 servlet 的语法,在配置服务器时,应使用以下其中一项方法:
- 定义一个包括目标数据库连接属性的 JNDI 数据源。
- 为 JDBC 连接字符串设置 APP_DB 环境变量。
如果知行之桥可以使用一个 JDNI 数据源或 APP_DB 连接字符串来连接数据库,那么将使用该数据库作为应用程序数据库。
应用程序数据目录
知行之桥将所有的配置数据和应用程序数据储存在磁盘上一个叫数据目录的文件夹。当使用集群时,知行之桥的每个实例都应该配置为同一个数据目录。这确保了所有实例处理相同的文件并使用相同的配置。
Windows 版本
在 Windows 版本中配置应用程序数据目录,必须将 AppDirection 环境变量设置为创建目录的路径。为此,请修改安装目录下 “www” 文件夹下的 Web.Config 文件。在此文件中,有一个被注释掉的 XML 元素 AppDirectory,可以在其中指定自定义数据目录位置:
<!-- appSettings>
<add key="AppDirectory" value="C:\\directory\\subdirectory\\subdirectory\\" />
</appSettings -->
取消 appSettings 的注释,将 AppDirectory 键值设置为磁盘上数据目录的路径。如果知行之桥可以成功地找到该路径,并且具有读写权限,它将在指定目录下创建数据文件夹。
内置 Java 服务器
将 Java 版本与内置 Jetty 服务器一起使用时,将在安装目录下“webapp”文件夹中的 arc.xml 文件中配置应用程序数据库。在此服务器配置文件中,必须将 AppDirctory 环境变量设置为所需目录的路径。以下示例演示将数据目录设置为已安装驱动器上的共享文件夹时的情况:
<Call name="setInitParameter">
<Arg>AppDirectory</Arg>
<Arg>/mnt/shared/arc</Arg>
</Call>
如果知行之桥可以成功地找到该路径,并且具有读写权限,它将在指定目录内创建数据文件夹。
外部 Java 服务器
当使用外部 Java servlet (除了任何包含在应用程序中的 Jetty 服务器),配置应用程序数据库的细节取决于使用的特定的 servlet。使用适用于特定 servlet 的语法,AppDirectory 环境变量必须设置为所需的目录。
如果知行之桥成功地找到 AppDirectory 路径,并且具有读写权限,它将在指定目录内创建数据文件夹。
锁与并发
知行之桥使用锁来确保多个实例不会相互干扰或两次处理同一个文件。在集群环境中,有效的锁定对于保持吞吐量和防止冲突至关重要。因此,强烈建议不要跨多个服务器场对知行之桥实例进行集群,因为这样可能会产生文件系统延迟。
为知行之桥的每个实例设置一个共享的应用程序目录足以确保每个实例都遵守文件锁。