程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Openshift 路由 AMQP 直通大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Openshift 路由 AMQP 直通?

开发过程中遇到Openshift 路由 AMQP 直通的问题如何解决?下面主要结合日常开发的经验,给出你关于Openshift 路由 AMQP 直通的解决方法建议,希望对你解决Openshift 路由 AMQP 直通有所启发或帮助;

我想创建一个到 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 -jar rabbitmqtest-1.0-SNAPSHOT-all.jar amqps://myroute:443 2> output.txt)

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

HelR_253_11845@ 路由模板是:

{{- 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 证书(目前我已经安装了一个长期存在的自签名证书)。

解决方法

理论上,使用 Ingress Controller 应该适用于这种情况,因为您将 TLS 与 SNI 一起使用。然而,它可能需要在基础设施方面进行额外的工作(向负载均衡器添加额外的端口、防火墙)。使用“标准”端口 443 将不起作用(如您所述),因为路由器需要该端口上的 http 流量。

替代方案是使用 externalIP(非云环境)或使用 loadbalancers(云环境)公开服务。

大佬总结

以上是大佬教程为你收集整理的Openshift 路由 AMQP 直通全部内容,希望文章能够帮你解决Openshift 路由 AMQP 直通所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:直通路由