小公司,有七八个微服务,两三个对外的 http 服务,其余都是内部处理 rpc 请求的服务。 没啥架构经验,想到几个方案 a.自己搞个 nginx 在 ec2 上,去做负载均衡和反向代理,那这样前面是不是得搞个防火墙什么的(这里不知道怎么搞 b.直接把 cloudfront 当 nginx 用 c.干脆直接用 cloudfront+ALB,静态资源经 cloudfront 就走 s3 了,接口访问就直接去 ALB,在那里做负载均衡和反向代理 ...还有其它靠谱的方案吗,大家平时在用的 还有一个,上面的都没考虑费用的问题
1
coolcoffee 140 天前
优先考虑可靠性的情况下,应该选择 B 方案。自建 EC2 负载均衡稳定性不够也不容易观察流量数据,自身就是单点风险。
|
2
enchilada2020 140 天前 via Android
我们是 EC2 前有 ALB EC2 里 Web Server 前面再来个 HAProxy
|
3
k9982874 140 天前 via Android
aws 里有个叫 elb 的东西
|
4
enchilada2020 140 天前
@k9982874 楼主提到的 ALB 就是 ELB 的一种
|
5
ForkNMB OP @enchilada2020 感谢回答 还想问一下
那这样每台 EC2 都需要装 HAProxy 服务,这个我没用过,可靠吗? EC2 前面都有 ALB 了,web server 前面的 HAProxy 用途是 还有你们有没有静态资源放 s3 的情况,这种如何提供对外访问 |
6
whileFalse 140 天前
C ,这是 AWS 最佳实践。
上面选 B 的哥们,你们 CF 的上游直接怼 EC2 上吗?基于域名/IP 分流,你其中一台机器要是挂了不直接影响到用户了吗。 |
7
whileFalse 140 天前
@enchilada2020 HA 是用于在一台机器上部署多个服务实例的吧?
@ForkNMB 静态资源放 S3 之后直接挂到 CF 上就行。EC2 要不要带 HA/NGINX 取决于你们的部署模式。 比如最简单的一台机器每个服务都部署一个实例的方式,直接 ALB SG 指定端口号就行了,不需要反代。 |
8
dropdatabase 140 天前 via iPhone
c.
aws 有各种 lb 了。还要 haproxy 干啥? 另外量少可以试试 Lambda 。 |
9
enchilada2020 140 天前 via Android
@ForkNMB 在实例级别终止 SSL URL 改写 访问日志 简化单实例多后端的情况等等 确实跟 ALB 有一部分功能是重合的 是否采用根据实际情况来就行 S3 外部访问应该没涉及到 不太清楚
|
10
wingoo 140 天前
已经是 go 了, aws 上直接 EKS 就行了
静态资源 cloudfront + s3 |