Не удается выделить nodeid для API
Я использую довольно минимальный кластер MySQL с конфигурацией, взятой прямо из документации. Узлы данных подключаются нормально, но сервер управления отказывается принимать узлы API. Вот что происходит:
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
от ndb_mgm
выводит это:
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)
Вот my.cnf
- Ничего особенно интересного:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
language=english
ndbcluster
[mysql_cluster]
ndb-connectstring=localhost
Единственная связанная с API конфигурация в config.ini
это:
[mysqld]
[mysqld]
Нет никаких [mysqld default]
раздел. Я пытался установить имена хостов.
Я пробовал оба ndbd --reload
а также ndbd --initial
с соответствующими перезагрузками.
Обновить
Похоже, что ни один узел данных не прослушивает порт 2202 на основе выходных данных netstat -nl
, Поскольку ни один из них не прослушивает, они не могут соединиться друг с другом, и кластер никогда не готов к присоединению узлов API. Что может помешать этому?
2 ответа
Похоже, проблема заключалась в том, что я смешивал IP-адреса локального хоста, локальной сети и Интернета. Все серверы должны иметь возможность связываться друг с другом с помощью IP-адресов, которые разрешает сервер управления. Ты можешь использовать [tcp]
переопределить это, но это слишком грязно.
У вас есть опечатка в вашем файле. Адрес 127.0.1.1 не подходит для петлевого адреса или локального хоста. Это должно быть 127.0.0.1.