管理防火墙的需求不仅限于虚拟主机;虚拟机和物理主机防火墙都必须允许组件之间进行通信所需的端口的流量。
端口图
以下图片显示了单个数据中心和多个数据中心配置的端口要求:
单个数据中心
下图显示了单个数据中心配置中每个 Edge 组件的端口要求:
此图上的注意事项:
- 以“M”为前缀的端口是用于管理组件的端口,必须在组件上开放,以便管理服务器访问。
- 边缘界面需要访问由 API 代理公开的端口上的路由器,以支持跟踪工具中的发送按钮。
- 对 JMX 端口的访问可以配置为需要用户名/密码。如需了解详情,请参阅如何进行监控。
- 您可以选择为某些连接(可以使用不同的端口)配置 TLS/SSL 访问。如需了解详情,请参阅 TLS/SSL。
- 您可以将管理服务器和边缘界面配置为通过外部 SMTP 服务器发送电子邮件。如果要这样做,您必须确保管理服务器和界面可以访问 SMTP 服务器上的必要端口(未显示)。对于未使用 TLS 的 SMTP,端口号通常为 25。对于启用了 TLS 的 SMTP,它通常为 465,但请与您的 SMTP 提供商联系。
多个数据中心
如果您安装具有两个数据中心的 12 节点集群配置,请确保两个数据中心中的节点可以通过如下所示的端口进行通信:
请注意:
- 所有管理服务器都必须能够访问所有其他数据中心中的所有 Cassandra 节点。
- 所有数据中心中的所有消息处理器都必须能够通过端口 4528 相互访问。
- 管理服务器必须能够通过端口 8082 访问所有的消息处理器。
- 所有管理服务器和所有 Qpid 节点都必须能够访问所有其他数据中心中的 Postgres。
- 出于安全原因,除了上面显示的端口和您自己的网络要求所需的任何其他端口之外,数据中心之间不应开放任何其他端口。
默认情况下,组件之间的通信不加密。您可以通过安装 Apigee mTLS 添加加密。如需了解详情,请参阅 Apigee mTLS 简介。
充电桩详情
下表介绍了需要按 Edge 组件在防火墙中打开的端口:
组件 | 端口 | 说明 |
---|---|---|
标准 HTTP 端口 | 80、443 | HTTP 以及用于虚拟主机的任何其他端口 |
Apigee 单点登录 | 9099 | 来自外部 IdP、管理服务器和浏览器以进行身份验证的连接。 |
Cassandra | 7000、9042、9160 | Apache Cassandra 端口,用于 Cassandra 节点之间的通信以及由其他 Edge 组件访问。 |
7199 | JMX 端口。必须处于开放状态,以供管理服务器访问。 | |
LDAP | 10389 | OpenLDAP |
管理服务器 | 1099 | JMX 端口 |
4526 | 用于分布式缓存和管理调用的端口。此端口可配置。 | |
5636 | 用于接收创收承诺通知的端口。 | |
8080 | 用于 Edge Management API 调用的端口。这些组件需要访问管理服务器上的端口 8080:路由器、消息处理器、界面、Postgres、Apigee SSO(如果已启用)和 Qpid。 | |
管理界面 | 9,000 | 供浏览器访问管理界面的端口 |
消息处理器 | 1101 | JMX 端口 |
4528 | 适用于消息处理器之间的分布式缓存和管理调用,以及来自路由器和管理服务器的通信。
消息处理器必须开放端口 4528 作为其管理端口。如果您有多个消息处理器,它们必须都能通过端口 4528(在上图中针对消息处理器上的端口 4528 的环形箭头指示)相互访问。如果您有多个数据中心,则必须可从所有数据中心内的所有消息处理器访问该端口。 |
|
8082 |
消息处理器的默认管理端口,必须在组件上打开,以便管理服务器访问。 如果您在路由器和消息处理器之间配置了 TLS/SSL,则路由器会使用它对消息处理器进行健康检查。 当您在路由器和消息处理器之间配置 TLS/SSL 时,消息处理器上的端口 8082 只需开放给路由器访问。如果您未在路由器和消息处理器(即默认配置)之间配置 TLS/SSL,消息处理器上的端口 8082 仍必须处于打开状态才能管理组件,但路由器不需要访问该组件。 |
|
8443 | 在路由器和消息处理器之间启用 TLS 后,您必须在消息处理器上打开端口 8443 以供路由器访问。 | |
8998 | 来自路由器的通信的消息处理器端口 | |
Postgres | 22 | 如果将两个 Postgres 节点配置为使用主备用复制,则必须在每个节点上打开端口 22 以进行 SSH 访问。 |
1103 | JMX 端口 | |
4530 | 分布式缓存和管理调用 | |
5432 | 用于从 Qpid/Management 服务器到 Postgres 的通信 | |
8084 | Postgres 服务器上的默认管理端口;必须在组件上打开,以供管理服务器访问。 | |
Qpid | 1102 | JMX 端口 |
4529 | 分布式缓存和管理调用 | |
5672 |
也用于同一节点上的 Qpid 服务器和代理组件之间的通信。在具有多个 Qpid 节点的拓扑中,服务器必须能够连接到端口 5672 上的所有代理。 |
|
8083 | Qpid 服务器上的默认管理端口,必须在组件上打开,以供管理服务器访问。 | |
8090 | Qpid 代理的默认端口;必须开放以访问代理的管理控制台或管理 API 以进行监控。 | |
路由器 | 4527 | 适用于分布式缓存和管理调用。
路由器必须开放端口 4527 作为其管理端口。如果您有多个路由器,那么它们必须全部能够通过端口 4527(在上图中以环形箭头表示,针对路由器上的端口 4527)进行访问。 您可以在路由器上打开端口 4527,以供任何消息处理器访问,但这并非必需操作。否则,您可能会在消息处理器日志文件中看到错误消息。 |
8081 | 路由器的默认管理端口,必须在组件上开放,以便管理服务器访问。 | |
15999 |
健康检查端口。负载平衡器使用此端口来确定路由器是否可用。 如需获取路由器的状态,负载平衡器会向路由器上的端口 15999 发出请求: curl -v http://routerIP:15999/v1/servers/self/reachable 如果路由器可到达,则请求返回 HTTP 200。 |
|
59001 | 用于测试 apigee-validate 实用程序的 Edge 安装的端口。此实用程序需要访问路由器上的端口 59001。如需详细了解端口 59001,请参阅测试安装。 |
|
SmartDocs | 59002 | Edge 路由器上的端口,用于发送 SmartDocs 页面请求。 |
ZooKeeper | 2181 | 由管理服务器、路由器、消息处理器等其他组件使用 |
2888、3888 | 供 ZooKeeper 在内部用于 ZooKeeper 集群(称为 ZooKeeper 集成学习)通信 |
下表显示了相同的端口(按数字列出)以及来源和目标组成部分:
端口号 | 目的 | 来源组件 | 目标组件 |
---|---|---|---|
virtual_host_port | HTTP 以及用于虚拟主机 API 调用流量的任何其他端口。最常用的端口是 80 和 443;消息路由器可以终止 TLS/SSL 连接。 | 外部客户端(或负载平衡器) | Message Router 上的监听器 |
1099 至 1103 | JMX 管理 | JMX 客户端 | 管理服务器 (1099) 消息处理器 (1101) Qpid 服务器 (1102) Postgres 服务器 (1103) |
2181 | Zookeeper 客户端通信 | 管理服务器 路由器 消息处理器 Qpid 服务器 Postgres 服务器 |
ZooKeeper |
2888 和 3888 | Zookeeper 节点间管理 | ZooKeeper | ZooKeeper |
4526 | RPC 管理端口 | 管理服务器 | 管理服务器 |
4527 | 用于分布式缓存和管理调用以及路由器之间通信的 RPC 管理端口 | 管理服务器 路由器 |
路由器 |
4528 | 用于消息处理器之间的分布式缓存调用,以及来自路由器的通信 | 管理服务器 路由器 消息处理器 |
消息处理器 |
4529 | 用于分布式缓存和管理调用的 RPC 管理端口 | 管理服务器 | Qpid 服务器 |
4530 | 用于分布式缓存和管理调用的 RPC 管理端口 | 管理服务器 | Postgres 服务器 |
5432 | Postgres 客户端 | Qpid 服务器 | Postgres |
5636 | 创收 | 外部 JMS 组件 | 管理服务器 |
5672 |
也用于同一节点上的 Qpid 服务器和代理组件之间的通信。在具有多个 Qpid 节点的拓扑中,服务器必须能够连接到端口 5672 上的所有代理。 |
Qpid 服务器 | Qpid 服务器 |
7000 | Cassandra 节点间通信 | Cassandra | 其他 Cassandra 节点 |
7199 | JMX 管理。必须处于开放状态,才能通过管理服务器访问 Cassandra 节点。 | JMX 客户端 | Cassandra |
8080 | Management API 端口 | Management API 客户端 | 管理服务器 |
8081 至 8084 |
组件 API 端口,用于直接向各个组件发出 API 请求。每个组件会打开不同的端口;使用的确切端口取决于配置,但必须在组件上开放,以便管理服务器访问 |
Management API 客户端 | 路由器 (8081) 消息处理器 (8082) Qpid 服务器 (8083) Postgres 服务器 (8084) |
8090 | Qpid 代理的默认管理端口,用于管理和监控队列。 | 浏览器或 API 客户端 | Qpid 代理 (apigee-qpidd) |
8443 | 启用 TLS 后路由器和消息处理器之间的通信 | 路由器 | 消息处理器 |
8998 | 路由器和消息处理器之间的通信 | 路由器 | 消息处理器 |
9000 | 默认 Edge 管理界面端口 | 浏览器 | 管理界面服务器 |
9042 | CQL 原生传输 | 路由器 消息处理器 管理服务器 |
Cassandra |
9099 | 外部 IDP 身份验证 | IDP、浏览器和管理服务器 | Apigee 单点登录 |
9160 | Cassandra Thrift 客户端 | 路由器 消息处理器 管理服务器 |
Cassandra |
10389 | LDAP 端口 | 管理服务器 | OpenLDAP |
15999 | 健康检查端口。负载平衡器使用此端口来确定路由器是否可用。 | 负载均衡器 | 路由器 |
59001 | apigee-validate 实用程序用于测试 Edge 安装的端口 |
apigee-validate | 路由器 |
59002 | 发送到 SmartDocs 页面请求的路由器端口 | SmartDocs | 路由器 |
消息处理器会让 Cassandra 保持开放的专用连接池,该池配置为永不超时。当消息处理器和 Cassandra 服务器之间存在防火墙时,防火墙可能会使连接超时。不过,消息处理器并非用于重新建立与 Cassandra 的连接。
为避免这种情况,Apigee 建议 Cassandra 服务器、消息处理器和路由器位于同一子网中,以便在这些组件的部署过程中不涉及防火墙。
如果路由器和消息处理器之间有防火墙,并且设置了空闲 TCP 超时,我们建议执行以下操作:
- 在 Linux 操作系统上的 sysctl 设置中设置
net.ipv4.tcp_keepalive_time = 1800
,其中 1800 应低于防火墙空闲 TCP 超时。此设置应使连接保持已建立的状态,以防止防火墙断开连接。 - 在所有消息处理器上,修改
/opt/apigee/customer/application/message-processor.properties
以添加以下属性。如果该文件不存在,请创建一个。conf_system_cassandra.maxconnecttimeinmillis=-1
- 重启消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 在所有路由器上,修改
/opt/apigee/customer/application/router.properties
以添加以下属性。如果该文件不存在,请创建一个。conf_system_cassandra.maxconnecttimeinmillis=-1
- 重启路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart