微服务–Nginx网关·进程机制·限流熔断·性能优化·动态负载·高可用

本文探讨了为何需要网关,并深入讲解了Nginx作为网关的角色,包括其特性、进程机制、配置安装、性能优化和高可用性设置。Nginx以其高性能、反向代理、负载均衡等功能,成为微服务架构中的关键组件。文章介绍了Nginx的主进程与工作进程,以及如何通过重载配置实现平滑升级。此外,还涵盖了Nginx的限流与熔断策略,以及如何通过Keepalived实现高可用性。
摘要由CSDN通过智能技术生成

为什么需要网关

通常后台提供了不同的应用服务,甚至是集群,每种服务每个服务,需要维护不同的请求地址,甚至服务认证、跨域等动作,管理起来比较麻烦。因此,需要一个网关,介于客户端和应用服务之间,所有的外部请求都会先经过网关,网关再把请求分发到目标服务。网关对外提供唯一请求入口,作为对外联系的窗口,易于管理和维护请求。

一、Nginx 概述

Nginx 不仅是一个高性能的Web服务器,还具备访问代理、负载均衡、内容缓存等功能,用于客户端访问流量到后台应用服务器负载均衡和请求转发。其基于模块化的代码架构及可与其它有效集成的可编程特性,使其具有强大的扩展能力。Nginx以资源消耗低、高稳定、高性能的并发处理能力著称。

1.1 Nginx 特性

访问代理:
Nginx 可以通过访问路径、URL 关键字、客户端 IP等多种手段实现访问路由分配。

反向代理:
将接收到的请求再转到后端的目标应用服务器,并把响应数据返回给客户端。支持目前绝大多数的网络协议:HTTP/FastCGI/RPC/UDP/TCP等。

负载均衡:
通过自身的 upstream 模块支持多种负载均衡算法,使后端服务器可以非常方便地进行横向扩展,以应对高并发。

内容缓存:
Nginx支持静态站点和后端分离,可以把静态内容缓存起来,也可以将后端变化不大的响应结果缓存起来,使整体实现了更高速的相应能力。

可扩展性:
可定制的模块化架构方式,更多的语言(C/Perl/JavaScript/Lua)支持开发第三方模块并引入,增强可编程及扩展能力。

1.2 Nginx 进程

首先,进程是CPU管理的运行单元,CPU的单个核心也可以运行多个进程,只不过是交替运行着各个进程,称为时间片,这种方式速度很快,以至于看上去像在同时运行;多核CPU就能同时运行更多的进程。

Nginx是由多个进程运行,一个主进程Master和多个子进程Worker,主进程负责管理子进程,如:重启/重载/创建/销毁等,子进程负责处理具体的请求等业务功能。进程间共享内存数据,更多的进程带来更好的处理能力。

Nginx 进程运行示意图:

1.3 Nginx 重载

Nginx支持配置信息的重载,并以最新的配置内容运行,当Nginx在高速运行的时候,如何做到平稳过渡呢?

相关命令:nginx -s reload

重载过程:
Nginx Master process 负责 fork 出一个新的 Worker process,最新的Worker使用新的配置信息运行,这时候就销毁一个旧的worker,此时,Worker有新旧之分,新Worker用新配置运行,旧Worker依然用旧配置运行,Master继续fork出新的Worker。。。以同样的方式持续替换旧Worker,直到全部替换完成。整个过程中,Nginx 并没有停止运行,丝滑过渡。

二、安装配置

2.1 编译安装

安装前提:

yum install gcc -y                # C语言编译器
yum install pcre pcre-devel -y    # PCRE Library
yum install zlib zlib-devel -y    # zlib Library

编译安装:

# 进入解压后的目录中 编译安装 [指定用户/组] [--with-追加自带模块名称] 
./configure --prefix=/usr/local/nginx [--user=www --group=www] [--with-http_gzip_static_module]
make && make install

2.2 启动实例

进入主进程目录:/usr/local/nginx/bin

nginx            # 启动
nginx -s stop    # 停止,立即
nginx -s quit    # 退出,处理完现有任务后
nginx -s reopen  # 重启
nginx -s reload  # 重载配置,交替更新工作进程

docker 运行 nginx 很简单:

拉取镜像:docker pull nginx
启动容器:docker run -d --name=ngx-a -p 80:80 nginx

浏览器打开主机IP显示 NGINX 欢迎页面。

影响 Nginx 的系统关联项

Firewall/UFW 防火墙:端口的开放
SELinux 权限的限制:请求后端的权限

2.3 配置文件结构

nginx 的配置文件默认存于 /etc/nginx/nginx.conf,其中通过 include 引入其它目录子配置文件。

  • 全局块:针对 Nginx 实例的设置,资源及事件的设定。
  • HTTP:从 Client 到 Nginx 的请求设置,请求过程中要处理的各项配置;
  • Upstream:代理转发的下个目的地列表,后端服务组地址列表,连接与负载均衡的设定。
  • Server:从 Nginx 到 Service 的设置,通常对应前后端某种服务或组;限制设定,代理设定,错误机制等。
  • Location:路由匹配转发通讯,重定向等。

配置模板示例

###### 全局块
worker_processes    auto;                   # 工作进程数
error_log  /var/log/nginx/error.log notice; # 错误级别记录

events {
    worker_connections  1024;               # 单个工作进程,可承载的最大连接数
}

http {
    ###### MIME 配置
    include       /etc/nginx/mime.types;    # 文件扩展名与文件类型映射表
    default_type  application/octet-stream; # mime.types 不包含时的默认设置
    
    ###### 请求日志配置
    log
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值