我想允许组中的节点与app-server
组中的 mysql 和 redis 机器对话database
。但是,我只能使显式 IP 用于入口规则。当我尝试定义组时,为了使自动缩放更容易,流量被阻止。
这是我的设置:
当我跑
ec2-describe-group database
我明白了
PERMISSION 890752071609 database ALLOWS tcp 3306 3306 FROM USER 890752071609 NAME default ID sg-5ce3766c ingress
PERMISSION 890752071609 database ALLOWS tcp 3306 3306 FROM USER 890752071609 NAME app-server ID sg-b81b8088 ingress
PERMISSION 890752071609 database ALLOWS tcp 6379 6379 FROM USER 890752071609 NAME default ID sg-5ce3766c ingress
PERMISSION 890752071609 database ALLOWS tcp 6379 6379 FROM USER 890752071609 NAME app-server ID sg-b81b8088 ingress
PERMISSION 890752071609 database ALLOWS tcp 0 65535 FROM USER 890752071609 NAME database ID sg-d262f1e2 ingress
PERMISSION 890752071609 database ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0 ingress
但是,当我尝试从app-server
组中的一台机器上使用 redis-cli 连接到端口 6379 时,我收到了 redis 超时错误。
如果我明确添加要连接的服务器的弹性 IP,就像这样
PERMISSION 890752071609 database ALLOWS tcp 3306 3306 FROM CIDR 111.snip.25/32 ingress
PERMISSION 890752071609 database ALLOWS tcp 6379 6379 FROM CIDR 222.snip.25/32 ingress
redis-cli 调用有效。但是,我想更加灵活,而是添加整个安全组。
亚马逊文档状态
通过将安全组指定为源,您允许来自属于源安全组的所有实例的传入流量。您允许的传入流量基于源安全组中实例的私有 IP 地址。如果您正在创建三层 Web 服务,您可以在您的帐户中指定另一个安全组(请参阅创建三层 Web 服务)。
这应该有效,不是吗?我究竟做错了什么?