繁体   English   中英

在多个服务器上使用 mysql-server docker 容器创建 MySQL 集群

[英]Creating a MySQL cluster, using mysql-server docker containers, on multiple servers

我正在尝试使用mysql-server docker 容器创建 3 个节点的 MySQL 集群。

我有3 个单独的云实例,并且 docker 在所有 3 个上都设置了。 每台服务器将仅运行 1 个容器- 以在集群中实现高可用性。

我使用命令分别在所有 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')

我收到了类似的信息- 在此处输入图像描述

请注意,它显示“此实例将其自己的地址报告为 39xxxxxxxxxx:3306”。

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

在此处输入图像描述

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

在此处输入图像描述

它说“对等地址 a9yyyyyyyyyy: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-server 容器集群的人,我都非常感谢这方面的指针。

我已经查看了文档和源代码,但没有找到解释为什么监听和通告不同的端口是有问题的。

我在调用 mysql-server 时使用--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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM