创建集群时是不是需要知道 ipWhitelist 中包含的所有主机?

Posted

技术标签:

【中文标题】创建集群时是不是需要知道 ipWhitelist 中包含的所有主机?【英文标题】:Is it necessary to know all hosts contained in ipWhitelist on cluster creation?创建集群时是否需要知道 ipWhitelist 中包含的所有主机? 【发布时间】:2019-03-15 19:53:28 【问题描述】:

我正在使用 mysql 8.0.14 和 InnoDB 集群。 我目前正忙于通过 mySQL shell 创建组复制。

由于我想使用 SSL,我需要在 dba.createCluster() 上设置 ipWhitelist,如下所示:

var cluster = dba.createCluster('testCluster4', ipWhitelist:'somedns-1.tosqlnode')

集群创建成功。现在我想添加另一个实例。

cluster.addInstance('ca@somedns-2.tosqlnode', ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode')

此操作失败,因为第一个实例显示错误,指出未列入白名单的实例正在尝试连接。


所以再创建一个:

var cluster = dba.createCluster('testCluster5', ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode')

集群创建成功。现在我想添加另一个实例。

cluster.addInstance('ca@somedns-2.tosqlnode', ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode')

实例添加成功。


真的有必要在创建集群时知道所有实例地址吗?我找不到通过 MySQL shell 更改初始 ipWhitelist 的方法。

【问题讨论】:

【参考方案1】:

是的,是的。请注意,它需要是双向的(正如您在第二次尝试中正确设置的那样)。此外,您可以使用 CIDR 表示法来选择要“列入白名单”的特定子网。

有关更多信息,请查看有关 ip-whitelist 的文档部分:https://dev.mysql.com/doc/refman/8.0/en/group-replication-ip-address-whitelisting.html

关于通过 Shell 更改正在运行的集群的当前 ip-whitelist 的可能性,这是不可能的。您需要重新创建集群:

cluster.dissolve(force: true])
var cluster = dba.createCluster('myCluster', ipWhitelist:'<myIpWhitelist')

干杯,

米格尔

【讨论】:

【参考方案2】:

如果您希望能够即时添加节点,则需要将group_replication_ip_whitelist 设置为AUTOMATIC。这是在配置期间未从 Shell 指定任何 ipWhitelist 时完成的(默认)。如果没有,你必须按照米格尔上面写的去做。

【讨论】:

以上是关于创建集群时是不是需要知道 ipWhitelist 中包含的所有主机?的主要内容,如果未能解决你的问题,请参考以下文章

降低流分析集群的成本

在 R 中,是不是有一种算法可以创建大小大致相等的集群

如何在 Dataproc 集群启动时自动安装 Python 库?

创建 cassandra 集群时 docker compose 问题

为啥redis集群的最大槽数是16384个?

设置fs.defaultFS属性时无法创建Dataproc集群?