在多台服务器上使用MySQL服务器docker容器创建MySQL集群

在多台服务器上使用MySQL服务器docker容器创建MySQL集群,mysql,docker,innodb,mysql-innodb-cluster,Mysql,Docker,Innodb,Mysql Innodb Cluster,我正在尝试使用docker容器创建一个包含3个节点的MySQL集群 我有3个独立的云实例,docker在这3个实例上都安装了每台服务器上只运行一个容器——以在集群中实现高可用性 我使用命令分别启动所有3台服务器上的容器 docker run --name=db -p 3301:3306 -v db:/var/lib/mysql -d mysql/mysql-server 我正在将容器的端口3306映射到服务器的3301端口。我还为远程访问创建了一个新用户“clusteradmin” 接下来,在

我正在尝试使用docker容器创建一个包含3个节点的MySQL集群

我有3个独立的云实例,docker在这3个实例上都安装了每台服务器上只运行一个容器——以在集群中实现高可用性

我使用命令分别启动所有3台服务器上的容器

docker run --name=db -p 3301:3306 -v db:/var/lib/mysql -d mysql/mysql-server
我正在将容器的端口3306映射到服务器的3301端口。我还为远程访问创建了一个新用户“clusteradmin”

接下来,在mysql shell中,我为所有3台服务器运行了以下命令

dba.configureInstance('clusteradmin@serverIp:3301')
我得到了所有人的类似信息-

注意它说“此实例报告自己的地址为39xxxxxxxxx:3306”

接下来,我成功地在其中一台服务器中创建了一个集群。但是,当将其他两台服务器添加到此集群时,我得到了以下错误

在检查该特定服务器的日志时,我看到以下几行

它表示“对等地址A9YYYY:33061无效”。这是因为,由于容器在不同的服务器上运行,所以其他服务器上的其他容器无法识别容器id

我尝试了很多选择,但都没有用。一种方法是在启动容器时使用报表主机和报表端口选项,如下所示

docker run --name=db2 -p 3301:3306 -v db2:/var/lib/mysql -d mysql/mysql-server --report-host=139.59.11.215 --report-port=3301
但是,这种方法的问题是,在dba.configureInstance()期间,它希望将端口更新为默认值,并抛出类似这样的错误


如果有人能够创建一个在不同服务器上运行的mysql服务器容器集群,我将非常感谢您提供这方面的指导。

我已经阅读了文档和源代码,但没有找到解释为什么监听和宣传不同的端口会有问题

我在调用mysql服务器时使用了
--port 3301
解决了这个问题:

docker run --name=db2 -p 3301:3301 -v db2:/var/lib/mysql -d mysql/mysql-server --report-host=139.59.11.215 --port 3301

您使用的是NDB集群、InnoDB集群还是其他集群?我使用的是InnoDB集群