k8s 安装的rabbitmq用springboot连接其域名不成功,如何解决

k8s安装完rabbitmq成功,并且RabbitMQ Management interface能够通过域名访问,但是使用springboot连接时就报错,感觉跟k8s ingress没有暴露5672端口有关,如何解决?

spring:
  rabbitmq:
    host: rabbitmq.demo.com
    port: 5672
    username: 
    password: 
阅读 1.3k
1 个回答

已解决,如下所示:

1、我使用的是helm安装,所以设置values.yaml文件中service.typeNodePort,如下所示:

service:
  type: NodePort

2、使用安装之后的请求地址和端口
从输出的内容我们发现:

NODE_IP
命令:kubectl get nodes --namespace rabbit -o jsonpath="{.items[0].status.addresses[0].address}"
NODE_PORT_AMQP
命令:kubectl get --namespace rabbit -o jsonpath="{.spec.ports[1].nodePort}" services test-rabbitmq
NODE_PORT_STATS
命令:kubectl get --namespace rabbit -o jsonpath="{.spec.ports[1].nodePort}" services test-rabbitmq

上面的Node_ip其实就是k8s结点的真实ip(看看是否是公网可访问的,如果不是可申请阿里云EIP绑定成公网可访问即可),如:192.168.0.1,而NODE_PORT_AMQP是集群5672对应的NodePort端口,如31020,NODE_PORT_STATS是15672对应的NodePort端口,如31010
这样,我们访问Rabbitmq管理界面在浏览器中输入:http://192.168.0.1:31010即可访问.

下面是我的springboot配置代码,大家可以参考一下:

  rabbitmq:
    # 注意:helm安装的mq如果使用ingress是不能暴露amqp协议的5672端口,因为ingress只支持http(s)协议
    host: xxx.xxx.xxx.xxx
    port: xxxx
    username: xxxx
    password: xxxxxxxx
    virtual-host: dev
    #开启重试机制
    listener:
      direct:
        retry:
          enabled: true
          max-attempts: 3
    ssl:
      enabled: true
    ssl:
      verify-hostname: false
    virtual-host: /
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进