创建集群时是不是需要知道 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 中包含的所有主机?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Dataproc 集群启动时自动安装 Python 库?