欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Nginx部署多web进程

Nginx部署多web进程

2025/2/13 22:48:13 来源:https://blog.csdn.net/littleschemer/article/details/139203154  浏览:    关键词:Nginx部署多web进程

1、nginx介绍

Nginx是一个高性能的、开源的、跨平台的Web服务器和反向代理服务器。它是由俄罗斯的程序员Igor Sysoev开发的,并于2004年首次公开发布。

Nginx的特点包括:

  1. 高性能:Nginx使用事件驱动的架构,能够处理大量的并发连接,同时保持低的内存消耗。
  2. 轻量级:Nginx的核心占用很小的内存空间,并且可以扩展到更大的服务器集群。
  3. 反向代理和负载均衡:Nginx可以作为反向代理服务器,将请求转发给后端的多个服务器,实现负载均衡和高可用性。
  4. 静态资源处理:Nginx可以直接处理静态文件,如图片、CSS和JavaScript文件,不需要转发给后端应用服务器。
  5. 动态模块扩展:Nginx支持通过动态模块扩展功能,可以添加各种额外的功能,如缓存、日志等。
  6. 可靠性和稳定性:Nginx在设计上考虑到了高可用性和故障恢复,在处理请求时不会中断正在进行的连接。
  7. 跨平台:Nginx可以在多个操作系统平台上运行,包括Linux、Windows、MacOS等。

Nginx被广泛应用于互联网公司、大型网站和应用程序中,它的高性能、稳定性和灵活性使得它成为了一个流行的Web服务器和反向代理服务器。

2、nginx安装及基本命令

2.1.nginx安装命令

  • 对于Ubuntu/Debian系统:

sudo apt update

sudo apt install nginx

  • 对于CentOS/RHEL系统:

sudo yum update

sudo yum install nginx

2.2.nginx基本命令

2.2.1.查看nginx运行状态

sudo systemctl status nginx

 2.2.2.启动nginx

2.2.3.停止nginx

 2.2.4.开机自启nginx

2.2.5.热更新配置

这个功能非常好用,试想一下,在生产环境发生了无法热修复的bug需要重启,我们可以临时屏蔽某个节点,等修完bug重启之后再恢复节点。这种利用“节点切换”实现不停服修复bug ,绝对是一把运维利器

具体命令也非常简单。

sudo systemctl reload nginx

3、部署多节点

3.1.多节点配置

一台服务器不管硬件性能多强悍,程序优化多完善,能承载的访问量终归是有限的。一台服务不够,就部署多几个节点,只要保证节点可水平拓展,数据库也能水平拓展,nginx网关也能水平扩展,就可以轻易部署分布式集群服务。利用多节点部署服务集群,这在特定的业务需求下,是最简易的分布式服务了。

nginx部署多节点也是非常简单。

编辑/etc/nginx/nginx.conf文件,在upstream配置服务器的节点信息,在listen配置对外暴露的http端口。如此,外界通过8080端口发送到nginx的请求都会被分配到对应的服务节点。

http {upstream web_service {#根据ip进行映射,保证同一个用户所有请求到映射到同一台web服务ip_hash;server 192.168.0.121:8081;server 192.168.0.121:8082;}server {listen 8080;location / {proxy_pass http://web_service;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

如果需要利用“节点切换”进行修复bug,可临时屏蔽以上的某些节点,再通过 reload 命令进行切换。

3.2.负载轮询算法

nginx的负载轮询算法指的是nginx在将请求分发到多个后端服务器时,按照轮询的方式依次将请求分发给每个服务器。主要是负载算法有以下:

  • 轮询(Round Robin):将请求按照轮询的方式依次分发给每个后端服务器。 配置方法:在upstream块中使用"round-robin"。

  • 加权轮询(Weighted Round Robin):为每个后端服务器分配不同的权重,根据权重比例来分发请求。 配置方法:在upstream块中使用"weight"参数设置服务器的权重。

  • IP哈希(IP Hash):根据客户端的IP地址进行哈希计算,将同一个IP的请求发送给同一个后端服务器。 配置方法:在upstream块中使用"ip_hash"。

  • 最少连接(Least Connections):将请求分发给当前连接数最少的后端服务器。 配置方法:在upstream块中使用"least_conn"。

  • 加权最少连接(Weighted Least Connections):根据后端服务器的连接数和权重来分发请求,连接数越多,权重越低。 配置方法:在upstream块中使用"least_conn"和"weight"。

  • 随机(Random):随机选择一个后端服务器处理请求。 配置方法:在upstream块中使用"random"。

本文选择的是IP哈希,具体是因为对于用户请求,会同时涉及到对数据的增删查改,为了保持用户的会话状态,需要将同一个用户的请求映射到同一台物理机。当然,由于ip生成的hash值不具备负载均衡性,可能导致不同节点的请求频率差异很大。严格来说,这种算法不算是负载均衡算法。

如果服务是完全无状态的,或者提供的是静态数据,那最好还是选择其他的负载均衡算法。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com