Warm tip: This article is reproduced from stackoverflow.com, please click
akka kubernetes prisma rabbitmq scala

Prisma rabbitmq deployment on kubernetes not working

发布于 2020-05-08 16:30:27

I am trying to install prisma rabbitmq on a kubernetes cluster but I am getting this error which says "Unable to declare rabbit exchange".

This is the connection string that I use for rabbitmq

amqp://user:ypvibil8QM@rabbitmq.default.svc.cluster.local:5672

Please note: rabbitmq is installed as a helm chart. I have also provided my prisma deployment kubernetes file.

Caused by: java.lang.Exception: Unable to declare rabbit exchange: java.net.SocketTimeoutException
        at com.prisma.messagebus.utils.RabbitUtils$.declareExchange(RabbitUtils.scala:18)
        at com.prisma.messagebus.pubsub.rabbit.RabbitAkkaPubSub.<init>(RabbitAkkaPubSub.scala:36)
        at com.prisma.prod.PrismaProdDependencies.invalidationPubSub$lzycompute(PrismaProdDependencies.scala:78)
        at com.prisma.prod.PrismaProdDependencies.invalidationPubSub(PrismaProdDependencies.scala:75)
        at com.prisma.prod.PrismaProdDependencies.invalidationSubscriber$lzycompute(PrismaProdDependencies.scala:81)
        at com.prisma.prod.PrismaProdDependencies.invalidationSubscriber(PrismaProdDependencies.scala:81)
        at com.prisma.subscriptions.resolving.SubscriptionsManager.<init>(SubscriptionsManager.scala:58)
        at com.prisma.websocket.WebSocketHandler.$anonfun$subscriptionsManager$1(WebSocketHandler.scala:24)
        at akka.actor.TypedCreatorFunctionConsumer.produce(IndirectActorProducer.scala:87)
        at akka.actor.Props.newActor(Props.scala:212)
        at akka.actor.ActorCell.newActor(ActorCell.scala:624)
        at akka.actor.ActorCell.create(ActorCell.scala:650)
        ... 9 more
Caused by: java.net.SocketTimeoutException
        at java.net.SocksSocketImpl.remainingMillis(SocksSocketImpl.java:111)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:50)
        at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:60)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:911)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:870)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:828)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:996)
        at com.prisma.rabbit.PlainRabbit$.$anonfun$connect$1(PlainRabbit.scala:25)
        at scala.util.Try$.apply(Try.scala:209)
        at com.prisma.rabbit.PlainRabbit$.connect(PlainRabbit.scala:11)
        at com.prisma.rabbit.Rabbit$.channel(Queue.scala:21)
        at com.prisma.rabbit.Rabbit$.channel(Queue.scala:13)
        at com.prisma.messagebus.utils.RabbitUtils$.declareExchange(RabbitUtils.scala:11)
        ... 20 more

[Telemetry] Warning: Telemetry call failed with akka.stream.StreamTcpException: Connection failed.
[INFO] [02/24/2020 04:48:18.670] [single-server-akka.actor.default-dispatcher-9] [akka://single-server/system/IO-TCP/selectors/$a/1] Message [akka.io.Dns$Resolved] from Actor[akka://single-serve
r/system/IO-DNS/inet-address/$d#-1722408340] to Actor[akka://single-server/system/IO-TCP/selectors/$a/1#-615185858] was not delivered. [1] dead letters encountered. This logging can be turned of
f or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [02/24/2020 04:48:21.970] [single-server-akka.actor.default-dispatcher-4] [akka://single-server/system/IO-TCP/selectors/$a/0] Message [akka.io.Dns$Resolved] from Actor[akka://single-serve
r/system/IO-DNS/inet-address/$d#-1722408340] to Actor[akka://single-server/system/IO-TCP/selectors/$a/0#-2083961340] was not delivered. [2] dead letters encountered. This logging can be turned o
ff or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[Telemetry] Warning: Telemetry call failed with javax.net.ssl.SSLException: Received close_notify during handshake

This is my kubernetes deployment file for prisma

apiVersion: apps/v1
kind: Deployment
metadata:
  name: primary-deployment
  #namespace: prisma
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prisma-primary
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: prisma-primary
    spec:
      containers:
        - name: prisma-primary
          image: prismagraphql/prisma-prod:1.34
          imagePullPolicy: Always
          resources: # CHANGE THIS AS NEEDED
            requests:
              memory: "1Gi"
              cpu: "10m"
            limits:
              memory: "1Gi"
              cpu: "10m"
          env:
            - name: SLOW_QUERIES_LOGGING
              value: "true"
            - name: JAVA_OPTS
              value: "-Xmx800m" # CHANGE THIS AS NEEDED
              - name: ENV
              value: "prod"
            - name: PRISMA_CONFIG
              value: | # CHANGE THIS AS NEEDED
                port: 4466
                managementApiSecret: "MuchSecret"
                enableManagementApi: "true"
                server2serverSecret: "SuperSecretWow"
                rabbitUri: "amqp://user:ypvibil8QM@rabbitmq.default.svc.cluster.local:5672"
                databases:
                  default:
                    connector: mongo
                    uri: mongodb://mongodb-mongodb-replicaset.default.svc.cluster.local:5672
                    active: "true"
                    connectionLimit: 20
                    database: "prisma"
                    managementSchema: "prisma"
                    ssl: false
          ports:
            - containerPort: 4466
---
apiVersion: v1
kind: Service
metadata:
  name: prisma-primary-service
  #namespace: prisma
spec:
  selector:
    app: prisma-primary
  type: ClusterIP
Questioner
jeril
Viewed
8
jeril 2020-02-24 14:50

For someone facing the same issue .... I disabled this plugin in rabbitmq helm chart in values.yaml and it started working properly

 ## Extra plugins to enable
  ## Use this instead of `plugins` to add new plugins
  # extraPlugins: "rabbitmq_auth_backend_ldap"