Узлы данных не могут подключиться к MySQL Cluster
У меня проблема с моим MySQL Cluster, работающим на экземплярах AWS EC2 (3 узла данных и 1 узел управления, на t2.micro под управлением последней версии Ubuntu). Я следовал этому руководству (с обновленной версией MySQL Cluster 7.5.5): https://stansantiago.wordpress.com/2012/01/04/installing-mysql-cluster-on-ec2/
В my.cnf
файл, у меня есть следующий код:
[mysqld]
ndbcluster
datadir=/opt/mysqlcluster/deploy/mysqld_data
basedir=/opt/mysqlcluster/home/mysqlc
port=3306
В config.ini
файл, у меня есть этот код:
[ndb_mgmd]
hostname=<private DNS of master>
datadir=/opt/mysqlcluster/deploy/ndb_data
nodeid=1
[ndbd default]
noofreplicas=3
datadir=/opt/mysqlcluster/deploy/ndb_data
[ndbd]
hostname=<private DNS of slave 1>
nodeid=3
[ndbd]
hostname=<private DNS of slave 2>
nodeid=4
[ndbd]
hostname=<private DNS of slave 3>
nodeid=5
[mysqld]
nodeid=50
Затем я запускаю узел управления следующим образом:
ndb_mgmd -f /opt/mysqlcluster/deploy/conf/config.ini --initial --configdir=/opt/mysqlcluster/deploy/conf
Все вроде нормально, у меня ошибки не отображаются.
Однако, когда я пытаюсь подключить подчиненное устройство к кластеру, с помощью этой команды:
ndbd -c <private DNS of master>:1186
это терпит неудачу с этим кодом ошибки:
Unable to connect with connect string: nodeid=0,<private DNS of master>:1186
Я попробовал команду ndb_mgm -e show
чтобы увидеть, что происходит:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 3 node(s)
id=3 (not connected, accepting connect from <private DNS of slave 1>)
id=4 (not connected, accepting connect from <private DNS of slave 2>)
id=5 (not connected, accepting connect from <private DNS of slave 2>)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @<private IP address of master> (mysql-5.7.17 ndb-7.5.5)
[mysqld(API)] 1 node(s)
id=50 (not connected, accepting connect from any host)
Кажется, что узел управления запущен на локальном хосте, поэтому он не работает? Я не понимаю, почему я не могу подключить узлы данных к кластеру, потому что файлы конфигурации выглядят хорошо.
Если у кого-то есть какие-либо предложения, это будет высоко ценится. Спасибо!
1 ответ
Проблема в том, чтобы заставить MySQL Cluster работать на EC2, состоит в том, чтобы гарантировать, что все виртуальные машины могут обмениваться данными через соответствующие порты.
Это достигается путем добавления группы безопасности, частью которой являются все виртуальные машины. Я создал группу безопасности под названием NDB Cluster, в которой были правила для входящего и исходящего TCP-трафика для обмена данными по следующим портам: 1186 (порт NDB Management Server), 3306 (порт MySQL Server), 3316 (дополнительный порт MySQL Server), 8081 (Порт автоинсталлятора MySQL Cluster), 11860 (порт узла данных MySQL Cluster), 33060 (порт MySQLX).
Я добавил строку в config.ini в раздел NDBD DEFAULT ServerPort=11860. Это означает, что все узлы подключаются к узлам данных, используя этот номер порта.
Со всеми виртуальными машинами, использующими эту группу безопасности, все работало как прелесть, когда не было настроено взаимодействие между всеми узлами, очевидно, что все работало не очень хорошо.