负载均衡、软件平滑升级

安装nginx 1.26.1

平滑升级、负载均衡

安装依赖 gcc  gcc-c++   pcre-devel   openssl-devel

七层负载均衡配置:

[root@f ~]# vim /usr/local/nginx/conf/nginx.conf
43         location / {44          #   root   html;45           #  index  index.html index.htm;46           proxy_pass    http:192.168.1.17:80 #当访问本机的80端口时,跳转到服务器组47         }

总结:

1、一般来说会使用nginx代理动态服务器,例如代理tomcat发布的动态web服务

2、在这个案例中是使用nginx代替的

3、nginx反向代理,是不需要被代理的服务器同意的,只需要在nginx中的location中配置

location  /  {

      proxy_pass   协议   域名|ip  : 端口

}

:wq

./sbin/nginx  -s   reload  #重载配置文件

负载均衡的基础

nginx访客IP黑名单

设置黑名单、白名单

[root@CYX ~]# scp root@192.168.1.17:~/nginx-1.26.1.tar.gz ./

[root@CYX ~]# yum -y install gcc gcc-c++ openssl-devel pcre-devel
 

[root@CYX ~]# tar -zxvf nginx-1.26.1.tar.gz

[root@CYX ~]# cd nginx-1.26.1/
[root@CYX 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@CYX nginx-1.26.1]# make && make install
 

账号,修改index.html里的内容,并且访问测试,都能访问到

[root@CYX nginx-1.26.1]# useradd -s /bin/nologin -M nginx
[root@CYX nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@CYX nginx-1.26.1]# echo "wxnl" > /usr/local/nginx/html/index.html 
[root@CYX nginx-1.26.1]# curl localhost
wxnl
 

设置仅一个主机可以访问,其他都不可以访问

在配置文件中的server模块中设置

allow允许,deny禁止

可以对IP生效,也可以对网段生效

[root@CYX nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf

负载均衡

让每一台主机都能获得相应的压力

负载均衡策略

(1)轮询

upstream backend {

           server 192.168.33.11:8080;

           server 192.168.33.22:8080;

}

(2)weight 加权

upstream backend {

            server 192.168.33.11:8080 weight=5;

            server 192.168.33.22:8080 weight=2;            # 权重默认为 1,谁权重大,谁优先处理请求

}

(3)ip_hash

注意: 使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些 后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置 后端服务器权重等方法将不起作用

upstream backend {

         ip_hash;          # ip_hash算法

         server 192.168.33.11:8080;

         server 192.168.33.22:8080;

}

(4)least_conn

最少连接,把请求转发给连接数较少的后端服务器

upstream backend {

                  least_conn;                            # 将请求转发给连接数较少的后端服务器

                  server 192.168.33.11:8080;

                  server 192.168.33.22:8080;

}

(5)url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,

要配合缓存命中来使用

upstream backend {

              hash $request_uri;

              server 192.168.33.11:8080;

               server 192.168.33.22:8080;

 }

nginx 四层负载均衡

使用stream模块,与七层的http模块同级

[root@f ~]# nginx -v  #查看版本及安装模块

进行备份

[root@f ~]# cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxbak

安装指定模块并编译

657  cd nginx-1.26.1/
658  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
659  make && make install

模块添加成功

# nginx -V 

修改配置文件

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

kill不仅仅用于杀死进程,还可以向软件进程发送信号

常用的-9和-15一个是强杀,一个是正常杀

kill 信号 进程编号

# 重新加载nginx配置文件

sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#查看进程

[root@f ~]# ps -aux|grep nginx
root       1583  0.0  0.1  46128  1956 ?        Ss   07:35   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1684  0.0  0.2  46588  2256 ?        S    07:41   0:00 nginx: worker process
root       6782  0.0  0.0 112824   980 pts/1    R+   19:36   0:00 grep --color=auto nginx

上传新版本,并且解压、编译,安装相应的依赖(新版本必须和旧版本保持一致)

用kill -USR2 启用新版本的Nginx的软件

kill -USR2 老版本的pid编号

主要功能会根据上一次的启动方式再重新运行一次之前的启动命令

[root@f ~]# ls /usr/local/nginx/sbin/
nginx  nginxbak  nginx.old

重装新的版本以后,会出现新的启动工具

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

再次查看进程,找到老版本的pid

[root@f ~]# ps -ef|grep nginx
root       1583      1  0 07:35 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1684   1583  0 07:41 ?        00:00:00 nginx: worker process
root       6839   6464  0 19:46 pts/1    00:00:00 grep --color=auto nginx

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

[root@f ~]# kill -USR2 1583
[root@f ~]# ps -ef|grep nginx
root       1583      1  0 07:35 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1684   1583  0 07:41 ?        00:00:00 nginx: worker process
root       6847   6464  0 19:47 pts/1    00:00:00 grep --color=auto nginx

此时会出现两套master进程,这个时候处理客户请求的就是新的nginx服务 了

关闭老版本的所有子进程

关闭老版本的主进程

[root@f ~]# kill -QUIT 1583
[root@f ~]# ps -ef|grep nginx
root       6866   6464  0 19:50 pts/1    00:00:00 grep --color=auto nginx

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

 curl -I localhost

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

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

相关文章

测试开发面试题,助你拿高薪offer

进入金九银十,很多小伙伴有被动跳槽的打算,所以更新一些测试开发 面试题,希望能帮到大家。 一 请说一下HTTP 状态码 HTTP状态码大致分为5类: 常见的http状态码如下: 二 python中“” 和“ is ”的区别 is 和 都可以进行对象比…

CVE-2022-21663: WordPress <5.8.3 版本对象注入漏洞深入分析

引言 在网络安全领域,技术的研究与讨论是不断进步的动力。本文针对WordPress的一个对象注入漏洞进行分析,旨在分享技术细节并提醒安全的重要性。特别强调:本文内容仅限技术研究,严禁用于非法目的。 漏洞背景 继WordPress CVE-2…

解决nginx端口转发后,获取不到真实IP问题

文章目录 1,设置nginx端口转发1.2,无法获取客户端真实IP 2,nginx配置文件增加配置,保留客户端信息2.2,可以看到真实IP信息 1,设置nginx端口转发 location /AWAPI/ {proxy_pass http://172.28.43.19:9607; …

UEFI DebugLib 介绍

1.我们调试中常用Debug 打印信息,这些会输出到BIOS串口日志中 EFI_STATUSEFIAPIHelloWorld2(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE *SystemTable){EFI_STATUS Status;StatusEFI_SUCCESS;gST->ConOut->OutputString(gST->ConOut,L&q…

HomeServer平台选择,介绍常用功能

​​ 平台选择 HomeServer 的性能要求不高,以下是我的硬件参数,可供参考: ‍ 硬件: 平台:旧笔记本CPU:i5 4210u内存 8G硬盘:128G 固态做系统盘,1T1T 机械盘组 RAID1 做存储。硬…

【数据结构与算法】详解计数排序:小范围整数排序的最佳选择

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、计数排序的基本原理 三、实现步骤 1. 确定数据范围 2. 初始化计数数组…

Serverless Knative冷启动与自动扩缩容研究:从原理到实践

最近一个研究生网页的提问,然后就有了这篇博客! 大佬你好,我看到您的关于Serverless的文章于是十分冒昧的向您提问。我现在是一名在研究通过Serverless容器调度解决冷启动问题的本科生,导师放养,就让看论文但是后面的代…

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17(Skywalking10 jdk22不兼容,用17版本即可)**安装: https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装: https://blog.csdn.net/CsethCRM/article/details…

Python入门宝藏《看漫画学Python》,495页漫画带你弄清python知识点!简单易懂 | 附PDF全彩版

华为出品的《看漫画学Python》全彩PDF教程是一本适合Python初学者的学习资料,通过漫画的形式将复杂的Python技术问题简单化,使学习过程更加生动有趣。以下是对该教程的内容简介、本书概要及本书目录的详细解析: 内容简介 《看漫画学Python》…

手机三要素接口怎么对接呢?(一)

一、什么是手机三要素? 手机三要素又叫运营商三要素,运营商实名认证,运营商实名核验,手机三要素实名验证,手机三要素实名核验,每个人的称呼都不同,但是入参和出参是一样的。 输入姓名、身份证…

MATLAB基础:函数与函数控制语句

今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法,可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如,我们输入lookfor inpu…

矩估计与最大似然估计的通俗理解

点估计与区间估计 矩估计与最大似然估计都属于点估计,也就是估计出来的结果是一个具体的值。对比区间估计,通过样本得出的估计值是一个范围区间。例如估计馒头店每天卖出的馒头个数,点估计就是最终直接估计每天卖出10个,而区间估…

【机器学习基础】机器学习的数学基础

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

鸿蒙(HarmonyOS)DatePicker+TimePicker时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0(API 9) 二、效果图 可实现两种选择方式,可带时分选择,也可不带,使用更加方便。 三、代码 SelectedDateDialog…

2024下半年,前端的技术风口来了

“ 你近期有体验过哪些大模型产品呢? 你有使用大模型API做过一些实际开发吗? 在你日常开发中,可以与大模型相关应用结合来完成工作吗? ” **最近,一直在和同事聊,关于前端可以用大模型干点啥&#xff…

实战:安装ElasticSearch 和常用操作命令

概叙 科普文:深入理解ElasticSearch体系结构-CSDN博客 Elasticsearch各版本比较 ElasticSearch 单点安装 1 创建普通用户 #1 创建普通用户名,密码 [roothlink1 lyz]# useradd lyz [roothlink1 lyz]# passwd lyz#2 然后 关闭xshell 重新登录 ip 地址…

Nat Med·UNI:开启计算病理学新篇章的自监督基础模型|顶刊精析·24-07-31

小罗碎碎念 本期推文主题 这一期推文是病理AI基础模型UNI的详细介绍,原文如下。下期推文会介绍如何使用这个模型,为了你能看懂下期的推文,强烈建议你好好看看今天这期推文。 看完这篇推文以后,你大概就能清楚这个模型对自己的数据…

卷积神经网络(六)---实现 cifar10 分类

cifar10 数据集有60000张图片,每张图片的大小都是 32x32 的三通道的彩色图,一共是10种类别、每种类别有6000张图片,如图4.27所示。 图 4.27 cifar数据集 使用前面讲过的残差结构来处理 cifar10 数据集,可以实现比较高的准确率。 …

麦田物语第十五天

系列文章目录 麦田物语第十五天 文章目录 系列文章目录一、构建游戏的时间系统二、时间系统 UI 制作总结 一、构建游戏的时间系统 在该游戏中我们要构建年月日天时分秒等时间的概念,从而实现季节的更替,昼夜的更替等(不同的季节可以播种不同…

【MATLAB源码】机器视觉与图像识别技术实战示例文档---鱼苗面积预测计数

系列文章目录 第一篇文章:【MATLAB源码】机器视觉与图像识别技术—视觉系统的构成(视频与图像格式转换代码及软件下载) 第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)—图像分割基础 第三篇文章:【MATLAB源码】机器视觉与图像识别技术…