(RabbitMQ) 오류: ‘rabbit@xxxx’ 노드에서 작업을 수행할 수 없습니다. 아래의 진단 정보 및 제안 사항을 참조하십시오. / rabbitMQ 노드에 대해 / Erlang 쿠키

오류: ‘rabbit@xxxx’ 노드에서 작업을 수행할 수 없습니다.
아래의 진단 정보 및 제안 사항을 참조하십시오.

Error: unable to perform an operation on node 'rabbitmqcli-13048-rabbit@xxxxxxx@localhost'. Please see diagnostics information and suggestions below.

Most common reasons for this are:

 * Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
 * CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
 * Target node is not running

In addition to the diagnostics info below:

 * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
 * Consult server logs on node rabbitmqcli-13048-rabbit@xxxxxxxxx@localhost
 * If target node is configured to use long node names, don't forget to use --longnames with CLI tools

DIAGNOSTICS
===========

attempted to contact: ('rabbitmqcli-13048-rabbit@xxxxxxxx@localhost')

rabbitmqcli-13048-rabbit@xxxxxxxx@localhost:
  * unable to connect to epmd (port 4369) on xxxxxxxxx@localhost: nxdomain (non-existing domain)


Current node details:
 * node name: 'rabbitmqcli-9940-rabbit@xxxxxxxxx'
 * effective user's home directory: C:\Users\Judy
 * Erlang cookie hash: 각자 해시값

이 오류는 RabbitMQ 노드가 작업을 수행하지 못할 때 발생합니다. 이 메시지는 일반적으로 노드 이름이 올바르지 않거나 Erlang 환경이 올바르게 설정되지 않은 경우에 발생합니다. 해결책은 다음과 같습니다.

  • RabbitMQ 노드 이름이 올바른지 확인해야 합니다. rabbitmqctl 명령을 사용하여 노드 이름을 확인할 수 있습니다.

RabbitMQ 노드 이름은 기본적으로 ‘rabbit@(호스트 이름)’ 형식으로 자동 설정됩니다.
노드 이름을 명시적으로 지정하지 않으면 ‘rabbit@(hostname)’ 형식의 기본값으로 설정됩니다. 이 경우 호스트명에 식별자를 붙이지 않고 ‘rabbit@(호스트명)’ 형태의 노드명으로 설정한다.

  • Erlang 환경이 올바르게 설치되었는지 확인합니다. RabbitMQ는 Erlang VM 위에서 실행되므로 시스템에 Erlang VM이 설치되어 있어야 합니다.
  • RabbitMQ 구성 파일을 다시 확인하십시오. 구성 파일의 오류로 인해 RabbitMQ가 시작되지 않을 수 있습니다.
  • RabbitMQ 포트 방화벽이 차단되어 있는지 확인하십시오.
  • 서버 구성 파일에 Erlang 쿠키가 설정되어 있는지 확인하십시오.

erlang.cookie 파일에는 RabbitMQ 서버와 클라이언트 간의 인증에 사용되는 쿠키 값이 포함되어 있습니다. 두 쿠키 값이 일치하지 않으면 클라이언트에서 서버로의 연결이 실패합니다. 쿠키 값은 무작위로 생성된 문자열로, 길이가 32바이트인 무작위 이진 값입니다.

쿠키는 일반적으로 노드가 처음 시작될 때 무작위로 생성되며 이후에는 변경되지 않습니다. 즉, 노드를 다시 시작하면 동일한 쿠키 값이 생성됩니다. 단, 노드가 여러 개인 경우 각 노드가 공유할 수 있도록 동일한 Erlang 쿠키 값을 사용해야 합니다. 따라서 새로운 노드를 추가하거나 새로운 클러스터를 생성할 때 새로운 쿠키를 생성하여 모든 노드에 배포해야 합니다.

Erlang 쿠키를 경험해보는 것은 좋은 시도였지만, Erlang과 rabbitMq의 버전이 일치하지 않아 발생하는 문제는 두 버전을 모두 재설치하여 해결되었습니다. 스프링부트로 개발하다 보니 버전관리를 소홀히 해서 삽질하느라 꽤 시간을 보냈습니다.

스프링으로 개발할 때는 버전 관리에 민감하게 반응했다.