深入理解 Nginx 与 Kong 的配置与实践

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 在微服务架构中,Nginx 用于配置负载均衡,如示例所示,定义上游`pay-service`包含不同权重的服务节点。Kong API 网关则通过service和route进行服务管理和路由,与Nginx的upstream和location类似。通过Kong的命令行接口,可以创建upstream、target、service和route,实现对后端服务的负载均衡和请求管理。Nginx和Kong协同工作,提供高效、灵活的API管理和流量控制。

在现代的微服务架构中,服务之间的通信和负载坐标成为了关键环节。这篇文章将深入探讨如何通过 Nginx 配置实现服务的负载均衡,同时如何利用 Kong API 网关管理微服务,包括但不限于服务发现、路由、和负载坐标。我们将使用具体代码示例,确保即便是编程新手也能轻松领悟。

一、理解 Nginx 配置

Nginx 是一个高性能的 HTTP 和反向代理服务器,也被广泛用于负载均衡。首先,让我们来看一个基本的 Nginx 配置例子,这将帮助我们理解如何实现负载均衡。

Nginx 配置示例

upstream pay-service {
   
   
    server 127.0.0.1:5501 weight=2;
    server 127.0.0.1:5502 weight=4;
    server 127.0.0.1:5503 weight=8;
}

server {
   
   
    listen 80;
    server_name pay-service.xxx.com;

    location /paymanger {
   
   
        proxy_redirect             off;
        proxy_set_header           Host             $http_host;
        proxy_set_header           X-Real-IP        $remote_addr;
        proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        proxy_pass                 http://pay-service;
    }   
}

上面的配置定义了一个名为 pay-service 的 upstream,它包括三个后端服务节点,通过不同的权重分配处理请求。这里的权重意味着 127.0.0.1:5503 的请求处理能力是 127.0.0.1:5501 的四倍。

核心概念解释:

  • upstream: 用来定义一组后端服务节点。
  • server: 监听客户端请求的配置。
  • location: 匹配请求URI,并定义处理请求的配置。
  • proxy_pass: 指定请求转发的后端服务群组。
Kong 组件 说明
service service 对应服务,可以直接指向一个 API 服务节点(host 参数设置为 ip + port),也可以指定一个 upstream 实现负载均衡。简单来说,服务用于映射被转发的后端 API 的节点集合。 对应的就是以上的 proxy_pass http://pay-service; 这一行配置
route route 对应路由,它负责匹配实际的请求,映射到 service 中。 对应的就是以上的 /paymanger 配置
upstream upstream 对应一组 API 节点,实现负载均衡
target target 对应一个 API 节点 对应的就是以上的 127.0.0.1:5501 127.0.0.1:5502 127.0.0.1:5503 这三个节点

请求示例图

二、使用 Kong 进行服务管理

Kong 是一个云原生、快速、可扩展的微服务抽象层(API 网关),用于管理微服务的请求如路由、身份验证、监控等。

Kong 组件简介

  • service: 映射后端 API 节点集合。
  • route: 匹配并映射到 service。
  • upstream: 一组 API 节点,用于负载均衡。
  • target: 一个 API 节点。

创建 upstream 和 target

创建 upstream

curl -X POST http://127.0.0.1:8001/upstreams  --data "name=pay-service"
curl http://127.0.0.1:8001/upstreams

创建 target

curl -X POST http://127.0.0.1:8001/upstreams/pay-service/targets  \
--data "target=127.0.0.1:5501" \
--data "weight=2"

curl -X POST http://127.0.0.1:8001/upstreams/pay-service/targets  \
--data "target=127.0.0.1:5502" \
--data "weight=4"

curl -X POST http://127.0.0.1:8001/upstreams/pay-service/targets  \
--data "target=127.0.0.1:5503" \
--d...

以上命令将创建三个带有不同权重的 target,对应到之前的 Nginx 配置的三个服务节点。

创建 service 和 route

# 创建 service
curl -X POST http://127.0.0.1:8001/services  \
--data "name=payment-service" \
--data "host=pay-service"

# 创建 service 对应的 route
curl -X POST http://127.0.0.1:8001/services/payment-service/routes  \
--data "name=payment-service-route" \
--data "paths[]=/paymanger"

通过上述配置,当用户请求 /paymanger 时,Kong 会映射这个请求到 payment-service,并通过 upstream pay-service 实现负载均衡。

结语

Nginx 和 Kong 在现代微服务架构中起到了至关重要的角色。Nginx 擅长处理静态内容、负载均衡和反向代理,而 Kong 提供了一个强大的 API 管理平台,让你可以更容易地管理和监控你的 API。希望这篇文章能够帮助你深入理解它们的工作原理和配置方法。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
23天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
30天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
247 0
|
3天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
16天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
10天前
|
应用服务中间件 网络安全 PHP
八个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
Nginx 是一个高效的 HTTP 服务器和反向代理,擅长处理静态资源、负载均衡和网关代理等任务。其配置主要通过 `nginx.conf` 文件完成,但复杂设置可能导致错误。本文介绍了几个开源的 Nginx 可视化配置系统,如 Nginx UI、VeryNginx、OpenPanel、Ajenti、Schenkd nginx-ui、EasyEngine、CapRover 和 NGINX Agent,帮助简化和安全地管理 Nginx 实例。
|
20天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
36 7
|
29天前
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。
|
1月前
|
缓存 前端开发 JavaScript
一、nginx配置
一、nginx配置
152 1
|
30天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
138 0
|
1月前
|
缓存 监控 负载均衡
nginx相关配置及高并发优化
Nginx的高并发优化是一个综合性的过程,需要根据具体的业务场景和硬件资源量身定制。以上配置只是基础,实际应用中还需根据服务器监控数据进行持续调整和优化。例如,利用工具如ab(Apache Benchmarks)进行压力测试,监控CPU、内存、网络和磁盘I/O等资源使用情况,确保配置的有效性和服务的稳定性。
107 0