【问题标题】:Where should I implement forgot password feature in a microservice app?我应该在微服务应用程序中的哪里实现忘记密码功能?
【发布时间】:2021-06-27 07:43:30
【问题描述】:

我在 kubernetes 集群中有这个 rabbitmq 服务和部署,我在浏览器中测试了它,我可以访问它。

但是我无法使用 node .js 实现与它的连接

我得到的错误是

[auth] OperationalError: connect ECONNREFUSED 127.0.0.1:8080
[auth]     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1137:16) {
[auth]   cause: Error: connect ECONNREFUSED 127.0.0.1:8080
[auth]       at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1137:16) {
[auth]     errno: -111,
[auth]     code: 'ECONNREFUSED',
[auth]     syscall: 'connect',
[auth]     address: '127.0.0.1',
[auth]     port: 8080
[auth]   },
[auth]   isOperational: true,
[auth]   errno: -111,
[auth]   code: 'ECONNREFUSED',
[auth]   syscall: 'connect',
[auth]   address: '127.0.0.1',
[auth]   p

这基本上意味着它拒绝连接。

我已尝试 kubectl port-forward rabbitmq-depl-64f964cbbb-tnwbj 8080:15672 将该 pod 暴露给外界并通过 connect('"amqp://127.0.0.1:8080") 连接到它,但它不起作用

我还尝试在我的 node.js 服务器 yaml 文件中映射该服务,例如

apiVersion: apps/v1
kind: Deployment
metadata:
  name: verification-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: verification
  template:
    metadata:
      labels:
        app: verification
    spec:
      containers:
        - name: verification
          image: sn/verification
          env:
            - name: NATS_CLIENT_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name # pod name as env for clinet id
            - name: NATS_URL
              value: 'http://nats-srv:4222'
            - name: RABITMQ_URL
              value: 'rabbitmq:15672'
            - name: NATS_CLUSTER_ID
              value: snsocial
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: sn-jwt-secret
                  key: JWT_KEY
---
apiVersion: v1
kind: Service
metadata:
  name: verification-srv
spec:
  selector:
    app: verification
  ports:
    - name: verification
      protocol: TCP
      port: 5000
      targetPort: 5000

但没有运气。本地主机在浏览器上运行良好,但在我的服务中不起作用。我试着玩玩 const rbmqConnection = await amqp.connect(amqp://${SERVICE_URL})

但没有运气。 rabbitmq-depl.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq-depl
spec:
  selector:
    matchLabels:
      app: rabbitmq

  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
        - name: rabbitmq
          image: "rabbitmq:3-management"
          ports:
            - containerPort: 15672
            - containerPort: 5672
          env:
            - name: RABBITMQ_ERLANG_COOKIE
              value: "SWQOKODSQALRPCLNMEQG"
            - name: RABBITMQ_DEFAULT_USER
              value: "guest"
            - name: RABBITMQ_DEFAULT_PASS
              value: "guest"
            - name: RABBITMQ_DEFAULT_VHOST
              value: "/"

---

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  type: LoadBalancer
  ports:
    - name: http
      protocol: TCP
      port: 15672
    - name: amqp
      protocol: TCP
      port: 5672
  selector:
    app: rabbitmq

我在这里做错了什么。

您可以看到我的 nats 服务器工作正常,我可以毫无问题地连接到它,但我需要在集群中尝试 rabbitmq,因为它提供的消息存储与 nats 流不同。

谢谢

【问题讨论】:

    标签: kubernetes rabbitmq yaml microservices


    【解决方案1】:

    终于克服了。

    rabbitmq-depl.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rabbitmq-depl
    spec:
      selector:
        matchLabels:
          app: rabbitmq
    
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          containers:
            - name: rabbitmq
              image: "rabbitmq:3-management"
              ports:
                - containerPort: 15672
                - containerPort: 5672
              env:
                - name: RABBITMQ_ERLANG_COOKIE
                  value: "SWQOKODSQALRPCLNMEQG"
                - name: RABBITMQ_DEFAULT_USER
                  value: "guest"
                - name: RABBITMQ_DEFAULT_PASS
                  value: "guest"
                - name: RABBITMQ_DEFAULT_VHOST
                  value: "/"
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq
      labels:
        app: rabbitmq
    spec:
      type: LoadBalancer
      ports:
        - name: http
          protocol: TCP
          port: 15672
        - name: amqp
          protocol: TCP
          port: 5672
      selector:
        app: rabbitm
    

    auth-depl.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: auth-depl
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: auth
      template:
        metadata:
          labels:
            app: auth
        spec:
          containers:
            - name: auth
              image: sn/auth
              env:
                - name: NATS_CLIENT_ID
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name # pod name as env for clinet id
                - name: NATS_URL
                  value: 'http://nats-srv:4222'
                - name: CONNECTION_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name # pod name as env for clinet id
                - name : RABBITMQ_ULR 
                  value : amqp://rabbitmq
    
                - name: NATS_CLUSTER_ID
                  value: snsocial
                - name: JWT_KEY
                  valueFrom:
                    secretKeyRef:
                      name: sn-jwt-secret
                      key: JWT_KEY
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: auth-srv
    spec:
      selector:
        app: auth
      ports:
        - name: auth
          protocol: TCP
          port: 5000
          targetPort: 5000
    

    基本上我几乎一切正常,但在身份验证服务中,我的 env 值错误,连接名称应该是 ampq://(服务名称),然后在 node.js 代码中,我所要做的就是也就是说,process.env.RABBITMQ_URL

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 1970-01-01
      • 2010-11-21
      • 2015-02-03
      • 2011-12-19
      • 2010-10-06
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多