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

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

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

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

相关文章

人月神话纪念珍藏版系列文章一:焦油坑

前言: 在史前文明,没有什么场景比巨兽们在焦油坑中垂死挣扎的场景更让人震撼。恐龙、猛犸象在焦油坑中挣扎。他们挣扎的越猛烈,焦油就缠绕的越紧,没有那种猛兽足够强壮或者具有足够的技巧,能够挣脱出来,它们最后都淹没在坑中。 最近几十年的大型系统编程就犹如这样的一个…

百度高级项目经理洪刘生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 百度在线网络技术(北京)有限公司IDG智能驾驶业务部高级项目经理洪刘生先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“互联网PMO赋能战略项目集管理实战分享”。大会将于6月29-30日在北京举办…

clickHouse实现表自增ID的代码及相关逻辑

一、介绍 clickHourse表自增ID主要时两种方式: insert数据时,手动维护一个全局ID给表设置uuid字段,使用 generateUUIDv4()函数赋予默认值。 这里的话推荐手动维护一个全局的自增ID,不推荐使用UUID的方式,主要原因有…

python数据分析-ZET财务数据分析

一、公司背景 中兴通讯股份有限公司是一家总部位于中国深圳的跨国公司,致力于为全球客户提供通信设备和解决方案。公司成立于1985年,自成立以来一直致力于为客户提供创新的通信技术和服务。中兴通讯的业务涵盖多个领域,包括但不限于高端路由…

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

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

idea打开hierarchy面板

hierarchy:查看类层级关系图 不同版本的IDEA的快捷键不一样,同时如果修改了IDEA快捷键,也可能会不一样,具体查看可通过IDEA上方的Navigate来查看navigate--Type Hierarchy,就可以看见其快捷键了,我的快捷键…

(四)React组件、useState

1. 组件 1.1 组件是什么 概念:一个组件就是用户界面的一部分,它可以有自己的逻辑和外观,组件之间可以相互嵌套,也可以复用多次。 组件化开发可以让开发者像搭积木一样构建一个完整的庞大应用 1.2 React组件 在React中&#xf…

less---20-28

less-20 这关登陆成功会显示cookie,所以抓包在cookie处注入 less-21 这关登陆成功会显示cookie,所以抓包在cookie处注入,发现不成功,查看代码发现被编码 先对注入语句进行base64编码再注入 less-22 闭合字符",同21关 less-23 这关查看代码发现…

Java现在还适合入门吗?

计算机技术在当今的社会,已经变得越来越热,充斥着我们生活的方方面面。人们的工作或是休闲,离不开互联网和电脑,这既受益于各类软件的诞生,也与时下的技术息息相关。Java作为编程界赫赫有名的语言,在最近几…

八爪鱼现金流-018,持续打磨

八爪鱼,被动收入,财务自由,现金流,现金流游戏,各银行利率,money,资产负债表,财务自由,资产管理,个人理财,管理个人资产,理财,打造被动收入,躺着赚钱,让钱为我打工

力扣2444.统计定界子数组的数目

力扣2444.统计定界子数组的数目 观察到不满足条件的数 可以作为天然的分割线 因此在枚举右端点的过程中 预处理minK,maxK和分割线上一次出现的下标 res min(min_i,max_i) - i0; 但是因为可能在到下个区段时 min_i和max_i尚未更新 导致结果为负数 所以要跟0再取一…

LabVIEW在高校中的应用

LabVIEW 作为一款功能强大的图形化编程工具,在高校中有广泛的应用。它不仅用于教学实验,还广泛应用于科研项目和工程训练。本文将从教学、科研、实验室管理和学生技能培养等多个角度,详细分析LabVIEW在高校中的应用。 教学应用 课程设计 自动…

深入Llama2:掌握未来语言模型的秘密

Llama2是一个基于Transformer架构的大型语言模型,它旨在处理和理解大规模的文本数据。作为技术人员,了解Llama2的工作原理、模型结构和训练方法对于有效利用该模型至关重要。本文将详细介绍Llama2的基本概念、主要作用、使用方法及注意事项。 一、简介 …

多模态vlm综述:An Introduction to Vision-Language Modeling 论文解读

目录 1、基于对比学习的VLMs 1.1 CLIP 2、基于mask的VLMs 2.1 FLAVA 2.2 MaskVLM 2.3 关于VLM目标的信息理论视角 3、基于生成的VLM 3.1 学习文本生成器的例子: 3.2 多模态生成模型的示例: 3.3 使用生成的文本到图像模型进行下游视觉语言任务 4、 基于预训练主干网…

170.二叉树:平衡二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

第103天: 权限提升-Linux 系统辅助项目脏牛Dirty内核漏洞SUIDGUID

项目下载地址 综合类探针: https://github.com/liamg/traitor 自动化提权: https://github.com/AlessandroZ/BeRoot 信息收集: https://github.com/rebootuser/LinEnum https://github.com/sleventyeleven/linuxprivchecker 漏洞探针&#xf…

【wiki知识库】06.文档管理页面的添加--前端Vue部分

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、🐻前端Vue模块的改造 BUG修改 1.wangeditor无法展示问题 2.弹窗无法正常关闭问题 2.1 添加admin-doc.vue 2.1.1 点击admin-ebook中的路由跳转到admin-doc 2.2.2 进入…

Rust-06-所有权

所有权(系统)是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收即可保障内存安全,下面是所有权以及相关功能:借用(borrowing)、slice 以及 Rust 如何在内存中布局数据。 通过所有权系统管理内…

TCP/IP协议分析实验:通过一次下载任务抓包分析

TCP/IP协议分析 一、实验简介 本实验主要讲解TCP/IP协议的应用,通过一次下载任务,抓取TCP/IP数据报文,对TCP连接和断开的过程进行分析,查看TCP“三次握手”和“四次挥手”的数据报文,并对其进行简单的分析。 二、实…

数据结构:旋转数组

方法1 &#xff08;三次逆置法&#xff09;&#xff1a; void reverse(int* nums, int start, int end) {while (start < end) {int temp nums[start];nums[start] nums[end];nums[end] temp;start;end--;} }void rotate(int* nums, int numsSize, int k) {k k % numsS…