Google Cloud SQL授权自动比例实例组

我有一个使用Auto Scaling和Load Balancing设置的实例组。 我也在使用Google Cloud SQL作为MySQL服务器。

每当实例组扩展并添加另一个实例时,该实例将获取新的IP地址。 问题是这个实例不再有权访问Google SQL实例(因为SQL实例需要授权networking进行预configuration)。 我能做些什么呢?

我目前正在接受大多数IP到我的SQL服务器,通过将以下IP添加到SQLpipe理器中的授权IP: 100.0.0.0/6 104.0.0.0/5 112.0.0.0/4

正如@justbeez已经提到的,我相信最好的方法是使用第二代实例和云SQL代理 。 如果这是不可能的,可以将第一代实例设置为仅允许SSL连接,并将任何来源列入白名单,如此处所述。

更复杂的方法是创build实例模板,以便启动脚本在引导时运行,并通过gcloud授权实例IP地址。 IP可以在关机时以相同的方式移除。

GCE VM的IP地址可以从元数据服务器获取

 curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" -H "Metadata-Flavor: Google" 

如果您使用的是第二代云端SQL实例,则可能需要考虑使用云端SQL代理连接方法: https : //cloud.google.com/sql/docs/mysql-connect-proxy

简而言之,您将在实例中本地安装Cloud SQL代理,并通过服务帐户进行身份validation。 然后,以与使用UNIX或TCP套接字进行连接的方式类似的方式进行连接。

这需要一些设置,但不需要任何IP白名单。 configuration完成后,只需将该版本添加到您正在使用的自动缩放模板即可。

注意:如果您恰好在使用Docker容器,那么它们会有一个包含在Docker镜像中的Cloud SQL Proxy版本,您可以将其作为服务添加到您的Pod: https : //cloud.google.com/sql/docs/mysql -connect -泊坞窗

(我唯一能想到的另一个select是使用API​​来编辑白名单,以响应自动缩放事件。)