跳转至

客户环境MES堆栈组件#

本页列出了凯睿德制造MES堆栈内运行的所有容器,并解释了其用途以及每个容器的具体配置。

Info

可以为属于单个客户的任何基础设施部署多个环境,每个环境都有自己的URL。

graph LR
subgraph Infrastructure Agent
    Squid[Edge Squid Proxy]
    end
subgraph Customer Environment
    Edge[EdgeForwardProxy]
    Env[Environment Manager]
    UI[UI]
    Host[Host]
    Help[Help]
    Grafana[Grafana]
    SecurityPortal[Security Portal]
    Traefik[Traefik]
    TraefikForwardAuth[Traefik Forward Auth]
    Bus[MessageBus]
    DiscoveryService[Discovery Service]
    SQL[SQL Server]
    ConnectIoTManager[Connect IoT Manager]
    Rasa[Rasa]
    RasaActions[Rasa Actions]
    LBOGenerator[LBO Generator]
    MESScheduler[MES Scheduler]
    end
subgraph DataPlatform
    direction RL
    ClickHouse[ClickHouse]
    DataManager[Data Manager]
    DataManagerREST[Data Manager REST]
    EPFAMAT[EPF Alarm Management Action Trigger]
    EPFAMERH[EPF Alarm Management Event Rule Handler]
    EPFMEH[EPF Alarm Management MES Event Handler]
    EPFCB[EPF CDM Builder]
    EPFCH[EPF CDM Handler]
    K1[Kafka1]
    K2[Kafka2]
    K3[Kafka3]
    MLAgent[ML Platform Agent]
    MLPlatformTraining[ML Platform Training]
    Redis[Redis]
    ReplicateEvents[Replicate Events]
    ReplicateIDs[Replicate IDs]
    ReplicateTableSchemas[Replicate Table Schemas]
    Zookeeper[Zookeeper1]
    end

    Traefik --> TraefikForwardAuth
    TraefikForwardAuth --> Traefik
    Traefik --> UI
    Traefik --> Host
    Traefik --> Help
    Traefik --> Grafana
    Traefik --> SecurityPortal
    Traefik --> Bus
    Traefik --> DataPlatform
    Traefik --> ConnectIoTManager
    Traefik --> Rasa
    Traefik --> RasaActions
    Traefik --> DiscoveryService
    Traefik --> LBOGenerator
    Traefik --> MESScheduler
    Host -.-> SQL
    SQL -.-> Env
    Host -.-> Env
    UI -.-> Env
    Help -.-> Env
    Grafana -.-> Env
    SecurityPortal -.-> Env
    Bus -.-> Env
    DataPlatform -.-> Env
    ConnectIoTManager -.-> Env
    Rasa -.-> Env
    RasaActions -.-> Env
    DiscoveryService -.-> Env
    LBOGenerator -.-> Env
    MESScheduler -.-> Env
    Env ---> Squid

classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
classDef mermaid_state color:#000, fill:#d7e4bd, stroke:#000, stroke-width:1px, font-size:100%, font-weight:300;

class Squid,UI,Host,Help,SecurityPortal,ConnectIoTManager,Bus,Grafana,DiscoveryService,Rasa,RasaActions,LBOGenerator,MESScheduler mermaid_businessdata
class Env,Traefik,TraefikForwardAuth mermaid_entitylinked
class User mermaid_context
class ClickHouse,DataManager,DataManagerREST,EPFAMAT,EPFAMERH,EPFMEH,EPFCB,EPFCH,K1,K2,K3,MLAgent,MLPlatformTraining,Redis,ReplicateEvents,ReplicateIDs,ReplicateTableSchemas,Zookeeper mermaid_nonbusinessdata
class SQL mermaid_optional

click Traefik "#traefik"
click TraefikForwardAuth "#traefik-forward-auth"
click Bus "#mesmessage-bus"
click Host "#mes-host"
click Env "#environment-manager"
click SecurityPortal "#security-portal"
click UI "#mes-gui"
click Help "#mes-documentation"
click HelpReference "#mes-documentation-reference"
click Grafana "#grafana"
click SQL "#sql-server"
click ClickHouse "#clickhouse"
click ConnectIoTManager "#connect-iot-manager"
click DataManager "#data-manager"
click DataManagerREST "#data-manager-rest"
click DiscoveryService "#discovery-service"
click EPFAMAT "#epf-alarm-management-action-trigger"
click EPFAMERH "#epf-alarm-management-event-rule-handler"
click EPFMEH "#epf-alarm-management-mes-event-handler"
click EPFCB "#epf-cdm-builder"
click EPFCH "#epf-cdm-handler"
click K1 "#kafka1"
click K2 "#kafka2"
click K3 "#kafka3"
click MLAgent "#ml-platform-agent"
click MLPlatformTraining "#ml-platform-training"
click Rasa "#rasa"
click RasaActions "#rasa-actions"
click Redis "#redis"
click ReplicateEvents "#replicate-events"
click ReplicateIDs "#replicate-ids"
click ReplicateTableSchemas "#replicate-table-schemas"
click Zookeeper "#zookeeper"

边缘前向代理#

这是您自己的基础架构与外部世界之间的主要连接器,允许您与客户门户进行通信以执行多项操作,其中包括:

  • 下载安装期间环境管理器所需的新组件。
  • 激活许可证。
  • 检索安装日志。

边缘前向代理是负责打开连接并发送连接的组件,它通过与Squid代理共享网络来实现这一点(详细信息请参见Infrastructure Agent,并且只能通过它从您的基础架构与客户门户进行通信,反之亦然。

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.

Table: Docker的边缘前向代理相关文件夹

Traefik#

管理路由,包括端口分配和重定向。它还平衡和转发代理和外部世界之间的网络流量,并处理证书验证以确保安全连接。更多信息,请参阅https://doc.traefik.io/traefik/ ⧉.

与同时存在于代理和MES堆栈中的边缘前向代理不同,Traefik实例保持独立并与代理中的Squid实例直接通信,Traefik实例也同时存在于代理和MES堆栈中,但具有不同的操作模式。此Traefik实例负责向任何外部请求指示,以便将它们重定向到MES堆栈内正在到达的正确URL路径。

MES堆栈中的每个Traefik实例都可以被视为位于infrastructure agent中的父实例的子实例,从父实例接收指令,并将这些指令输出到运行它们的客户环境。

例如:

  • http://<domain_one>/api -MES堆栈内的Traefik实例将此请求发送到MES堆栈内处理/路径的“domain_one”的容器,在本例中为“UI”。
  • http://<domain_one>/api - MES堆栈内的Traefik实例将此请求发送到MES堆栈内处理“api”路径的“domain_ one”的容器,在本例中,该路径为“host”。
  • http://<domain_two>/help - MES堆栈内的Traefik实例将此请求发送到MES堆栈内处理“help”路径的“domain_two”的容器,在本例中,该路径是文档门户。
graph LR
subgraph 代理
    Traefik[Traefik]
end
subgraph mes_实例_2
    Traefik3[Traefik]
    ui3["UI"]
    api3["Host"]
    help3["文档门户"]
end
subgraph mes_实例_1
    Traefik2[Traefik]
    ui2["UI"]
    api2["Host"]
    help2["文档门户"]
end
Traefik --->|https://mes_instance_one.domain.local/|Traefik2
Traefik --->|https://mes_instance_one.domain.local/api|Traefik2
Traefik --->|https://mes_instance_two.domain.local/help|Traefik3
Traefik2 -.->|/|ui2
Traefik2 -.->|/api|api2
Traefik3 -.->|/help|help3

classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
classDef mermaid_state color:#000, fill:#d7e4bd, stroke:#000, stroke-width:1px, font-size:100%, font-weight:300;
class Traefik,Traefik2,Traefik3 mermaid_entity
class api2,api3,help2,help3,ui2,ui3 mermaid_businessdata

Info

这些规则以及地址映射到哪些内部容器的配置在Traefik配置文件中定义,可以通过Portainer或其他管理工具进行访问。

Traefik转发身份验证#

通过凯睿德制造安全门户提供身份验证支持,相当于在传统安装中安装和运行的IIS模块。Traefik收到的每个请求都会转移到’Traefik Forward Auth‘,以确定该请求是否具有有效的身份验证。

容器卷中的相关文件夹#

路径 描述
/opt/app/ 应用程序主目录.

Table: 用于Docker的Traefik Forward Auth相关文件夹

环境管理器#

环境管理器作为整个MES堆栈的监管者,并作为所有其他容器依赖的主要信息点进行协调。它执行类似于传统环境的实际安装应用程序的操作,并添加了功能,其中每次启动堆栈时,所有容器都有相同的入口点(一小段可执行代码),用于查询环境管理器的容器,以查看系统是否已安装和运行,以及是否需要为任何特定容器安装所需自定义包。当环境管理器响应来自所有其他容器的查询以指示系统已安装时,其他容器可以安全运行。

sequenceDiagram
    MES堆栈中的容器->>环境管理器: MES是否已安装?
    activate 环境管理器
    环境管理器-->>MES堆栈中的容器: 还没有,正在检查
    环境管理器-->>MES堆栈中的容器: 是的,你可以安全运行
    deactivate 环境管理器
    activate MES堆栈中的容器
    MES堆栈中的容器->>+环境管理器: 有什么我应该知道的自定义组件吗?
    deactivate MES堆栈中的容器
    环境管理器-->>MES堆栈中的容器: 是的,在这儿
    activate 环境管理器
    MES堆栈中的容器->>环境管理器: 好的,在运行主应用程序之前安装
    deactivate 环境管理器

定制包通常存储在由环境管理器绑定的其中一个卷中,并且可以通过它进行访问。

容器卷中的相关文件夹#

路径 描述
/opt/app/ 应用程序主目录.
/opt/packages/ 自定义包位置.
/opt/backups/ 干净安装前的数据库备份位置.
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹

Table: Docker的环境管理器相关文件夹

安全门户#

作为身份管理系统的多租户应用程序。有关更多信息,请参阅安全门户网站.

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹。

Table: Docker的凯睿德制造MES安全门户相关文件夹

MES主机#

操作凯睿德制造MES服务和管理核心的一组服务,为外部访问公开公共API。

容器卷中的相关文件夹#

路径 描述
/opt/app/ 应用程序主目录.(包括主机配置文件和自定义库)。
/opt/document/ 文件存储位置。
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹。

Table: Docker的凯睿德制造MES主机相关文件夹

MES GUI#

Web服务器用作凯睿德制造MES的主要视觉入口点。

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹。

Table: Docker的凯睿德制造MES GUI相关文件夹

MES 文档#

凯睿德制造MES的全套文档,包括本页。

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹。

Table: Docker的凯睿德制造MES文档相关文件夹

MES 消息总线#

一种高性能的发布和订阅消息总线。更多信息,请参阅消息总线.

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.
/var/log/cmf/ 日志记录位置,与多个容器共享,其中每个容器都有自己的单独文件夹。

Table: Docker的凯睿德制造MES消息总线相关文件夹

Grafana#

Grafana是一个可视化框架,允许您通过小部件和仪表板查询、可视化凯睿德制造MES的指标。

容器卷中的相关文件夹#

路径 描述
/var/lib/grafana/ Grafana主机的共享目录。.

Table: Docker的Grafana相关文件夹

SQL服务器#

此容器可通过DevOps中心选择性安装,其中包含一个SQL Server实例,该实例只能与联机数据库一起使用。它不包括:

  • Reports
  • ODS数据库
  • DWH数据库
  • Analysis Services

Info

这个容器是唯一一个可以配置为对外开放端口的容器。此端口用于通过SQL Server Management Studio访问数据库,SQLServer Management Studio可以通过以下名称访问服务器: 主机_实例名,[端口].

Warning

请注意,机器名和端口之间的字符分隔符是逗号(,),而不是传统的冒号(:)。B

容器卷中的相关文件夹#

路径 描述
/app/ 应用程序主目录.
/opt/backups/ 干净安装前的数据库备份位置(与环境管理器共享)
/var/opt/mssql/data/ MSSQL数据文件

Table: Docker的边缘前向代理相关文件夹