使用Terraform部署AWS EC2后,Yum安装Apache遇CDS负载均衡器连接错误
解决AWS EC2 Redhat实例yum安装Apache失败问题
问题描述
通过Terraform部署AWS EC2 Redhat实例,以root身份SSH登录后执行安装命令:
sudo yum install -y httpd
返回错误:
Could not contact any CDS load balancers: rhui2-cds01.us-east-1.aws.ce.redhat.com, rhui2-cds02.us-east-1.aws.ce.redhat.com.
当前使用的Terraform网络配置代码如下:
resource "aws_default_subnet" "learntf_default_subnet" { availability_zone = "us-east-1a" } resource "aws_security_group" "web_server_sec_group" { name = "web server security group" # allow ssh only ingress { from_port = 0 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } ingress { from_port = 0 to_port = 80 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } }
问题原因
AWS上的Redhat实例依赖RHUI(Red Hat Update Infrastructure)获取软件包更新,报错说明实例无法连接到RHUI的CDS负载均衡节点。虽然安全组出方向已允许全量流量,但大概率是子网互联网访问配置缺失或实例未分配公网IP导致无法出站访问公网节点。
解决方案
1. 确认子网的互联网访问配置
- 登录AWS控制台进入VPC服务,检查默认VPC是否关联了互联网网关,且网关状态为"已关联"。
- 查看默认子网绑定的路由表,确认存在默认路由规则:
0.0.0.0/0指向互联网网关ID。如果没有,添加该路由规则。
2. 确保实例分配公网IP
在Terraform的EC2实例资源配置中显式声明分配公网IP(默认子网下通常自动分配,但显式配置更可靠):
resource "aws_instance" "web_server" { # 保留原有AMI、实例类型等配置 subnet_id = aws_default_subnet.learntf_default_subnet.id vpc_security_group_ids = [aws_security_group.web_server_sec_group.id] associate_public_ip_address = true # 强制分配公网IP }
更新配置后重新部署实例。
3. 排查网络连通性(SSH登录实例后执行)
- 测试域名解析:
nslookup rhui2-cds01.us-east-1.aws.ce.redhat.com
若无法解析,检查VPC的DNS配置(默认使用VPC网段+2的地址作为DNS服务器,比如VPC网段为172.31.0.0/16时,DNS地址为172.31.0.2)。
- 测试443端口连通性(RHUI使用443传输更新包):
telnet rhui2-cds01.us-east-1.aws.ce.redhat.com 443
若无法连通,再次确认子网路由表和公网IP配置。
内容的提问来源于stack exchange,提问作者jwill
相关产品推荐
相关产品推荐

