• 请不要在回答技术问题时复制粘贴 AI 生成的内容
JasonLaw
V2EX  ›  程序员

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

  •  
  •   JasonLaw · Nov 20, 2020 via iPhone · 5365 views
    This topic created in 2175 days ago, the information mentioned may be changed or developed.
    我有一个使用 Flask 的 web 服务,运行端口为 8080 。

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

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

    想听听大家的意见以及最佳实践是怎样的。
    Supplement 1  ·  Nov 20, 2020
    谢谢大家的回复,我先去学习一下 Kubernetes 。
    Supplement 2  ·  Nov 28, 2020

    果然,学一学Kubernetes,你的努力不会浪费😄

    Kubernetes Tutorial for Beginners [Full Course in 4 Hours] - YouTube

    17 replies  •  2020-11-20 15:26:55 +08:00
    fub2020
    fub2020
    Nov 20, 2020 via iPhone
    1
    首先你需要看看 flask 关于部署的文档
    https://dormousehole.readthedocs.io/en/latest/deploying/wsgi-standalone.html#uwsgi
    1.以 uWSGI 为例,你可以随意修改 app 端口
    第二你需要看看 nginx 的文档
    2.nginx 可以轻松实现应用的代理,负载均衡
    ackfin01
    ackfin01
    Nov 20, 2020
    2
    一个实例一台服务器么。。多个实例放在一个服务器没有意义啊
    d0m2o08
    d0m2o08
    Nov 20, 2020
    3
    nginx 负载均衡?
    35aZ4P8mT576683q
    35aZ4P8mT576683q
    Nov 20, 2020 via Android
    4
    负载均衡是把 load 分摊到多个服务器,以解决单台服务器计算资源和网络带宽不足的问题
    把一个实例克隆多份放到一台服务器,硬件资源还是那些,和一个实例多线程没有根本的区别吧
    yzbythesea
    yzbythesea
    Nov 20, 2020
    5
    envoy + client load balancing
    opengps
    opengps
    Nov 20, 2020 via Android
    6
    一台服务器一个实例,这是云架构弹性伸缩的思路,大型网站几乎必备,可以配合弹性伸缩服务自动增减服务器组的数量。这个用法欢迎跟我沟通下,我做上云支持业务,沟通下互相提升!
    一台服务器上多个实例,这是微服务的用法,很多初期用户不多的网站的常见做法
    kiddingU
    kiddingU
    Nov 20, 2020
    7
    k8s
    XSugar
    XSugar
    Nov 20, 2020 via iPhone
    8
    考虑下 k8s 、可以忽略机器层
    THESDZ
    THESDZ
    Nov 20, 2020
    9
    k8s 太重了,要是没那么多需求,dockerswarm+portainer 就行
    676529483
    676529483
    Nov 20, 2020
    10
    多个机器可以 k8s,一台机器可以 k3s,都不想搞允许重新发布可以 uwsgi/gunicorn 多 worker
    pepesii
    pepesii
    Nov 20, 2020
    11
    如果不用 k8s,就 nginx upstream 加上负载均衡策略和健康检测就好了
    如果上 k8s,那就直接 ingress + deployment 搞定了
    monkeyWie
    monkeyWie
    Nov 20, 2020
    12
    k8s +1
    salmon5
    salmon5
    Nov 20, 2020
    13
    k8s+istio
    tikazyq
    tikazyq
    Nov 20, 2020
    14
    nginx 一把梭
    cheng6563
    cheng6563
    Nov 20, 2020
    15
    嫌 k8s 太重的可以用 k3s,dockerswarm 功能太残了。
    机器少不用容器的话就可以 nginx 一把梭
    WaldenHorizon
    WaldenHorizon
    Nov 20, 2020
    16
    学一学 k8s,你的努力不会浪费
    lavvrence
    lavvrence
    Nov 20, 2020
    17
    用 Docker 去运行你的单个实例,用 Kubernetes 去编排 Docker 。
    掌握核心的 Service 、Deployment ( Pod )、Ingress 等概念就能做基本的编排了,后续学 HPA 的时候可以根据 CPU 的毫核指标等动态的扩缩你的实例。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1514 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 23:25 · PVG 07:25 · LAX 15:25 · JFK 18:25
    ♥ Do have faith in what you're doing.