Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm running a pretty minimal MySQL cluster with configuration pretty much taken straight from the documentation. The data nodes are connecting fine, but the management server refuses to accept the API nodes. Here's what happens:

INFO     -- Node 2: Initial start, waiting for 3 to connect,  nodes [ all: 2 and 3 connected: 2 no-wait:  ]
INFO     -- Node 3: Initial start, waiting for 2 to connect,  nodes [ all: 2 and 3 connected: 3 no-wait:  ]
WARNING  -- Failed to allocate nodeid for API at 10.0.42.2. Returned error: 'No free node id found for mysqld(API).'
WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned error: 'No free node id found for mysqld(API).'

show from ndb_mgm outputs this:

Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @127.0.0.1  (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0)
id=3    @10.0.42.2  (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @127.0.1.1  (mysql-5.6.14 ndb-7.3.3)

[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)

Here's my.cnf--nothing particularly interesting:

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

language=english

ndbcluster

[mysql_cluster]
ndb-connectstring=localhost

The only API-related configuration in config.ini is this:

[mysqld]
[mysqld]

There's no [mysqld default] section. I've tried setting hostnames.

I've tried both ndbd --reload and ndbd --initial, with appropriate restarts.

Update

It looks as though neither data node is listening on port 2202 based on the output of netstat -nl. Since neither is listening, they can't connect to each other, and the cluster is never ready for API nodes to join. What could be preventing this?

share|improve this question

1 Answer 1

Looks like the problem was that I was mixing localhost, LAN, and internet IP addresses. All of the servers need to be able to reach each other with the IP addresses that management server resolves. You can use [tcp] to override this, but it's far too messy.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.