nginx服务---负载均衡、平滑升级

news2024/12/28 4:18:30

一、nginx服务配置属性监控、nginx代理服务和nginx的IP访客黑名单

1.属性监控

通过在编译时加入 nginx 的 ngx_http_stub_status_module 模块可以实时监控以下基本的指标:

部署过程:

 在配置文件/usr/local/nginx/conf/nginx.conf中的server模块中,增加一个location模块。

[root@staticserver nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf
 48         location /status {
 49                 stub_status     on;
 50                 access_log      off;
 51         }
[root@staticserver nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload   #重新加载

浏览器验证:

 

2.nginx代理服务

代理:将当前的主机做前端服务器,用于接收和响应客户端,代理另外一台主机。

1.基础环境配置

1.克隆一台新主机做dynamicserver动态服务器,修改ip地址和主机名称

[root@staticserver ~]# sh initserver.sh
请输入指定ip地址:192.168.1.20
请输入主机名称dynamicserver

2.修改index.html文件,并且发布任务

[root@dynamicserver ~]# echo "this is java web server" > /usr/local/nginx/html/index.html

3.启动nginx服务

[root@dynamicserver ~]# /usr/local/nginx/sbin/nginx

4.使用curl访问当前项目

[root@dynamicserver ~]# curl localhost
this is java web server

5.浏览器验证

 

 2.反向代理过程

使用30主机代理20主机,当用户访问30主机的时候,30主机不响应,而是由20主机相应。

1.修改配置文件

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

2.重新加载

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

3.浏览器验证:输入30主机出现的是20主机的网页内容

现在的静态服务器实际上就是代理服务器,nginx代理其他服务的时候,不需要对方同意,更加方便了模块化操作。

3.nginx的IP访客黑名单

设置服务器允许哪些主机访问,不允许哪些主机访问

1.环境准备

1.克隆一台新主机,IP地址:192.168.1.40  名称:allowdeny

运行脚本:

[root@localhost ~]# source initserver.sh
请输入指定ip地址:192.168.1.40
请输入主机名称allowdeny

2.从30主机获得nginx安装包

[root@allowdeny ~]# scp -r root@192.168.1.30:~/nginx-1.26.1.tar.gz ./
The authenticity of host '192.168.1.30 (192.168.1.30)' can't be established.
ECDSA key fingerprint is SHA256:UHAU+sXTEKYh1El+VOBaor4NjGsmwOi0Cz/Iwdcf5OQ.
ECDSA key fingerprint is MD5:ef:a6:e8:1a:c3:ce:7e:f4:c9:4e:a0:a5:4e:f6:a1:2b
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.30' (ECDSA) to the list of known hosts.
root@192.168.1.30's password:
nginx-1.26.1.tar.gz                                    100% 1216KB  52.3MB/s   00:00   

3.下载依赖包并解压

[root@allowdeny ~]# yum -y install gcc gcc-c++ make pcre-devel openssl-devel
[root@allowdeny nginx-1.26.1]# tar -zxvf nginx-1.26.1.tar.gz

4.进行预编译和编译安装

[root@allowdeny nginx-1.26.1]# cd nginx-1.26.1/
[root@allowdeny nginx-1.26.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
[root@allowdeny nginx-1.26.1]# make && make install

5.创建账户

[root@allowdeny nginx-1.26.1]# useradd -s /bin/nologin -M nginx

6.启动nginx服务

[root@allowdeny nginx-1.26.1]# /usr/local/nginx/sbin/nginx

7.发布项目并验证

[root@allowdeny nginx-1.26.1]# echo "your are lickly" > /usr/local/nginx/html/index.html
[root@allowdeny nginx-1.26.1]# curl localhost
your are lickly

 20主机也可以访问到:

[root@dynamicserver ~]# curl 192.168.1.40
your are lickly

 30主机也可以:

[root@staticserver ~]# curl 192.168.1.40
your are lickly
2.设置黑名单,白名单

设置除开20主机可以访问,其他都不可以访问

[root@allowdeny nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf
 ...
server {
...
        charset  utf-8;
        allow    192.168.1.20;
        deny     192.168.1.0/24;
        deny     all;
...
}

重新加载

[root@allowdeny nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload

验证:

20主机可以访问:

[root@dynamicserver ~]# curl 192.168.1.40
your are lickly

30主机不可以访问:

[root@staticserver ~]# curl 192.168.1.40
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>

40主机不可以访问:

[root@allowdeny nginx-1.26.1]# curl localhost
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>

初始安装nginx的时候logs日志文件

[root@allowdeny nginx-1.26.1]# cd /usr/local/nginx/

二、负载均衡

1.负载均衡原理

        负载均衡NAT(Network Address Translation网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。系统的扩展可以分为纵向扩展和横向扩展。

纵向扩展:从单机的角度出发,通过增加系统的硬件处理能力来提升服务器的处理能力;

横向扩展:通过添加机器来满足大型网站服务的处理能力。

2.负载均衡作用

        解决服务器的高并发压力,提高应用程序的处理性能;

        提供故障转移,实现高可用;

        通过添加或减少服务器数量,增强网站的可扩展性;

        在负载均衡器上进行过滤,可以提高系统的安全性;

3.nginx七层负载均衡配置

准备四台机器:

一台静态服务器:staticserver   192.168.1.30

三台动态服务器:dynamic001   192.168.1.21

                             dynamic002   192.168.1.22

                             dynamic003   192.168.1.23

1.七层负载均衡基础配置

1.发布项目,四个主机都发布项目

[root@staticserver ~]# echo "i am static server" > /usr/local/nginx/html/index.html
[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf
[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload
[root@dynamic001 ~]# echo "i am dynamic server 001" > /usr/local/nginx/html/index.html
[root@dynamic001 ~]# /usr/local/nginx/sbin/nginx
[root@dynamic002 ~]# echo "i am dynamic server 002" > /usr/local/nginx/html/index.html
[root@dynamic002 ~]# /usr/local/nginx/sbin/nginx
[root@dynamic003 ~]# echo "i am dynamic server 003" > /usr/local/nginx/html/index.html
[root@dynamic003 ~]# /usr/local/nginx/sbin/nginx

2.验证:

 3.修改配置文件

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf
...
        upstream server_group_name {
                server 192.168.1.21:80;
                server 192.168.1.22:80;
                server 192.168.1.23:80;
        }
...

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

4.验证:不断刷新就可以每次都是由不同的机器代理的。

2.负载均衡状态

3.负载均衡策略

1.轮询

将002主机设置为down,不参与轮询

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf
...
        upstream server_group_name {
                server 192.168.1.21:80;
                server 192.168.1.22:80 down;
                server 192.168.1.23:80;
        }
...
[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

验证只有001和003

在配置文件中恢复002的服务,直接在002的主机上服务停止验证:

2.权重

设置权重weight,数字大的任务重

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

3.Iphash

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

 upstream server_group_name {

                ip_hash;

                server 192.168.1.21:80 weight=4;

                server 192.168.1.22:80 weight=2;

                server 192.168.1.23:80 weight=1;

#               server www.baidu.com;

        }

验证:第一次是哪个就一直是哪个,不再变化

upstream server_group_name {

                ip_hash;

                #least_conn;       最少连接

                #hash $request_uri;      

                server 192.168.1.21:80 weight=4;

                server 192.168.1.22:80 weight=2;

                server 192.168.1.23:80 weight=1;

#               server www.baidu.com;

        }

三、平滑升级

查看nginx当前版本

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.26.1

要将1.26版本过渡到1.27版本,通常我们就重装nginx软件,但是遇到正在使用服务的nginx就不可以这样做,这就需要使用平滑升级。

1.下载1.27版本

[root@staticserver ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz

2.解压与预编译

[root@staticserver nginx-1.27.0]# tar -zxvf nginx-1.27.0.tar.gz
[root@staticserver nginx-1.27.0]# cd nginx-1.27.0/
[root@staticserver nginx-1.27.0]# ./configure --prefix=/usr/local/nginx/ --user=nhinx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream

3.编译安装

[root@staticserver nginx-1.27.0]# make && make install
使用 kill -USR2 启用新版本的 Nginx 的软件
kill -USR2 老版本的 pid 编号

4.查看可执行文件,有两个

[root@staticserver nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx  nginx.old

不同文件放置不同的版本

[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.27.0
[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v
nginx version: nginx/1.26.1

5.查看老服务的进程

[root@staticserver nginx-1.27.0]# ps -aux | grep nginx
root       1341  0.0  0.1  48244  2468 ?        Ss   10:15   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      6834  0.0  0.1  48696  2072 ?        S    15:55   0:00 nginx: worker process
root       9845  0.0  0.0 112824   988 pts/0    R+   16:34   0:00 grep --color=auto nginx

6.使用老的nginx进程创建新的进程

[root@staticserver nginx-1.27.0]# kill -USR2 1277
[root@staticserver nginx-1.27.0]# ps -ef|grep nginx
此时会出现两套 master 进程,这个时候处理客户请求的就是新的 nginx 服务了。

7.关闭老版本的所有子进程和老版本的主进程

[root@staticserver nginx-1.27.0]# kill -WINCH 1278
[root@staticserver nginx-1.27.0]# kill -QUIT 1277
[root@staticserver nginx-1.27.0]# ps -ef|grep nginx

8.使用curl 查看当前服务器的版本

[root@staticserver nginx-1.27.0]# curl -I localhost
HTTP/1.1 403 Forbidden
Server: nginx/1.27.0
Date: Mon, 29 Jul 2024 16:42:32 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 153
Connection: keep-alive

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

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

相关文章

【uniapp离线打包】(基于Android studio)

文章目录 uniapp打包官方教程入口一、准备工作(工具三大件)二、准备工作&#xff08;Android壳和uniapp包&#xff09;导入Android壳生成uniapp包将uniapp包导入android壳 三、准备工作&#xff08;证书、&#xff09;准备Android平台离线签名证书 四、修改配置参数build.gradl…

Data Augmentation数据增强

目录 数据增强是什么 为什么数据增强 数组增强分类 有监督数据增强 无监督数据增强 数据增强是什么 数据增强又称数据扩增&#xff0c;是一种通过应用合理且随机的变换&#xff08;例如图像位移、旋转&#xff09;来增加训练集多样性的技术。让有限的数据产生等价于更多数…

卷积神经网络(五)---图像增强的方法

前面的部分专注于卷积神经网络的层结构介绍&#xff0c;同时还介绍了到目前为止比较出名的卷积神经网络&#xff0c;接着使用比较复杂的卷积神经网络提高了 MNIST 数据集的准确率。下面将从另外的角度——图像增强的方面入手&#xff0c;提高模型的准确率和泛化能力。 一直以来…

C# 弃元的详解与示例

文章目录 1. 什么是弃元&#xff1f;2. 弃元的语法3. 弃元的应用场景4. 示例代码5. 总结 在C# 7.0及更高版本中&#xff0c;弃元&#xff08;Discard&#xff09;是一个新的语言特性&#xff0c;允许开发者在特定情况下忽略某些值。这在处理元组、解构操作或其他只需要部分值的…

【区块链+绿色低碳】泸州:“绿芽积分”号召全民绿色减碳 | FISCO BCOS应用案例

2021 年 6 月 5 日&#xff0c; 首个基于“绿普惠云”所构建的政府级碳普惠平台“泸州市‘绿芽积分’”在生态环境部 2021 年 六五世界环境日国家主场活动中展示&#xff0c;并跻身进入生态环境部“提升公民生态文明意识行动计划”2021 十佳公众 参与案例。 “绿普惠云”是为政…

精通推荐算法11:基于异构图游走的Graph Embedding

DeepWalk、Line和Node2vec对图结构数据进行随机游走&#xff0c;成功将其转化为一个序列问题&#xff0c;并利用Word2vec训练得到节点的Embedding向量。但它们都基于同构图&#xff0c;其节点均属于同一种类型。但现实世界的数据网络大多基于异构图&#xff0c;其节点类型以及节…

【Linux】全志Tina配置log串口信息以及env信息的方法

一、文件位置 V:\f1c100s\Evenurs\f1c100s\tina\device\config\chips\c200s\configs\F1C200s\linux\env-3.10.cfg 二、文件内容 三、介绍 console&#xff1a;串口信息 version&#xff1a;版本信息 appAB&#xff1a;ab区信息 cma&#xff1a;cma容量 四、总结 在此文…

【HarmonyOS】鸿蒙中如何获取资源文件的指定类型 fd,string,Uint8Array,RawFileDescriptor

【HarmonyOS】鸿蒙中如何获取资源文件的指定类型 fd&#xff0c;string&#xff0c;Uint8Array&#xff0c;RawFileDescriptor 一、问题背景&#xff1a; 众所周知&#xff0c;在鸿蒙中的资源分为media和rawfile。两者的区别对标android工程一致&#xff0c;后者是其他类型文…

高月供,高负债,有没有好的办法去解决?

朋友们&#xff0c;有没有过这样的经历&#xff0c;觉得手里那堆贷款账户和每个月高高的月供&#xff0c;就像两座大山压得你喘不过气&#xff1f;特别是想从网贷的高利贷坑跳到银行的低息怀抱&#xff0c;却屡遭拒绝&#xff0c;那种无力感和自我怀疑&#xff0c;简直让人崩溃…

【城市数据集】世界城市数据库和访问门户工具WUDAPT

世界城市数据库和访问门户工具WUDAPT WUDAPTLCZ分类具体步骤参考 在 城市气候研究中&#xff0c;用于描述城市特征的数据集一般采用基于类别的传统方法&#xff0c;将城市地区分为数量有限的类型&#xff0c;从而导致精确度下降。越来越多的新数据集以亚米微尺分辨率描述城市的…

嵌入式学习Day17---Linux软件变编程

目录 ​编辑 一、Linux 系统 1.1.Linux服务器 1.2.Linux嵌入式 1.3.Linux系统上的软件开发 1.操作系统 2.Linux内核 3.man手册 1.4.shell命令 1.基本命令 2.文件查看命令 3.文件查找命令 4.压缩解压文件 5.其他命令 6.通配符 7.管道 8.重定向 1.5.虚拟机上网 1.NAT模式 …

JS学习(变量、数据类型、运算符以及流程控制语句)

目录 一、变量 二、数据类型 三、运算符 四、类型转换 &#xff08;1&#xff09;字符串类型转为数字 &#xff08;2&#xff09;其他类型转为boolean&#xff08;这些全部都是自动转换&#xff09; 五、流程控制 一、变量 &#xff08;1&#xff09;var&#xff1a;声…

2024西安铁一中集训DAY26 ---- 模拟赛(最短路 + 实数域二分 + 线段树 + 并查集(平面图欧拉定理))

文章目录 前言时间安排与成绩题解A. 江桥的蓝紫灯&#xff08;最短路&#xff09;B. 江桥的破坏行动&#xff08;实数域二分&#xff09;C. 江桥的最小值&#xff08;线段树&#xff09;D. 江桥的山谷&#xff08;并查集&#xff0c;平面图欧拉定理&#xff09; 前言 感觉是做…

Android NDK 编译 libcurl支持https

最后在使用NDK中使用libcurl&#xff0c;由于不同的安卓设备&#xff0c;版本不一样&#xff1b;使用so时&#xff0c;会导致报错dlopen时找不到某函数或出错。 最后直接使用libcurl.a后&#xff0c;目前在几款盒子上测试均能正常工作。 libcurl需要支持https得提前编译两个库…

LLM评估 | 大模型评估方法调研--论文解读(持续更新ing!!!)

目录 LLM-based NLG Evaluation: Current Status and ChallengesAdaptEval: Evaluating Large Language Models on Domain Adaptation for Text SummarizationThe Potential and Challenges of Evaluating **Attitudes, Opinions, and Values** in Large Language ModelsEvalLM…

揭秘高效语音转文字工具:让沟通更便捷

嘿&#xff0c;各位办公室的小伙伴们&#xff0c;今儿咱们来聊聊那些能让咱们文员生活大变样的神器——特别是那些能把咱们嘴里嘟囔的话儿&#xff0c;瞬间变成电脑里整整齐齐文字的语音转文字工具。说起来&#xff0c;自从有了这些宝贝&#xff0c;我感觉自己都快能飞起来了&a…

VUE 3.0 如何新建项目 详细教程 附环境搭建 推荐

本人新入手一台电脑&#xff0c;需要安装各种环境配置&#xff0c;顺便把过程记录一下&#xff0c;方便自己以后查看&#xff0c;也欢迎大家参考交流。 目录 一、环境搭建&#xff1a; 1.Node.js安装 2.国内淘宝镜像设置 3.安装vue 环境 二、新建vue项目 1.vue脚手架新建…

昇思25天学习打卡营第21天|FCN图像语义分割案例:从数据集下载到模型推理

目录 MindSpore 版本管理与数据集下载准备 图像分割数据集的定义、处理与获取 训练集数据的图像展示 基于 MindSpore 的 FCN8s 图像分割模型定义 图像分割模型的预训练模型加载与评估指标定义 基于 CPU 的 FCN8s 模型训练配置与准备 FCN8s 模型的权重加载与评估数据集的评…

大模型系列5--卷积神经网络

卷积神经网络 1. 背景2. 架构2.1. 卷积2.1.1. 单卷积层&#xff08;多Channel输出&#xff09;2.2.2. 多层卷积&#xff08;卷积堆叠&#xff09;2.2.3. 卷积关键参数2.2.4. 卷积常用计算公式 2.2. 池化层&#xff08;pooling&#xff09; 3. 经典网络结构3.1. VGG-163.2. ResN…

燃气安全无小事,一双专业劳保鞋让你步步安心!

燃气作为我们日常生活中不可或缺的能源之一&#xff0c;为我们的生活提供了极大便利&#xff0c;其安全性往往被忽视在忙碌的日常生活背后。然而&#xff0c;燃气事故一旦发生&#xff0c;后果往往不堪设想&#xff0c;轻则财产损失&#xff0c;重则危及生命。因此&#xff0c;…