An attempt is made to build a MySQL cluster infrastructure using Docker Compose. Is there any guidance on how this can be implemented with multiple data nodes and also multiple MySQL servers? A first attempt was started with this docker-compose.yml:
version: '2'
services:
server:
build: .
ports:
- 8080:8080
restart: on-failure
depends_on:
- "management1"
- "ndb1"
- "ndb2"
- "mysql1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.99
management1:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndb_mgmd
networks:
mysqlcluster:
ipv4_address: 192.168.0.2
ndb1:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndbd
depends_on:
- "management1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.3
ndb2:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndbd
depends_on:
- "management1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.4
mysql1:
image: mysql/mysql-cluster
ports:
- "3306:3306"
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: currency_server_db
MYSQL_USER: tester
MYSQL_PASSWORD: tester
MYSQL_ROOT_HOST: '%'
command: mysqld
depends_on:
- "management1"
- "ndb1"
- "ndb2"
networks:
mysqlcluster:
ipv4_address: 192.168.0.10
mysql2:
image: mysql/mysql-cluster
ports:
- "3307:3307"
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my1.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: currency_server_db
MYSQL_USER: tester
MYSQL_PASSWORD: tester
MYSQL_ROOT_HOST: '%'
command: mysqld
depends_on:
- "management1"
- "ndb1"
- "ndb2"
networks:
mysqlcluster:
ipv4_address: 192.168.0.11
adminer:
image: adminer
restart: always
ports:
- 8081:8080
links:
- mysql1:db
networks:
mysqlcluster:
networks:
mysqlcluster:
driver: bridge
ipam:
config:
- subnet: 192.168.0.0/16
my.cnf:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.2
user=mysql
skip_name_resolve
[mysql_cluster]
ndb-connectstring=192.168.0.2
my1.cnf:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.2
user=mysql
skip_name_resolve
port=3307
[mysql_cluster]
ndb-connectstring=192.168.0.2
However, various errors keep coming up when initializing multiple MySQL server nodes:
Configuration error: Error: Could not alloc node id at 192.168.0.2:1186: Connection done from wrong host ip
or
Can’t connect to local MySQL server through socket
Thanks for your answers.
version: '2'
services:
server:
build: .
ports:
- 8080:8080
restart: on-failure
depends_on:
- "management1"
- "ndb1"
- "ndb2"
- "mysql1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.99
management1:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndb_mgmd
networks:
mysqlcluster:
ipv4_address: 192.168.0.2
ndb1:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndbd
depends_on:
- "management1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.3
ndb2:
image: mysql/mysql-cluster
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
command: ndbd
depends_on:
- "management1"
networks:
mysqlcluster:
ipv4_address: 192.168.0.4
mysql1:
image: mysql/mysql-cluster
ports:
- "3306:3306"
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: currency_server_db
MYSQL_USER: tester
MYSQL_PASSWORD: tester
MYSQL_ROOT_HOST: '%'
command: mysqld
depends_on:
- "management1"
- "ndb1"
- "ndb2"
networks:
mysqlcluster:
ipv4_address: 192.168.0.10
mysql2:
image: mysql/mysql-cluster
ports:
- "3307:3307"
volumes:
- ./mysql.conf/my.cnf:/mysql.conf/my1.cnf
- ./mysql.conf/mysql-cluster.cnf:/mysql.conf/mysql-cluster.cnf
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: currency_server_db
MYSQL_USER: tester
MYSQL_PASSWORD: tester
MYSQL_ROOT_HOST: '%'
command: mysqld
depends_on:
- "management1"
- "ndb1"
- "ndb2"
networks:
mysqlcluster:
ipv4_address: 192.168.0.11
adminer:
image: adminer
restart: always
ports:
- 8081:8080
links:
- mysql1:db
networks:
mysqlcluster:
networks:
mysqlcluster:
driver: bridge
ipam:
config:
- subnet: 192.168.0.0/16
my.cnf:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.2
user=mysql
skip_name_resolve
[mysql_cluster]
ndb-connectstring=192.168.0.2
my1.cnf:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.2
user=mysql
skip_name_resolve
port=3307
[mysql_cluster]
ndb-connectstring=192.168.0.2
However, various errors keep coming up when initializing multiple MySQL server nodes:
Configuration error: Error: Could not alloc node id at 192.168.0.2:1186: Connection done from wrong host ip
or
Can’t connect to local MySQL server through socket
Thanks for your answers.