Nginx部署多web进程

news2024/10/7 16:27:30

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值不具备负载均衡性,可能导致不同节点的请求频率差异很大。严格来说,这种算法不算是负载均衡算法。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS鸿蒙应用开发——ArkUI组件封装最佳实践

文章目录 背景与案例描述静态注册属性-封装UI组件动态注册属性-封装UI组件总结 背景与案例描述 在应用开发中,对一些频繁使用的业务UI组件常常会进行一层封装,提取到公共基础库中实现组件的复用,避免类似的逻辑重复编写,减少代码…

【前端技术】 ES6 介绍及常用语法说明

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

LabVIEW缝缺陷图像标注库

LabVIEW缝缺陷图像标注库 开发了一个基于LabVIEW平台构建的船舶焊缝缺陷图像标注库。该库旨在通过高效和简洁的方式处理和标注船舶焊缝缺陷图像,提高缺陷识别的准确性和效率,进而保障船舶的结构安全。 项目背景 在船舶制造过程中,焊接质量…

递归【1】(全排列andN皇后)(排列型回溯)

全排列 分治与递归 递归是实现分治的一种方法 思想思路 题目&#xff1a; 全排列i 我这样直接输出会多输出一个空行&#xff08;最后一个\n&#xff09; #include<stdio.h>using namespace std; const int maxn10; int an[maxn]; int n; bool hash[maxn]{0}; int c0…

STM32-15-DMA

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU STM32-14-FSMC_LCD 文章目录 STM…

【Java面试】十七、并发篇(上)

文章目录 1、synchronized关键字的底层原理&#xff1a;Monitor2、synchronized相关2.1 为什么说synchronized是重量级锁2.2 synchronized锁升级之偏向锁2.3 synchronized锁升级之轻量级锁 3、Java内存模型JMM4、CAS4.1 CAS流程4.2 CAS底层实现 5、volatile关键字的理解5.1 可见…

区块链(Blockchain)调查研究(一)

文章目录 1. 区块链是什么&#xff1f;2. 区块链分类和特点3. 区块链核心关键技术3.1 共识机制3.2 密码学技术3.4 分布式存储3.5 智能合约 4. 区块链未来发展趋势5. 区块链能做什么、不能做什么&#xff1f;5.1 第一部分5.2 第二部分5.3 第三部分&#xff08;结论&#xff09; …

八爪鱼现金流-019-个人对接支付,个人网站支付解决方案

背景&#xff1a; 随着用户量不断增加&#xff0c;服务器成本越来越大。想着实现会员制回点服务器成本。 业务场景分析&#xff1a; 用户在站点上付款 -----> 我监听到付款金额 -----> 给用户开通会员 调研&#xff1a; 支付宝和微信官方支付接口&#xff1a;基本都需…

MOS管十大品牌

MOS管十大品牌-场效应管品牌排行-MOS管品牌-Maigoo品牌榜

统计学研硕大数据统计练手11

统计学论文练手作业 题目AI绘图仅供欣赏 题目 2024年的《政府工作报告》中提出“深化大数据、人工智能等研发应用,开展“人工智能+”行动,打造具有国际竞争力的数字产业集群”,请同学们结合自己工作的所在行业或领域谈一谈大数据技术在人工智能时代下的应用现状、存在的问…

VSC++: 民意调查比例法

void 民意调查比例法() {//缘由https://bbs.csdn.net/topics/396521294?page1#post-411408461从题目描述看&#xff1a;902/3~300.7&#xff0c;1498/5~299.6也就是大约求2个数的公约数&#xff0c;并使得这个公约数尽量求出最小误差&#xff1f;且商小于某值。int a 0, aa …

JS(JavaScript)的引用方式介绍与代码演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Mamba v2诞生:3 SMA与Mamba-2

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

从品牌的角度看老字号五芳斋如何“粽”出年轻味?

端午划着龙舟的浆又来到了我们身边&#xff0c;咸鸭蛋和粽子已经裹上精美的包装在货架上等待着它们的“有缘人”&#xff0c;其实长期以来&#xff0c;说起吃粽子除了“甜咸口”的辩论赛&#xff0c;貌似在产品上却并没有太多的创新&#xff0c;但近几年随着消费市场的不断创新…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月9日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年6月9日 星期日 农历五月初四 1、 人社部&#xff1a;个人养老金开户人数已超6000万&#xff0c;其中31岁至40岁的中高收入人群是开户、缴费和购买产品的主力军。 2、 医保局刊文&#xff1a;研究显示集采仿制药替代原研药…

网关API(SpringCloudGateway)如何自定义Filter

1.前言 SpringCloud 虽然给我们提供了很多过滤器&#xff0c;但是这些过滤器功能都是固定的&#xff0c;无法满足用户的各式各样的需求。因此SpringCloud提供了过滤器的扩展功能自定过滤器。 开发者可以根据自己的业务需求自定义过滤器。 2. 自定义 GatewayFilter(局部过滤器)…

LangChain4j实战

基础 LangChain4j模型适配: Provider Native Image Sync Completion Streaming Completion Embedding Image Generation Scoring Function Calling OpenAI ✅ ✅ ✅ ✅ ✅ ✅ Azure OpenAI ✅ ✅ ✅ ✅ ✅ Hugging Face ✅ ✅ Amazon Bedrock ✅ ✅…

STM32中ADC在cubemx基础配置界面介绍

ADCx的引脚,对应的不同I/O口&#xff0c;可以复用。 Temperature :温度传感器通道。 Vrefint :内部参照电压。 Conversion Trigger: 转换触发器。 IN0 至 IN15,是1ADC1的16个外部通道。本示例中输出连接的是ADC2的IN5通道&#xff0c;所以只勾选IN5.Temperature Sensor Cha…

【C++】:模板初阶和STL简介

目录 一&#xff0c;泛型编程二&#xff0c;函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三&#xff0c;类模板3.1 类模板的定义格式3.2 类模板的实例化 四&#xff0c;STL简介&#xff08;了解&#xff09;4.1 什…

将字符串str1复制为字符串str2

定义两个字符数组str1和str2&#xff0c;再设两个指针变量p1和p2&#xff0c;分别指向两个字符数组中的有关字符&#xff0c;通过改变指针变量的值使它们指向字符串中的不同的字符&#xff0c;以实现字符的复制。编写程序&#xff1a; 运行程序&#xff1a; 程序分析&#xff1…