2016-04-26 27 views
0

こんにちは私はejabberdクラスタを設定しようとしています。 は、しかし、ノード2からノード1に参加しようとする上で、私は、ノード2でErlang - Ejabberd join_clusterエラー:{no_ping ...}

を言ってエラーを取得:

# ejabberdctl join_cluster [email protected]<internal ip of node1> 
Error: {no_ping,'[email protected]<internal ip of node1>'} 

私がすることができ、明らかにpingノード1ノード2から。

両方のノードがAWSの同じ地域にホストされています。 ノード1のすべてのトラフィックを許可しようとしました。 両方とも同じ.erlang.cookieを持っています。

なぜ私はそのエラーを取得し続けるのか分かりません。 node1で

# ejabberdctl status 
The node '[email protected]<internal ip of node1>' is started with status: started 
ejabberd 16.03.107 is running in that node 

# netstat -lnptu 
tcp  0  0 0.0.0.0:4369   0.0.0.0:*    LISTEN  2190/epmd  
tcp  0  0 0.0.0.0:5269   0.0.0.0:*    LISTEN  2233/beam.smp 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  975/sshd   
tcp  0  0 0.0.0.0:52189   0.0.0.0:*    LISTEN  2233/beam.smp 
tcp  0  0 0.0.0.0:5280   0.0.0.0:*    LISTEN  2233/beam.smp 
tcp  0  0 0.0.0.0:5222   0.0.0.0:*    LISTEN  2233/beam.smp 
tcp6  0  0 :::4369     :::*     LISTEN  2190/epmd  
tcp6  0  0 :::22     :::*     LISTEN  975/sshd   

ejabberdctl.cfg:node1で

[email protected]<internal IP of node1> 

ejabberd.yml:

loglevel: 4 

log_rotate_size: 10485760 
log_rotate_date: "" 
log_rotate_count: 1 

log_rate_limit: 100 





hosts: 
    - "<external ip of node1>" 



listen: 
    - 
    port: 5222 
    module: ejabberd_c2s 
    max_stanza_size: 65536 
    shaper: c2s_shaper 
    access: c2s 
    - 
    port: 5269 
    module: ejabberd_s2s_in 


    - 
    port: 5280 
    module: ejabberd_http 
    request_handlers: 
     "/websocket": ejabberd_http_ws 
    web_admin: true 
    http_bind: true 
    captcha: true 









auth_method: internal 
















shaper: 
    normal: 1000 

    fast: 50000 

max_fsm_queue: 1000 

acl: 

    local: 
    user_regexp: "" 


    loopback: 
    ip: 
     - "127.0.0.0/8" 



access: 
    max_user_sessions: 
    all: 10 
    max_user_offline_messages: 
    admin: 5000 
    all: 100 
    local: 
    local: allow 
    c2s: 
    blocked: deny 
    all: allow 
    c2s_shaper: 
    admin: none 
    all: normal 
    s2s_shaper: 
    all: fast 
    announce: 
    admin: allow 
    configure: 
    admin: allow 
    muc_admin: 
    admin: allow 
    muc_create: 
    local: allow 
    muc: 
    all: allow 
    pubsub_createnode: 
    local: allow 
    register: 
    all: allow 
    trusted_network: 
    loopback: allow 




language: "en" 







modules: 
    mod_adhoc: {} 
    mod_announce: # recommends mod_adhoc 
    access: announce 
    mod_blocking: {} # requires mod_privacy 
    mod_caps: {} 
    mod_carboncopy: {} 
    mod_client_state: {} 
    mod_configure: {} # requires mod_adhoc 
    mod_disco: {} 
    mod_irc: {} 
    mod_http_bind: {} 
    mod_last: {} 
    mod_muc: 
    host: "[email protected]@" 
    access: muc 
    access_create: muc_create 
    access_persistent: muc_create 
    access_admin: muc_admin 
    mod_muc_admin: {} 
    mod_offline: 
    access_max_user_messages: max_user_offline_messages 
    mod_ping: {} 
    mod_privacy: {} 
    mod_private: {} 
    mod_pubsub: 
    access_createnode: pubsub_createnode 
    ignore_pep_from_offline: true 
    last_item_cache: false 
    plugins: 
     - "flat" 
     - "hometree" 
     - "pep" # pep requires mod_caps 
    mod_roster: {} 
    mod_shared_roster: {} 
    mod_stats: {} 
    mod_time: {} 
    mod_vcard: 
    search: false 
    mod_version: {} 



allow_contrib_modules: true 
+0

あなたが両方で 'EPMD -names'を確認することができますか?また、 'epmd'を終了し、' epmd -d'または 'epmd -d -d -d'(デバッグレベルを上げる)でデバッグモードで起動すると、問題を発見するのに役立ちます。 – Amiramix

+0

これはepmd -namesのために得たものです:epmd:データとともにポート4369で稼働しています。 ポート41198で名前ejabberd –

+0

両方でお願いします。 'epmd'は各ノードで別々に動作するデーモンであり、ノード間の接続の確立と維持を担当します。 node1がnode2からの要求を受け入れるように見えるので、もう一方のノードで何が起きているのかを確認する必要があります。 – Amiramix

答えて

0

あなたがあなたのejabberdctlに次の行を変更しejabberdctl.cfgで構成ガイドを欠けているようです.cfgファイル

#INET_DIST_INTERFACE=127.0.0.1 to 

INET_DIST_INTERFACE=104.10.120.122 (whatever your host public ip) 

とオープンアーランコンソールと、それはあなたがejabberdのノード間でクラスタを行うことができ、今卓球返される場合は、次のコマンド -

net_adm:ping('[email protected]'). # your node 

を実行します。 はEC2上Ejabberdのクラスタを設定しながら、私は同じ問題に直面して

1

「ejabberdする@ ejabberd1」join_clusterクラスタ - ejabberdctlを作るために、次のコマンドを実行します。ここで参考になる解決策。

必ず次のポートが

  • 5222内部/プライベートネットワーク上に開いていることを保証します - XMPPクライアント接続
  • 5280 - Webポータル
  • 4369 - EPMD
  • 5269 - S2S
  • 4200 - 4210ノード通信
  • 場合によっては内部のping(icmpパケット)も許可します。

次に、ejabberdctl.cfgファイルのFIREWALL_WINDOWオプションを次のように設定します。これにより、Erlangはノード通信のための動的なポートの代わりに のポートの定義された範囲を使用するように設定されます。

FIREWALL_WINDOW=4200-4210

そして、あなたは、ノードなどをEjabberdための完全なノード名を使用する(ejabberdctl.cfgを参照してください):[email protected]