带负载均衡器的AWS Elastic Beanstalk环境获取静态IP用于Tableau可信认证
我之前也碰到过类似的需求,现在AWS的负载均衡配置和5年前确实不一样了——默认的Application Load Balancer(ALB)本身没有静态IP,它的公网IP会随着子网资源调度动态变化,直接拿ALB的IP肯定满足不了Tableau可信认证的需求。给你两种当前可行的方案,按需选择:
方案一:切换为Network Load Balancer(NLB)并绑定弹性IP
NLB支持直接关联弹性IP(也就是你需要的静态IP),这是目前最推荐的方案,无需额外维护冗余资源:
第一步:创建弹性IP
登录AWS控制台,进入EC2服务,左侧菜单找到「弹性IP」,点击「分配弹性IP地址」。注意:如果你的EB环境是多可用区部署(生产环境建议这么做),需要给每个可用区至少分配一个弹性IP(比如2个或更多,匹配你的AZ数量)。第二步:修改Elastic Beanstalk的负载均衡类型
进入你的EB环境控制台,点击「配置」→「负载均衡」→「编辑」,将负载均衡类型从「应用程序负载均衡器」切换为「网络负载均衡器」,保存配置后等待环境更新完成。第三步:给NLB绑定弹性IP
环境更新完成后,进入EC2服务的「负载均衡器」页面,找到EB自动创建的NLB:- 点击NLB的「配置」标签页,将「IP地址类型」设置为「静态」;
- 点击「编辑IP地址」,在每个可用区对应的IP地址下拉框中,选择你之前创建的弹性IP;
- 保存配置,等待NLB更新生效。
完成后,你的自定义域名指向的NLB就拥有固定的静态IP了,把这些弹性IP添加到Tableau的可信认证列表即可。
方案二:用EC2实例做反向代理(适合不想换负载均衡的场景)
如果不想修改EB的负载均衡类型,可以部署一个EC2实例作为反向代理,将流量转发到你的ALB,再给EC2绑定弹性IP:
- 给EC2实例绑定弹性IP(步骤和方案一的第一步一致);
- 在EC2上配置反向代理(比如用Nginx),设置转发规则将请求转到你的ALB域名;
- 把自定义域名的DNS记录修改为指向这个EC2的弹性IP;
- 最后将该弹性IP添加到Tableau的可信列表。
不过这个方案需要额外维护EC2实例,还要考虑高可用(比如部署多个EC2并配置Auto Scaling),所以除非有特殊限制,优先选择方案一。
小提示:配置完成后,可以用nslookup或者dig命令测试你的自定义域名,确认返回的是你绑定的弹性IP,确保配置生效。
内容的提问来源于stack exchange,提问作者ujjwal garg

