生产环境部署 web 服务多个实例的最佳实践是怎样的?

2020-11-20 08:08:20 +08:00
 JasonLaw
我有一个使用 Flask 的 web 服务,运行端口为 8080 。

我想在生产环境部署多个实例,实例的数量可以很容易地增加和减少。对于服务客户来说,这些都不应该对它有任何影响。对于这个问题,我想到的是服务发现,服务实例会注册到注册中心,注册中心监控实例的状态,服务客户只需要知道注册中心即可。

因为默认端口为 8080,应该是一台服务器一个实例?还是多个实例,然后运行在不同的端口?因为我想显式地设置实例中的请求处理线程数量为 CPU 数量*一个常量,所以我更倾向于一台服务器一个实例。

想听听大家的意见以及最佳实践是怎样的。
4167 次点击
所在节点    程序员
17 条回复
fub2020
2020-11-20 08:13:49 +08:00
首先你需要看看 flask 关于部署的文档
https://dormousehole.readthedocs.io/en/latest/deploying/wsgi-standalone.html#uwsgi
1.以 uWSGI 为例,你可以随意修改 app 端口
第二你需要看看 nginx 的文档
2.nginx 可以轻松实现应用的代理,负载均衡
ackfin01
2020-11-20 08:17:57 +08:00
一个实例一台服务器么。。多个实例放在一个服务器没有意义啊
d0m2o08
2020-11-20 08:30:21 +08:00
nginx 负载均衡?
liberty1900
2020-11-20 08:49:46 +08:00
负载均衡是把 load 分摊到多个服务器,以解决单台服务器计算资源和网络带宽不足的问题
把一个实例克隆多份放到一台服务器,硬件资源还是那些,和一个实例多线程没有根本的区别吧
yzbythesea
2020-11-20 08:54:52 +08:00
envoy + client load balancing
opengps
2020-11-20 08:55:48 +08:00
一台服务器一个实例,这是云架构弹性伸缩的思路,大型网站几乎必备,可以配合弹性伸缩服务自动增减服务器组的数量。这个用法欢迎跟我沟通下,我做上云支持业务,沟通下互相提升!
一台服务器上多个实例,这是微服务的用法,很多初期用户不多的网站的常见做法
kiddingU
2020-11-20 09:26:43 +08:00
k8s
XSugar
2020-11-20 09:27:46 +08:00
考虑下 k8s 、可以忽略机器层
THESDZ
2020-11-20 09:36:44 +08:00
k8s 太重了,要是没那么多需求,dockerswarm+portainer 就行
676529483
2020-11-20 09:47:41 +08:00
多个机器可以 k8s,一台机器可以 k3s,都不想搞允许重新发布可以 uwsgi/gunicorn 多 worker
pepesii
2020-11-20 09:56:16 +08:00
如果不用 k8s,就 nginx upstream 加上负载均衡策略和健康检测就好了
如果上 k8s,那就直接 ingress + deployment 搞定了
monkeyWie
2020-11-20 10:06:10 +08:00
k8s +1
salmon5
2020-11-20 13:50:43 +08:00
k8s+istio
tikazyq
2020-11-20 13:57:45 +08:00
nginx 一把梭
cheng6563
2020-11-20 14:08:19 +08:00
嫌 k8s 太重的可以用 k3s,dockerswarm 功能太残了。
机器少不用容器的话就可以 nginx 一把梭
wangritian
2020-11-20 14:29:18 +08:00
学一学 k8s,你的努力不会浪费
jaylee4869
2020-11-20 15:26:55 +08:00
用 Docker 去运行你的单个实例,用 Kubernetes 去编排 Docker 。
掌握核心的 Service 、Deployment ( Pod )、Ingress 等概念就能做基本的编排了,后续学 HPA 的时候可以根据 CPU 的毫核指标等动态的扩缩你的实例。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727353

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX