我正在尝试做一个apt-get update
或apt-get install xyz
,但看到了如下超时:
W: Failed to fetch http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/dists/oneiric-updates/Release.gpg
Unable to connect to eu-west-1.ec2.archive.ubuntu.com:http: [IP: 10.224.87.159 80]
这是 Ubuntu 的暂时问题吗?或者可能是我的问题。我访问它的盒子位于 EC2-EU。
也许有一种方法可以强制安装程序使用似乎可行的美国服务器?
答案1
首先,我假设超时是该地区 Ubuntu 更新服务器的一个暂时性问题。
需要注意的是,EC2 Ubuntu AMI 指向您所使用的 EC2 区域上托管的更新服务器。它速度很快(~10Mbps),而且您无需支付带宽费用。
话虽如此,但并没有强制要求您从哪里获取更新。您可以更改您的/etc/apt/sources.list
设置,使其指向不同区域的不同更新服务器。以下是两个解决方法建议:
sources.list
从美国地区复制到您的欧盟主机。- 将以下行添加到您的顶部
sources.list
:
deb mirror://mirrors.ubuntu.com/mirrors.txt oneiric main restricted universe multiverse
第二种解决方案的巧妙之处在于,这个“mirrors.txt”文件是通过 GeoIP 动态生成的,并且应该始终返回一个良好且相对较近的镜像。伟大的对于我们这些经常旅行的 Ubuntu 用户来说。
再次强调,鉴于 EC2 上存档服务器的特殊性,我通常不会在云实例上执行此操作。而且我只会将这两种解决方法作为临时措施。无论问题出在哪里,它都是暂时的,我希望它能很快得到解决。
答案2
当我将弹性 IP 分配为启动实例的元数据的一部分时,我看到了与 cloud-init 进程类似的行为。
奇怪的是,在 cloud-init 运行时,我只看到偶尔出现一次超时,持续约 30 秒。我正在使用作为 cloud-init 的一部分每 2 秒运行一次的 netcat 对此进行测试。一段时间内,我每隔几次就会遇到 nc 超时,然后就会稳定下来。DNS 似乎每次都能正常工作,偶尔会给我一个不同的 IP(如预期的那样)。
我怀疑 AWS 基础设施中的弹性 IP 分配存在问题,但我不确定。
另一个有趣的事情是,与我的 AWS 帐户中的本地存储库的 http 连接工作正常,并且对 security.ubuntu.com(我相信是 AWS 外部的)的调用也工作正常。到目前为止,我只能收集大约 15 个样本。我确实确认,当 netcat 无法访问 archive.ubuntu.com 时,它会在其他地方成功
来自 cloud-init 中的脚本:
us-east-1.ec2.archive.ubuntu.com is an alias for us-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com.
us-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com is an alias for s3-1-w.amazonaws.com.
s3-1-w.amazonaws.com has address 205.251.242.197
nc: connect to us-east-1.ec2.archive.ubuntu.com port 80 (tcp) timed out: Operation now in progress
Connection to {myawsserver}.ec2.{somedomain} 80 port [tcp/http] succeeded!
Connection to security.ubuntu.com 80 port [tcp/http] succeeded!