2017-11-17 9 views
1

Windows 7을 실행하는 컴퓨터와 CentOS 6.4를 실행하는 컴퓨터간에 RabbitMQ 클러스터를 구축하려고합니다. Windows 컴퓨터는 Erlang 20.1 및 RabbitMQ 3.6.13을 실행 중이며 Linux는 Erlang 20.0 nad RabbitMQ 3.6.14RabbitMQ 클러스터 구축에 어려움이 있습니다.

처음에는 노드를 다른 노드에 연결할 수 없으므로 계속 Error: unable to connect to nodes ... : nodedown 메시지가 나타납니다.

here 제안 된 모든 시도 후 지금은 윈도우 하나에 리눅스 노드를 연결할 수 있습니다,하지만 난 rabbitmqctl -n [email protected][linux hostname] status을 실행할 때 나는 아직도이 오류가 발생합니다 :

Clustering node '[email protected]' with '[email protected]' 
Error: unable to connect to nodes ['[email protected]']: nodedown 

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

attempted to contact: ['[email protected]'] 

[email protected]: 
    * unable to connect to epmd (port 4369) on cadts-1074: nxdomain (non-existing d 
omain) 


current node details: 
- node name: '[email protected]' 
- home dir: C:\Users\admlocal 
- cookie hash: Zpo186ZWRxztrQSUSWhFUg== 

가 나는 또한 내 클러스터를 구축 할 수없는했다 다른 방법으로 (Windows 노드에서 join_cluster을 실행하여).

Cluster status of node '[email protected]' 
[{nodes,[{disc,['[email protected]','[email protected]']}]}, 
{running_nodes,['[email protected]','[email protected]']}, 
{cluster_name,<<"[email protected]">>}, 
{partitions,[]}, 
{alarms,[{'[email protected]',[nodedown]},{'[email protected]',[]}]}] 

및 리눅스 노드 : 여기

내가 창문 노드에서 rabbitmqctl cluster_status을 실행할 때 내가 무엇을 얻을 나는 윈도우에 리눅스 노드를 연결할 수 이었기 때문에

Cluster status of node '[email protected]' 
[{nodes,[{disc,['[email protected]','[email protected]']}]}, 
{running_nodes,['[email protected]','[email protected]']}, 
{cluster_name,<<"[email protected]">>}, 
{partitions,[]}, 
{alarms,[{'[email protected]',[]},{'[email protected]',[]}]}] 

하나, 나는 클러스터를 실행하고 내가 메시지를 보내려고하지만, 생각했을 때 failed to connect 오류가 발생했습니다. MQTT 플러그인을 paho.mqtt.c 라이브러리와 함께 사용하고 있습니다. Windows에서 아직 paho.mqtt.c 라이브러리를 컴파일 할 수 없어 Linux 노드에서 메시지를 보내고 받으려고했습니다. 리눅스 노드의 로그에는 실패한 연결에 관한 정보가 없으며, 마지막으로 로그에있는 것은 클러스터에 참가한 후 노드를 다시 시작했을 때 작성된 노드에 관한 정보입니다.

두 가지 문제가 관련되어 있는지 확실하지 않지만 우연이 아닐 수 있습니다. 클러스터에 참여하기 전에 Linux 노드에서 메시지를 보내고받을 수있었습니다.

UPDATE 여기

내가 지금에있어 어디 :

두 컴퓨터는 내가 리눅스 노드에서 rabbitmqctl -n [windows node name] status를 실행할 수 있습니다, 서로 핑 (ping) 및 Windows 노드의 상태를 얻을 수로 Linux 노드에서 Windows 노드의 관리 인터페이스에 액세스 할 수 있습니다. 하지만 다른 방법으로는 할 수 없습니다. 리눅스 노드의 관리 인터페이스가 윈도우 하나 (관리 플러그인이 두 노드 모두에서 사용 가능)에로드되지 않으며 rabbitmqctl -n [Linux node name] status이 동일한 노드 해제 오류를 반환합니다.

Linux 노드에서 Windows 노드 (연결에서 Windows 노드의 IP 주소 지정)를 통해 메시지를 보내어 전송 된 것인지 확인하고 Windows 노드,하지만 우리가 아무리 노력해도 오류를 연결하지 못했습니다. 연결할 주소가 "tcp : // localhost : 1883"일 때만 작동하는 것처럼 보입니다. Paho 라이브러리, MQTT 프로토콜 또는 RabbitMQ 자체. 한 컴퓨터에서 메시지를 보내고 다른 컴퓨터에서 메시지를받는 것이 게시자와 구독자가 모두 자신의 로컬 호스트에 연결된 경우 어떻게 작동하는지 알 수 없습니다.

답변

0

호스트 이름 확인 기능이 작동하지 않는 것 같습니다.나는 당신의 클러스터 상태에서 볼을 기대 :

Cluster status of node '[email protected]' 
[{nodes,[{disc,['[email protected]','[email protected]']}]}, 
{running_nodes,['[email protected]','[email protected]']}, 
{cluster_name,<<"[email protected]">>}, 
{partitions,[]}, 
{alarms,[{'[email protected]',[]},{'[email protected]',[]}]}] 

또한, 당신은 "(존재하지 않는 도메인)"보고있는 사실은 오류에서 이름 확인이 작동되지 않았 음을 나타냅니다. 따라서 노드 이름이 DNS에 있거나 호스트 파일에 올바르게 설정되어 있는지 확인하십시오.

또 다른 가능성은 포트 4369가 차단된다는 것입니다. 노드 검색에 사용되는 두 컴퓨터 간에는 포트가 열려 있어야합니다.

+0

내 노드 이름도'.intra.cea.fr'로 끝나야한다는 뜻입니까? 호스트 이름에 호스트 이름이 올바르게 설정되어 있습니다. 포트 4369가 차단 된 경우 노드 중 하나가 다른 노드와 통신 할 수 없습니까? 또는 포트가 두 노드 중 하나에서 차단 될 수 있습니까? 나는 이것이 왜 연결이 한 방향으로 작용하고 다른 방향으로 작용하지 않는지 설명 할 것입니다. –

+0

클러스터의 이름이 [email protected] 인 것은 내가 정규화 된 도메인 이름을 사용하고 있으며 노드에도 FQDN이 있어야한다고 생각하게 만드는 이유는 어느 노드 에나 RABBITMQ_USE_LONGNAME이 설정되어 있습니까? ? 포트 4369가 편도로 차단되지만 다른 컴퓨터에서는 차단되지 않을 수 있으므로 두 컴퓨터에서 모두 확인해야합니다. – SeanN

+0

RABBITMQ_USE_LONGNAME 변수에서 아무것도 찾을 수 없습니다 (리눅스에서'echo $ RABBITMQ_USE_LONGNAME' 시도, Windows에서'set' 또한 어느 컴퓨터에서든지 rabbitmq-env.conf 설정 파일을 찾을 수 없습니다), 찾을 수 없습니다 기본값에 대한 정보는 있지만 아무것도 변경하지 않았으므로 두 노드 모두에서 그 값으로 설정해야합니다. 4369 포트가 차단되었는지 어떻게 확인할 수 있습니까? 나는'lsof -n -i4TCP : 5672 | grep LISTEN'을 리눅스에서 사용하고 있지만 올바른 방법인지 확인하지 못하고 있습니다. –