Я установил кластер MySQL на моем компьютере, используя образ mysql / mysql-cluster на док-концентраторе, и он нормально запускается.Однако, когда я пытаюсь подключиться к кластеру из внешнего докера (через хост-компьютер) с использованием clusterJ, он не подключается.
Изначально я получал следующую ошибку: Не удалось выделить идентификатор узла на порту 127.0.0.11186: Не найден свободный идентификатор узла для mysqld (API)
Поэтому я создал собственный mysql-cluster.cnf, очень похожий на тот, который распространяется с образом докера, но с новой конечной точкой API:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
NodeId=1
hostname=192.168.0.2
datadir=/var/lib/mysql
[ndbd]
NodeId=2
hostname=192.168.0.3
datadir=/var/lib/mysql
[ndbd]
NodeId=3
hostname=192.168.0.4
datadir=/var/lib/mysql
[mysqld]
NodeId=4
hostname=192.168.0.10
[api]
Это конфигурация, используемая для настройки clusterJ:
com.mysql.clusterj.connect:
host: 127.0.0.1:1186
database: my_db
Вот конфигурация docker-compose:
version: '3'
services:
#Sets up the MySQL cluster ndb_mgmd process
database-manager:
image: mysql/mysql-cluster
networks:
database_net:
ipv4_address: 192.168.0.2
command: ndb_mgmd
ports:
- "1186:1186"
volumes:
- /c/Users/myuser/conf/mysql-cluster.cnf:/etc/mysql-cluster.cnf
# Sets up the first MySQL cluster data node
database-node-1:
image: mysql/mysql-cluster
networks:
database_net:
ipv4_address: 192.168.0.3
command: ndbd
depends_on:
- database-manager
# Sets up the second MySQL cluster data node
database-node-2:
image: mysql/mysql-cluster
networks:
database_net:
ipv4_address: 192.168.0.4
command: ndbd
depends_on:
- database-manager
#Sets up the first MySQL server process
database-server:
image: mysql/mysql-cluster
networks:
database_net:
ipv4_address: 192.168.0.10
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=true
- MYSQL_DATABASE=my_db
- MYSQL_USER=my_user
command: mysqld
networks:
database_net:
ipam:
config:
- subnet: 192.168.0.0/16
Когда я пытаюсь подключиться к кластеру Iполучить следующую ошибку: «127.0.0.1:1186» nodeId 0;Код возврата: -1 код ошибки: 0 сообщение:.
Я вижу, что приложение под управлением ClusterJ зарегистрировано в кластере, но затем оно отключается.Вот выдержка из журналов диспетчера mysql менеджера:
database-manager_1 | 2018-05-10 11:18:43 [MgmtSrvr] INFO -- Node 3: Communication to Node 4 opened
database-manager_1 | 2018-05-10 11:22:16 [MgmtSrvr] INFO -- Alloc node id 6 succeeded
database-manager_1 | 2018-05-10 11:22:16 [MgmtSrvr] INFO -- Nodeid 6 allocated for API at 10.0.2.2
Любая помощь в решении этой проблемы будет принята с благодарностью.