第 5 章 创建路由器网络
要创建 AMQ 互联路由器网络,您可以在 互联
自定义资源中定义部署,然后应用它。AMQ Interconnect Operator 通过调度必要的 Pod 并创建任何所需资源来创建部署。
本节中的步骤演示以下路由器网络拓扑:
- interior router mesh
- 带有边缘路由器的路由器网格以实现可扩展性
- 连接两个 OpenShift 集群的集群路由器网络
先决条件
- AMQ Interconnect Operator 已安装在 OpenShift Container Platform 项目中。
5.1. 创建内路由器部署
相互间的路由器建立相互连接,并自动计算网络中的最低成本路径。
流程
此流程创建三个路由器的内路由器网络。路由器在网格拓扑中相互自动连接,它们的连接可以通过 mutual SSL/TLS 身份验证进行保护。
创建描述 interior 路由器部署的
Interconnect
自定义资源 YAML 文件。router-mesh.yaml
文件示例apiVersion: interconnectedcloud.github.io/v1alpha1 kind: Interconnect metadata: name: router-mesh spec: deploymentPlan: role: interior 1 size: 3 2 placement: Any 3
- 1
- 部署中路由器的操作模式。Operator 将在网格拓扑中自动连接间路由器。
- 2
- 要创建的路由器数量。
- 3
- 每个路由器在单独的 Pod 中运行。放置(Placement)定义了 Operator 应该调度并放置 Pod 的位置。您可以选择以下放置选项:
任意
- Pod 可以在 OpenShift Container Platform 集群的任何节点上运行。
每
-
Operator 将路由器 Pod 放置到集群中的每个节点上。如果选择这个选项,则不需要
Size
属性,路由器数量与集群中的节点数量对应。 反关联性
-
Operator 确保多个路由器 Pod 不在集群的同一节点上运行。如果大小超过集群中的节点数量,则无法调度的额外 Pod 将保持
Pending
状态。
创建 YAML 文件中描述的路由器部署。
$ oc apply -f router-mesh.yaml
Operator 在网格拓扑中创建部署交集,该路由器使用默认的地址语义。它还会创建一个服务,在其中可访问该路由器,以及您可以访问 Web 控制台的路由。
验证路由器网格是否已创建且 Pod 是否正在运行。
每个路由器在单独的 Pod 中运行。它们使用 Operator 创建的 Service 会自动连接。
$ oc get pods NAME READY STATUS RESTARTS AGE interconnect-operator-587f94784b-4bzdx 1/1 Running 0 52m router-mesh-6b48f89bd-588r5 1/1 Running 0 40m router-mesh-6b48f89bd-bdjc4 1/1 Running 0 40m router-mesh-6b48f89bd-h6d5r 1/1 Running 0 40m
检查路由器部署。
$ oc get interconnect/router-mesh -o yaml apiVersion: interconnectedcloud.github.io/v1alpha1 kind: Interconnect ... spec: addresses: 1 - distribution: closest prefix: closest - distribution: multicast prefix: multicast - distribution: closest prefix: unicast - distribution: closest prefix: exclusive - distribution: multicast prefix: broadcast deploymentPlan: 2 livenessPort: 8888 placement: Any resources: {} role: interior size: 3 edgeListeners: 3 - port: 45672 interRouterListeners: 4 - authenticatePeer: true expose: true port: 55671 saslMechanisms: EXTERNAL sslProfile: inter-router listeners: 5 - port: 5672 - authenticatePeer: true expose: true http: true port: 8080 - port: 5671 sslProfile: default sslProfiles: 6 - credentials: router-mesh-default-tls name: default - caCert: router-mesh-inter-router-tls credentials: router-mesh-inter-router-tls mutualAuth: true name: inter-router users: router-mesh-users 7
- 1
- 默认地址配置。发送到与这些前缀不匹配的地址的所有消息都会在 均衡的 任意广播模式中分发。
- 2
- 部署了三个间路由器的路由器网格。
- 3
- 每个相互路由器侦听端口
45672
,以获取来自边缘路由器的连接。 - 4
- 在端口
55671
中,相互路由器互相连接。这些路由器连接通过 SSL/TLS mutual 验证进行保护。inter-router
SSL Profile 包含 Operator 生成的证书详情。 - 5
- 每个 interior 路由器侦听来自以下端口的外部客户端的连接:
-
5672
- 从消息传递应用程序取消安全连接。 -
5671
- 从消息传递应用程序的安全连接。 -
8080
- AMQ Interconnect Web 控制台访问。应用默认用户名/密码安全性。
-
- 6
- 使用 Red Hat Integration - AMQ Certificate Manager Operator,Red Hat Integration - AMQ Interconnect Operator 会自动创建两个 SSL 配置集:
-
inter-router
- Operator 通过创建证书颁发机构(CA)并为每个间路由器生成 CA 签名的证书,从而保护路由器的 inter-router 网络与 mutual TLS 身份验证的安全。 -
Default
- Operator 为消息应用程序创建 TLS 证书,以连接到端口5671
上的 interior 路由器。
-
- 7
- AMQ Interconnect web 控制台使用用户名/密码身份验证进行保护。Operator 会自动生成凭证并将其存储在
router-mesh-users
Secret 中。