带你读《企业级云原生白皮书项目实战》——3.2.9 nginx controller 最佳调度部署实践

简介: 带你读《企业级云原生白皮书项目实战》——3.2.9 nginx controller 最佳调度部署实践

3.2.9 nginx controller 最佳调度部署实践


Nginx Ingress Controller的性能和稳定性

使用合适的副本数和资源限制


默认情况下,通过集群创建或从组件中心安装的Nginx Ingress Controller的副本数为2,您可以根据业务的实际需要进行调整。

在部署Nginx Ingress Controller时,请确保Nginx Ingress Controller分布在不同的节点上,避免不同Nginx Ingress Controller之间资源的抢占和单点故障。您也可以为其使用独占节点来保证性能与稳定性,具体操作,请参见使用独占节点保证Nginx Ingress性能与稳定性。同时建议您不要为Nginx Ingress Controller设定资源限制,避免OOM所带来的流量中断。如果确实有限制的需要,建议资源限制CPU不低于1000 Milicore(YAML配置里格式为1000m)和内存不低于2 GiB。

通过Nginx Ingress Controller代理非HTTP请求

Nginx Ingress Controller 默认使用HTTP协议连接到后端服务,但同时提供了对多种后端协议的支持,其中比较常用的协议有WebSocket、HTTPS和gRPC。关于支持的后端协议具体类型,请参见Backend Protocol。

WebSocket:Nginx Ingress Controller提供了对WebSocket的原生支持,您不需要进行任何配置即可转发WebSocket连接。如果您有持续较长的WebSocket连接,可以通过Annotation适当地调整后端连接的超时时间,防止业务因为超时而断连。关于调整的具体操作,请参见Custom timeouts。

HTTPS:针对使用HTTPS的后端服务,您可以在Ingress中添加nginx.ingress.kubernetes.io/backend-protocol:"HTTPS"的Annotation切换为HTTPS连接。

gRPC:gRPC仅支持通过TLS端口访问。因此,请确保您的业务通过Nginx Ingress Controller访问gRPC服务时,使用的是加密的TLS端口。关于配置gRPC的具体操作,请参见通过Ingress Controller实现gRPC服务访问。


部署高负载场景的Ingress Controller

•硬件选型在高并发场景下,Ingress对CPU资源和网络连接数占用都非常高,所以可选增强型ECS实例

系统选择Aliyun操作系统

阿里云上的操作系统已经默认优化了一些常见参数,其他还需要调优的系统参数主要包括系统最大Backlog数和可用端口的最大范围。系统参数调优后可以保证Nginx处理高并发请求的能力,以及在连接后端时不会因为端口耗尽而失败。

•K8s配置

•设置Ingress Pod独占节点资源

•设置CPU Policy为static。

•推荐调整ingress-controller 1 service对应的SLB规格为超强型(slb.s3.large)。

•推荐集群使用Terway网络插件及配置独占ENI。

•Ingress配置

•设置Ingress Pod为Guaranteed类型。

•设置nginx-ingress-controller1container的资源限制requests和limits:15 Core 20 GiB。

•设置initContainer init-sysctl的资源限制requests和limits:100 m 70 MiB。

•删除Ingress Pod中的podAntiAffiffiffinity,使一个节点上可调度两个Pod。

•调整Deployment Replicas数为新增节点数的2倍。

•设置ConfifigMap的worker-processes数为15(预留部分给系统使用)。

•调整ConfifigMap的keepalive链接最大请求数。

•关闭日志访问记录。

按照负载配置HPA进行自动扩容

一般情况下,Nginx Ingress Controller已经有足够的能力应对业务的突发流量。如果在高负载情况下仍不满足您的要求,也可以配置HPA对Ingress Controller进行扩容。具体操作,请参见容器水平伸缩(HPA)。

提升Nginx Ingress Controller的可观测性

使用SLS和ARMS Prometheus服务提升可观测性

Nginx Ingress Controller提供了基于SLS日志以及Prometheus的监控大盘,帮助您更好地了解您的业务的流量情况。

•SLS日志:

•创建集群时,如果您已经选中了启用日志组件及Ingress Dashboard,您就可以直接通过容器服务管理控制台网络 > 路由页面的Ingress概览中查看到基于SLS日志服务提供的大盘服务,您也可以直接在运维管理 > 日志中心查看到Nginx Ingress Controller产生的相关日志。具体操作,请参见Ingress访问日志分析与监控。

•如果您在创建时没有选中日志以及Ingress的相关选项,也可以手动配置日志收集组件和规则。具体操作,请参见Ingress访问日志分析与监控。关于监控的更多信息,请参见Ingress Dashboard监控。

•ARMS Prometheus监控:ARMS Prometheus监控可以在创建集群时选择安装,或者在创建集群后通过运维管理 > Prometheus监控安装或查看。具体操作,请参见ARMS Prometheus监控。说明 使用ARMS Prometheus监控时,请为集群中的Ingress资源添加host字段,否则在默认情况下,该Ingress的部分metrics将会缺失。您也可以通过在Nginx Ingress Controller的Deployment中修改controller启动参数,加入--metrics-per-host=false来解决该问题。

使用AHAS流量防护实现流控

Nginx Ingress Controller整合了阿里云AHAS流量防护的产品功能,可以实现更加精细的流量控制。当有请求流量时,您可以在AHAS控制台中查看Nginx网关请求的实时QPS和RT等数据。具体开启的操作步骤,请参见使用Ingress-sentinel实现流控

相关文章
|
6天前
|
机器学习/深度学习 算法 Cloud Native
利用机器学习进行情感分析:从理论到实践云原生技术在现代软件开发中的应用与挑战
【5月更文挑战第31天】本文旨在深入探讨机器学习在情感分析领域的应用。首先,我们将解释什么是情感分析以及为什么它在今天的世界中如此重要。然后,我们将详细介绍几种主要的机器学习算法,包括决策树、随机森林和神经网络,以及它们如何被用于情感分析。最后,我们将通过一个实际的案例研究来展示这些理论在实践中的应用。
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用构建高效云原生应用:云平台的选择与实践
【5月更文挑战第31天】 随着人工智能技术的飞速发展,深度学习已经成为推动计算机视觉进步的关键力量。特别是在图像识别领域,通过模仿人脑处理信息的方式,深度学习模型能够从大量数据中学习并识别复杂的图像模式。本文将探讨深度学习技术在自动驾驶系统中图像识别方面的应用,重点分析卷积神经网络(CNN)的结构与优化策略,以及如何通过这些技术提高自动驾驶车辆的环境感知能力。此外,文章还将讨论目前所面临的挑战和未来的研究方向。
|
8天前
|
运维 Cloud Native Devops
构建未来:云原生架构在现代企业中的应用与实践
【5月更文挑战第29天】 随着数字化转型的不断深入,企业对信息技术基础设施的需求愈发复杂和动态。云原生架构以其独特的设计理念和技术实践,成为支撑企业敏捷性、可扩展性和系统稳定性的关键。本文将深入探索云原生的核心组件,如容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps文化,并分析这些技术如何共同作用于企业的IT结构转型,以实现资源的最优化配置和应用的快速迭代。
|
9天前
|
运维 监控 负载均衡
云原生架构下的微服务治理实践
【5月更文挑战第28天】 在数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以实现业务敏捷性、可扩展性和弹性。云原生架构的核心在于微服务,它通过将复杂的应用程序分解成一组小的、松耦合的服务来提高系统的可管理性和可维护性。然而,随着服务数量的增加,如何有效治理这些服务成为了一个挑战。本文将探讨在云原生环境中,如何通过一系列最佳实践和工具来实现微服务的高效治理,包括服务发现、配置管理、负载均衡、故障处理等方面。
|
9天前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
9天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【5月更文挑战第28天】 随着数字化转型的加速,企业对于灵活、高效和可扩展的技术解决方案的需求日益增长。云原生技术以其独特的优势,如弹性伸缩、微服务架构和持续交付等,正在成为推动企业IT战略的关键力量。本文将深入探讨云原生架构的核心组件,包括容器化、服务网格以及无服务器计算,并分析这些技术如何帮助企业实现敏捷开发和自动化运维,最终提升业务创新能力和市场竞争力。
|
9天前
|
运维 监控 安全
【阿里云云原生专栏】云原生时代的 DevSecOps:阿里云的安全开发流程实践
【5月更文挑战第28天】在云原生时代,面对安全新挑战,阿里云践行DevSecOps理念,将安全贯穿于开发运维全过程。通过安全需求分析、设计、代码审查、测试及持续监控,确保云原生应用安全。例如,Kubernetes配置中加入安全设置。阿里云还提供多种安全服务和工具,如身份认证、云防火墙等,助力用户构建安全可靠的云应用,为数字化转型保驾护航。
68 4
|
10天前
|
Cloud Native 测试技术 持续交付
构建高效稳定的云原生应用部署策略云端防御:云计算环境中的网络安全与信息保护策略
【5月更文挑战第27天】 在快速迭代和持续交付成为企业软件开发新常态的今天,如何确保云原生应用的部署效率与稳定性是每个运维工程师面临的重要挑战。本文将探讨一种综合性部署策略,该策略结合了容器化技术、微服务架构、自动化测试以及持续集成/持续部署(CI/CD)流程,旨在为现代云原生应用提供一个可靠且高效的部署模式。通过分析传统部署模式的不足,并引入先进的技术和实践,我们的目标是降低部署风险,提高部署速度,同时确保产品质量和服务的稳定性。
|
10天前
|
Cloud Native 安全 持续交付
构建未来应用的基石:云原生架构的演进与实践
【5月更文挑战第27天】 在数字化转型的浪潮中,企业急需灵活、高效且可靠的解决方案以应对市场的快速变化。云原生架构应运而生,其不仅重塑了软件开发和运维的模式,也为企业提供了持续交付和自动化管理的可能性。本文将探讨云原生技术的发展历程,解析其关键组件如容器化、微服务及持续集成/持续部署(CI/CD),并分享如何在实践中有效利用这些技术来构建和维护高度可扩展的系统。
|
10天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构的演进与实践
【5月更文挑战第27天】 随着数字化转型的深入,企业对于敏捷性、可扩展性和资源优化的需求日益增长。云原生技术以其独特的优势应运而生,并迅速成为推动现代应用开发和运维模式变革的关键力量。本文将探讨云原生架构的核心组件、实施策略以及在不断变化的技术环境中如何保持其演进和创新。通过深入分析容器化、微服务、持续集成/持续部署(CI/CD)及DevOps文化等关键技术,揭示构建和维护高效、弹性和安全的云原生系统的最佳实践。