問題描述
ALB
負載均衡 RGC-Dev-ALB.xxx.cn-north-1.elb.amazonaws.com.cn
解析到2個IP 54.223.xxx.xx
和52.81.xxx.xx
, 發現每2次請求會失敗一次,在進一步測試抓包發現沒有收到52.81.xxx.xxx
的返回信息。
問題分析
隨后檢查ALB
建立在兩個子網(subnet-a1xxxxx
和subnet-f3xxxxx
)
其中54.223.xxx.xx
在subnet-f32xxxx
中,子網路由表rtb-49xxxx
中0.0.0.0/0 指向IGW,因此客戶端可以主動訪問到54.223.xxx.xx
。
52.81.xxx.xx
在subnet-a1xxx
中,子網路由表rtb-24xxx
中0.0.0.0/0指向了nat gateway
(nat-0axxxxxxxxxx
), 這將導致客戶端無法連接到52.81.xxx.xx
, 因此也不會收到52.81.xxx.xx
的回包。
請知曉,對於面向公網的ALB
,需要將ALB部署在公有子網中, 即子網路由表0.0.0.0/0需要指向IGW。
解決辦法
目前有2個解決辦法
1) 修改子網路由表rtb-24xxx
, 將0.0.0.0/0指向igw
, 請知曉, 這個修改將影響所有關聯了rtb-24xxx
這個路由表的子網,
如果對應子網中的資源沒有公網地址,修改完成后將失去訪問公網的能力,此外對於子網中有公網地址的資源,將直接從公網路由可達。
2) 修改ALB
的子網,可以在EC2的控制台找到“負載均衡” ,選擇對應的ALB
, 在“描述” > “基本配置” >"可用區" > 點擊“編輯子網”, 將subnet-a1xxx
修改為同AZ的公有子網(即路由表0.0.0.0/0指向igw
的子網)
文章原文