【問題解決】RabbitMQ啓動出現epmd error for host xx.xx: nxdomain (non-existing domain)

問題描述

【k8s】或【普通容器】或【Linux】部署的RabbitMQ啓動時出現了 epmd error for host xx.xx: nxdomain (non-existing domain) 錯誤,MQ無法啓動成功。

其中 xx.xx 爲無法解析的域名。

RabbitMQ官方還提到報錯 Error during startup: {error,no_epmd_port} 也是同樣的情況。

解決辦法

這裏簡單記錄下解決辦法,分別以 Linux環境、docker容器環境、k8s環境、說明下。

Linux環境

/etc/hosts 文件添加域名解析 xx.xx127.0.0.1,以下示例:

127.0.0.1 mydomain.io

docker容器環境

docker run命令添加 --add-host 參數

--add-host="" : Add a line to /etc/hosts (host:IP)

示例:

docker run -d --add-host="mydomain.io:127.0.0.1" -p 5672:5672 rabbitmq:latest

k8s環境

在 podTemplate的spec下添加 hostname 寫上域名,當rabbitmq訪問該域名時自動映射到POD上。

示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  serviceName: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      hostname: "mydomain.io"
      containers:
        - name: rabbitmq
          image: 'rabbitmq:latest'
          ports:
            - name: tcp-5672
              containerPort: 5672
              protocol: TCP
          env:
            - name: TZ
              value: 'Asia/Shanghai'

k8s官方文檔上還有添加 hostAlias 的辦法,這裏簡單截個圖放一下文檔地址:https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章