由于谷歌计算引擎没有提供内部DNS,我创建了2个centos绑定机器,它们将解析GCE上的机器并将解析通过vpn转发到我的私有云,反之亦然。
正如谷歌云帮助文档建议你可以有这种情况。并编辑每个实例上的resolv.conf以进行解析。
我所做的是编辑ifcg-eth0以禁用PEERDNS并在/etc/resolv.conf中 我添加了搜索域和前2个名称服务器我的实例。
现在一个实例重新启动后..因为搜索metadata.google.internal域而不会再次启动
7月8日10:17:14实例1 google:等待元数据服务器,尝试412
在这种情况下,最佳做法是什么?
TY
此外,由于GCE不提供内部平衡器,我需要使用内部DNS来执行可怜的人员循环故障转移。
答案 0 :(得分:4)
如https://cloud.google.com/compute/docs/networking所述:
每个实例的元数据服务器充当DNS服务器。它存储本地网络中所有网络IP地址的DNS条目,并调用Google的公共DNS服务器以获取网络外的条目。您无法配置此DNS服务器,但您可以根据需要设置自己的DNS服务器,并通过编辑/etc/resolv.conf文件来配置实例以使用该服务器。
所以你应该只能使用169.254.169.254作为你的DNS服务器。如果您需要定义外部DNS条目,可能需要Cloud DNS。如果您使用云DNS或任何其他DNS提供商设置域,则169.254.169.254解析程序应找到它。
如果您需要更复杂的东西,例如客户内部DNS名称,那么您自己的BIND服务器可能是最佳解决方案。只需确保metadata.google.internal.
解析为169.254.169.254。
答案 1 :(得分:1)
好吧,我刚刚参加了这个...但遗憾的是30分钟后没有超时让它运转起来。 Fortunatly nelasx已经正确地诊断了它,并给予了修复。我添加了这个,根据他的优秀问题和评论答案给出了我必须采取的步骤。我只是将我必须聚集在一起的信息拉到一个地方,以找到解决方案。
症状:谷歌实例启动时 - 拒绝连接 检查串行控制台输出后,将看到:
Jul 8 10:17:14 instance-1 google: Waiting for metadata server, attempt 412
您可以尝试等待,不为我工作,并检查https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google-startup-scripts/usr/share/google/onboot
# Failed to resolve host or connect to host. Retry indefinitely.
6|7) sleep 1.0
log "Waiting for metadata server, attempt ${count}"
让我相信这是行不通的。
因此,解决方案是摆弄磁盘,添加nelasx的解决方案: "编辑ifcfg-eth并更改PEERDNS = no edit /etc/resolv.conf并置顶名称服务器+搜索域编辑/ etc / hosts并添加:169.254.169.254 metadata.google.internal"
要做到这一点,
最好在开始之前创建快照备份,以防它出错
取消选中"删除实例时删除启动盘"为您的实例
删除实例
创建微型实例
挂载磁盘
sudo ls -l / dev / disk / by-id / *#这将为您提供实例的名称
sudo mkdir / mnt / new
sudo mount / dev / disk / by-id / scsi-0Google_PersistentDisk_instance-1-part1 / mnt / new
其中instance-1将根据您的设置进行更改
根据nelasx的解决方案进行编辑 - 我堕落的白痴陷阱 - 使用相对路径 - 不要只是sudo vi / etc / hosts使用/ mnt / new / etc /主持人 - 我花了15分钟,因为我不得不经历:沮丧,头部受伤,踢自己循环。
删除调试实例,确保未选中附加磁盘删除选项
创建一个与原始实例匹配的新实例,并将已编辑的磁盘作为启动磁盘并启动它。