当前位置: 首页 > 知识库问答 >
问题:

开放班次路线AMQP通过

东云
2023-03-14

我想创建一个到RabbitMQ的Openshift路径。

据我了解https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html,“TLS with SNI”支持应该能够检查SNI标头,然后将流量路由到适当的服务。

不幸的是,我在边缘终止和重新加密终止方面都遇到了问题。在这两种情况下,HAProxy似乎都会检查流量并抛出错误,因为内容不是HTTP。

使用使用 AMQP Java 库的简单 Java 应用程序,我可以看到以量:

javax.net.ssl|DEBUG|01|main|2021-02-26 13:35:47.001 CET|SSLSocketOutputRecord.java:331|WRITE: TLS12 application_data, length = 8
javax.net.ssl|DEBUG|01|main|2021-02-26 13:35:47.001 CET|SSLCipher.java:1770|Plaintext before ENCRYPTION (
  0000: 41 4D 51 50 00 00 09 01                            AMQP....
)

javax.net.ssl|DEBUG|0D|AMQP Connection 192.168.0.1:443|2021-02-26 13:35:47.044 CET|SSLSocketInputRecord.java:249|READ: TLSv1.2 application_data, length = 211
javax.net.ssl|DEBUG|0D|AMQP Connection 192.168.0.1:443|2021-02-26 13:35:47.045 CET|SSLCipher.java:1672|Plaintext after DECRYPTION (
  0000: 48 54 54 50 2F 31 2E 30   20 34 30 30 20 42 61 64  HTTP/1.0 400 Bad
  0010: 20 72 65 71 75 65 73 74   0D 0A 43 61 63 68 65 2D   request..Cache-
  0020: 43 6F 6E 74 72 6F 6C 3A   20 6E 6F 2D 63 61 63 68  Control: no-cach
  0030: 65 0D 0A 43 6F 6E 6E 65   63 74 69 6F 6E 3A 20 63  e..Connection: c
  0040: 6C 6F 73 65 0D 0A 43 6F   6E 74 65 6E 74 2D 54 79  lose..Content-Ty
  0050: 70 65 3A 20 74 65 78 74   2F 68 74 6D 6C 0D 0A 0D  pe: text/html...
  0060: 0A 3C 68 74 6D 6C 3E 3C   62 6F 64 79 3E 3C 68 31  .<html><body><h1
  0070: 3E 34 30 30 20 42 61 64   20 72 65 71 75 65 73 74  >400 Bad request
  0080: 3C 2F 68 31 3E 0A 59 6F   75 72 20 62 72 6F 77 73  </h1>.Your brows
  0090: 65 72 20 73 65 6E 74 20   61 6E 20 69 6E 76 61 6C  er sent an inval
  00A0: 69 64 20 72 65 71 75 65   73 74 2E 0A 3C 2F 62 6F  id request..</bo
  00B0: 64 79 3E 3C 2F 68 74 6D   6C 3E 0A                 dy></html>.
)

(输出是用java-Djavax.net.debug=all-jarrabbitmqtest-1.0-SNAPSHOT-all.jar生成的amqps://myroute:4432.

流量不会被路由到RabbitMQ。如果我在web浏览器中打开路由器,RabbitMQ会收到一个连接请求(但当然无法理解,因为这是HTTP流量)。

Helm路线模板为:

{{- if .Values.route.enabled }}
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: rabbitmq
spec:
  host: rabbitmq-{{ .Values.route.identifier}}.{{ .Values.route.host }}
  port:
    targetPort: amqp-ssl
  tls:
    termination: reencrypt
    destinationCACertificate: {{ .Values.tls.ca_crt | quote }}
  to:
    kind: Service
    weight: 100
    name: rabbitmq
status:
  ingress: []
{{- end }}

有没有办法将路由器用作原始TCP代理?我宁愿不使用节点端口,因为我必须在RabbitMQ上管理SSL证书(目前我已经安装了一个长期的自签名证书)。


共有1个答案

莫兴言
2023-03-14

理论上,在这种情况下,使用入口控制器应该是可行的,因为您正在使用TLS和SNI。然而,它可能需要在基础设施方面进行额外的工作(向负载平衡器添加额外的端口、防火墙)。使用“标准”端口443将无法工作(正如您所指出的),因为路由器希望该端口上有HTTP流量。

替代方案是使用外部IP(非云环境)或使用负载均衡器(云环境)公开服务。

 类似资料:
  • 当我们在开班时部署点火集群时,我们发现了以下问题 我们已经创建了各自的PV和PVC YAML文件。 更重要的一点是,无论Mount Path如何,它始终指向/点燃/工作。 POD 中的错误详细信息:SLF4J:无法加载类“组织.slf4j.impl.StaticLogger”。SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关更多详细信息,请参阅 http://www.slf4j.

  • 我使用的是spring boot 1.3.1和spring cloudl Brixtom.m4,而使用springboot 1.3.1时,我发现Turbane-AMQP项目不再可用,取而代之的是spring Turbany Stream项目。我用rabbitmq或kafka来使用SpringTurbin,想要监视所有在Zuul注册的路线的hystrix流,我可以看到Zuul的hystrix.str

  • null 对我来说,这听起来基本上是一样的。如果有人能用简单的术语解释cannels、sessions和links是如何联系在一起的,我会非常高兴。

  • 帮助第三方 ISV 创造了大量优质的无线应用。淘宝无线开放平台作为大淘宝电子商务基础服务的 服务窗口,我们的使命是推动无线电子商务生态圈内各参与者不断创新发展。

  • 我正在开发一个客户端,它可以从Windows服务总线读取消息,该消息是使用发送的。净额。客户端是使用Java开发的,据我所知,它创建会话,但当它创建会话时,使用者抛出一个JMSException,它只告诉我以下消息:amqp:不允许 有线索吗? 顺致敬意,