繁体   English   中英

Amazon EC2 实例无法更新或使用 yum

[英]Amazon EC2 instance can't update or use yum

我正在使用亚马逊的安装 LAMP 服务器的教程。 前几条说明涉及使用yum ,但我尝试使用的每一种方法都导致了相同的消息。 我最近发现了一些关于同一问题的其他问题,这些问题都没有改变我的设置。

这是消息:

Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.us-east-1.amazonaws.com/latest/main/mirror.list error was
12: Timeout on http://repo.us-east-1.amazonaws.com/latest/main/mirror.list: (28, 'Connection timed out after 10001 milliseconds')


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

 1. Contact the upstream for the repository and get them to fix the problem.

 2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

 3. Disable the repository, so yum won't use it by default. Yum will then
    just ignore the repository until you permanently enable it again or use
    --enablerepo for temporary usage:

        yum-config-manager --disable <repoid>

 4. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

        yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

 Cannot find a valid baseurl for repo: amzn-main/latest

我以前做过同样的事情,没有遇到任何问题,使用相同的教程,但那是几个月前的事了。 我不知道发生了什么变化,但我微薄的经验让我无法弄清楚。

看起来主机在联系 yum 服务器时遇到了问题。 确保实例具有出站 Internet 访问权限(检查安全组等)。 如果实例在 VPC 中并且安全组看起来不错,您可能需要使用 nat 设备或附加弹性 IP。

祝你好运-

如果您的 VPC 上有 S3 端点,那么这将导致 yum 失败,因为 repo 文件存储在 S3 中。 要解决此问题,请将以下策略添加到 S3 VPC 终端节点:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "*",
        "Resource": [
            "arn:aws:s3:::repo.eu-west-1.amazonaws.com",
            "arn:aws:s3:::repo.eu-west-1.amazonaws.com/*"
        ]
    }
]
}

将 eu-west-1 替换为您的 S3 终端节点所在的相关区域代码。

很多首次使用 Amazon EC2 的用户都会遇到这个问题。 根据我的经验,这通常是未在其实例的安全组上设置允许的传出连接的结果。 Amazon 用于配置 Amazon Linux 实例的教程仅提及设置传入连接,因此很容易忘记您从未设置允许的传出连接。 只需允许对任何 IP 地址的HTTPHTTPS请求即可解决此问题。

我有同样的问题,并且与名称解析有关。 我使用以下内容进行更正:

EC2 实例没有公共 DNS

这是 Mat 的很好解释:

  • 转到 console.aws.amazon.com
  • 转到服务-> VPC
  • 打开您的 VPC
  • 选择连接到 EC2的 VPC ,然后
  • 编辑摘要 ---> 更改 DNS 主机名:为 YES

检查您的出站条目是否已从分配的安全组中删除/修改。 通常出站条目设置为“所有流量”并允许任何 IP。

就我而言,出站已被删除。 我再次设置为“所有流量”并且它有效。

我遇到了同样的问题,我解决它的方法是允许NAT 实例的安全组上的HTTPS 协议端口443的入站流量。 大多数存储库使用 HTTPS 协议。 确保你没有错过这个。

只需将默认安全组与您可能创建的安全组一起分配即可。 这解决了我的问题。 ;)

我有同样的问题,原来另一个系统管理员决定通过代理路由出站互联网流量。 我通过注意到一些厌倦的代理环境设置发现了这一点,挖得更深一点,然后注意到我的 /etc/yum.conf 文件中有一个条目。

注释掉 proxy= 行并再次工作。

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
#proxy=http://pos-proxy-in-my-way-of-doing-actual-real-work:666

有了查德尼尔的评论。 需要将DNS 解析设置为Yes

  • 转到 console.aws.amazon.com
  • 转到服务-> VPC
  • 打开您的 VPC
  • 选择连接到 EC2的 VPC
  • 单击编辑 DNS 解析并将其设置为

我收到了与问题中描述的 yum 相同的错误消息。 就我而言,我有一个 NACL,它允许所有传出流量,但将传入流量限制为 HTTP/HTTPS、SSH 和所有 ICMP。 由于 NACLS 是无状态的,尝试运行 yum 失败,因为 yum 使用的传入临时连接未明确允许,因此被丢弃。

加载的插件:priorities、update-motd、upgrade-helper 无法检索镜像列表http://repo.us-east-1.amazonaws.com/latest/main/mirror.list错误为 12: http://repo超时.us-east-1.amazonaws.com/latest/main/mirror.list :(28,'连接在 10001 毫秒后超时')

配置的存储库之一失败(未知),并且 yum 没有足够的缓存数据来继续。 在这一点上,yum 能做的唯一安全的事情就是失败。 有几种方法可以“解决”这个问题:

  1. 联系存储库的上游并让他们解决问题。

  2. 重新配置 baseurl/等。 对于存储库,指向一个工作上游。 如果您使用的发行版比存储库支持的新发行版(并且先前发行版的软件包仍然有效),这通常很有用。

  3. 禁用存储库,因此 yum 默认不会使用它。 然后 Yum 将忽略存储库,直到您再次永久启用它或使用 --enablerepo 临时使用:

     yum-config-manager --disable <repoid>
  4. 如果失败的存储库不可用,则将其配置为跳过。 请注意,yum 将尝试联系 repo。 当它运行大多数命令时,每次都必须尝试失败(因此,yum 会慢得多)。 如果这是一个非常暂时的问题,这通常是一个不错的折衷方案:

     yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

无法为 repo 找到有效的 baseurl:amzn-main/latest

上周我也遇到了同样的错误尝试了几乎所有东西,但无法安装服务器并启动 httpd 服务。

通过只允许进出安全组和 NACL 的所有流量进出解决它......试试吧,它将被挑衅地解决。

如果您在子网上使用 NACL,则 EC2 位于该子网上。


快速解决

您必须为此yum update打开入站临时端口

例如在下面添加 #100入站规则:

在此处输入图像描述

请注意,即使出站规则允许所有流量,这仍然是必要的:

在此处输入图像描述

为什么必须这样做?

  1. yum80/443等端口上打开出站连接时,它会在随机高端口(临时端口)返回。

  2. 网络 ACL 是无状态的(与安全组不同),默认情况下不允许在同一端口上返回连接。


你可以在这里阅读更多。

此外,如果您无法使任何 DNS 正常工作,请检查您的 DHCP 选项集。 我留下了一个旧的,当我清理一个涉及活动目录集成的项目时,它坏了。 答案只是改回原始/保存的选项。

该问题可能发生在安全组和 NACL 两个级别。 就我而言,我发现即使在修改了安全组之后,更新也失败了。 但是,修改NACL时..更新成功

我用 sudo 运行了以下命令(如果您不是 root,则不能单独执行 yum),它解决了这个问题。

yum-config-manager --save --setopt=dev.mysql.com_downloads_repo_yum_.skip_if_unavailable=true

我有同样的问题。 就我而言,我错误地删除了我的安全组的出站规则。 添加出站规则以允许所有流量解决了该问题。

请按照以下步骤

第 1 步:转到AWS-VPC

第 2 步:找到DHCP 选项

第 3 步:如果您没有任何DHCP选项,请创建一个新的DHCP

第 4 步:添加域名 = ap-south-1.compute.internal (如果您使用其他区域,请使用其他区域名称)

第 5 步:添加域名服务器 = AmazonProvidedDNS

第 6 步:然后选择您的VPC -->操作-->编辑您的 DHCP 选项集-->选择您刚刚创建的 DHCP 集-->保存

第 7 步:然后重新启动您的实例

第 8 步:登录您的实例,然后输入yum list installed --> 它会毫无疑问地为您提供已安装的列表

谢谢

不用担心这是一个简单的错误。 这也不是连接互联网。

只是用 vi 编辑器创建新文件:

vi /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

然后输入这个退出 vi: :wq

我使用的是默认 VPC,并且默认启用 DNS 主机解析; 不是我的问题。 我按照建议添加了默认安全组,这解决了我的问题。

vpc 中的 ACL 与实例入站或出站规则不同。 我每天多次看到vpc的acl get people。

转到为其配置了 EC2 的安全组。 并验证其入站规则中的以下字段。如果以下字段不存在,则通过单击按钮Edit inbound rules添加它。

  1. 类型-:所有流量
  2. 协议-:全部
  3. 端口范围-:全部
  4. 目的地-: 0.0.0.0/0

希望这能解决问题。

检查私有托管区域,例如“eu-west-1.s3.eu-west-1.amazonaws.com”,并确保 EC2 具有 internet,例如,如果您的 EC2 实例位于私有子网中,则需要确保您的路由指向 nat 网关或实例。

通过 ping 检查您的 EC2 实例上的 Internet 连接

ping google.com

如果您在那里有工作互联网,您将得到回复。 如果没有,则转到 etc/resolv.conf 文件并在该文件中添加以下行:

名称服务器 8.8.8.8 名称服务器 1.1.1.1 名称服务器 1.0.0.1

现在检查互联网是否正常工作。 如果是,您可以轻松恢复工作!!!!

对我来说这些有帮助,请检查

  1. NACL
  2. 安全组
  3. 路由表

此问题通常是由于无法连接到 Internet 造成的。

做以下基本测试:#ping google.com(ping google),如果答案是否定的,如果你不 ping 很简单,你的服务器没有连接到互联网。

为了解决这个问题,当你打开文件时编辑 resolv.conf (nano /etc/resolv.conf),你会看到它是空的,在我的例子中,我在这里写了这些行:

; 由 /usr/sbin/dhclient-script 生成

搜索 ec2.internal

超时选项:2 尝试:5

名称服务器 172.31.0.2

在你的设备上执行此操作,保存文件,然后在 google.com 上再次测试 ping,如果它正常响应,你可以运行 yum update -y 并且它会工作。

希望这可以帮助,

此致

胡里奥·桑托斯

webomega.2012@gmail.com

在我的例子中,我遵循了这个故障排除( https://aws.amazon.com/premiumsupport/knowledge-center/ec2-troubleshoot-yum-errors-al1-al2/ )并且文件 /etc/yum/vars/awsregion 无效内容。 设置正确的区域后,yum 工作正常。

我遇到了同样的问题,但问题不是我的安全组或 NACL。

背景:我通过Route53添加了一个域名。 域名继续由 DiscountASP.net 托管。 VPC 是手动创建的(没有向导或默认设置)。 我用我的域名和 Route53 给我的 4 个服务器 IP 地址创建了一个 DHCP 选项集。

分析:首先,我需要证明问题不在于安全组或 NACL。 我通过将默认 DHCP 选项集附加到我的新 VPC 来做到这一点。 有效! 我可以进行 yum 更新和“curl http://www.google.com ”。 没问题。

然后,我使用我的域名和 Google DNS 服务器创建了一个新的 DHCP 选项集。 8.8.8.8 和 8.8.4.4 这也有效。

然后,我使用了 Route 53 提供的 4 个 DNS 服务器 IP 中的 1 个,并将其与我的域名一起用于新的 DHCP 选项集中。 我进行了测试,但失败了。 我对其余 4 个 DNS 服务器 IP 中的 2 个重复了相同的测试,创建了两个单独的 DHCP 选项集。 我进行了测试,他们都失败了。

在检查了我的域名的拼写之后,我只能断定问题出在域名服务器上。

解决方案:Amazon Virtual Private Cloud 用户指南(PDF 第 222 页)Amazon DNS 服务器(子主题)

“当您创建 VPC 时,我们会自动创建一组 DHCP 选项并将它们与 VPC 关联。这组选项包括两个选项:domain-name-servers = AmazonProvidedDNS 和 domain-name=domainname-for-your- region。AmazonProvidedDNS是 Amazon DNS 服务器,此选项为需要通过 VPC 的 Internet 网关进行通信的实例启用 DNS 。字符串 AmazonProvidedDNS 映射到在 VPC IPv4 网络范围基础的保留 IP 地址上运行的 DNS 服务器,加上两个。例如,10.0.0.0/16 网络上的 DNS 服务器位于 10.0.0.2。”

从第 221 页开始:DHCP:域名服务器

选项名称 描述“最多四个域名服务器的 IP 地址,或AmazonProvidedDNS 。默认 DHCP 选项集指定 AmazonProvidedDNS。如果指定多个域名服务器,请用逗号分隔它们。”

它所指的 IP 地址用于外部域名服务器(不包括您创建自定义 DNS 的可能性)。

因此,我使用我的域名和 domain-name-servers= AmazonProvidedDNS创建了最终的 DHCP 选项集。 有效! 顺便说一句,VPC DNS 解析 = 是 & DNS 主机名 = 否。

干草! 这是我找到的完美答案

去出站规则添加

所有流量

而已

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM