Meteor method cannot be executed properly in cluster connection

Meteor method cannot be called properly between two servers, which are connected by cluster. Please correct me is this issue is not from the connection.

First, the environment is

  1. two meteor servers are connection by cluster, and the servers has many methods that can be called by client. For example,

    //server 1
    Meteor.methods({
    method1_1: function(){
    //do something
    },
    method1_2: function(){
    //do something
    },
    method1_3: function(){
    //do something
    },
    … //about 30 methods
    })

    //server 2
    var server1 = cluster.discoverConnection(‘server1’);
    Meteor.methods({
    method2_1: function(){
    server1.call(‘method1_1’, function(err, result){
    return “something”;
    })
    },
    method2_2: function(){
    server1.call(‘method1_2’, function(err, result){
    server1.call(‘method1_3’, function(err, result){
    //do something
    }
    })
    },
    })

    //client to server 2
    Meteor.call(‘method2_1’, function(err, result){
    //do something
    Meteor.call('method2_2, function(err, result){
    })
    })

The calling for “method1_2” always fails.

  1. Running the project locally (Ubuntu, server1 runs on port 4000 and server2 runs on port 3000, mongodb for cluster runs locally on port 27017), everything works perfect. No fails.

  2. Running the project on AWS EC2 (Ubuntu, server1 runs on one instance, and server2 runs on another instance, mongodb for cluster runs on the instance for server1), the “method1_1” works fine, but the failure starts from calling “method1_2”.

I tried to add “Meteor.setTimeout” for all the meteor.call and server1.call, and using “Async” but they do not solve the issue.

Please help me on this issue with any clue or suggestions. Thanks.