社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

入口nginx-每个主机创建一个入口?或者将多个主机合并为一个入口并重新加载?

Nick • 5 年前 • 1655 次点击  

我正在构建一个用户可以在其中构建Web应用程序的服务-这些应用程序将以虚拟DNS名称*.laska.io托管。

例如,如果Tom和Jerry都构建了一个应用程序,他们会将其托管在:

tom.laska.io
jerry.laska.io

现在,假设我有1000个用户。 我应该创造一个像这样的大入口吗?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: tom.laska.io
    http:
      paths:
      - backend:
          serviceName: nginx-service
          servicePort: 80
  - host: jerry.laska.io
    http:
      paths:
      - backend:
          serviceName: nginx-service
          servicePort: 80          
  ...and so forth             

我担心停机时间-例如,如果我有一个带有WebSockets的应用程序。同时,该文件将随着1000个用户的增加而变得庞大。重新加载入口是否足够快?另外,我应该如何重新加载它?

我想的第二个选择是 只需为每个Web应用程序创建一个入口 . 我担心的是,入口nginx能处理很多入口吗?或者这是反模式?

哪一个更好?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37992
 
1655 次点击  
文章 [ 2 ]  |  最新文章 5 年前
colidyre
Reply   •   1 楼
colidyre    6 年前

ingress 资源只是一条规则。最好把你的 进入 在不同的文件中重新资源,只需重新应用需要更改的资源。 应用资源时,我从未注意到停机时间。

Ryan Dawson
Reply   •   2 楼
Ryan Dawson    6 年前

您可以为每个Web应用程序创建一个入口资源。如果你搜索官方的公共图表报告,你会看到 many of the charts define an ingress resource within them . 每个应用程序定义自己的入口资源是正常的。

值得注意的是,入口资源只是路由规则的定义。(它不添加额外的入口控制器或任何其他额外的运行时组件。)因此应用程序定义自己的路由规则非常有意义。

您给出的示例在一个资源定义中具有所有入口路由。当您有几个相关的应用程序时,这种方法很容易掌握,并且很有意义,因为那时您可能希望看到它们的路由配置在一起。你也可以在 fanout ingress example in the kubernetes docs .

我看不到在不同的资源中单独定义规则的性能问题。入口控制器将 listen for new rules 只有在创建新规则时才更新其配置,这样读取资源就不会有问题。我希望组合的和分离的选项能够在nginx的后台设置相同的路由规则。

官方图表报告中最常见的模式是,每个应用程序的图表定义其入口资源,并通过values.yaml公开它,以便用户可以选择启用或自定义它。然后您可以组合多个图表,并在values.yaml的相关部分为每个图表配置规则。(这里是一个 example I've worked on that does this 也可以在自己的helm版本下分别部署每个应用程序。