负载均衡、软件平滑升级

news2024/11/25 14:59:24

安装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.coloradmin.cn/o/1962665.html

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

相关文章

在docker中安装MongoDB 5.0+

文章目录 1、查看物理机是否支持avx指令集:安装资料中的cpu-z_2.10-cn.exe,并打开2、查看虚拟机是否支持avx指令集:3、创建目录4、使用Docker来运行一个MongoDB数据库实例5、进入容器6、查看当前db版本7、查看当前db的链接机器地址8、帮助指令…

《昇思25天学习打卡营第24天》

接续上一天的学习任务,我们要继续进行下一步的操作 构造网络 当处理完数据后,就可以来进行网络的搭建了。按照DCGAN论文中的描述,所有模型权重均应从mean为0,sigma为0.02的正态分布中随机初始化。 接下来了解一下其他内容 生成…

程序一调用这个接口就会崩溃, 因为他的静态库添加是放在release文件下,而我用的debug模式

程序一调用这个接口就会崩溃 因为他的静态库添加是放在release文件下 而我用的debug模式 DESTDIR ../x64/ReleaseINCLUDEPATH ./../3rdparty/ZZDecode/include LIBS -lopengl32 \-lglu32 \-luser32 \./../3rdparty/ZZDecode/x64/release/ZZDecodeInterface.lib

华为仓颉语言测试申请

1. 申请网址 HarmonyOS NEXT仓颉语言开发者预览版 Beta招募- 华为开发者联盟 点击立即报名登录华为账号 勾选选项 , 点击同意 按要求填写信息即可 2. 申请通过后官方会通过邮件的方式发送相关下载途径 , 根据文档进行下载即可 package Cangmain(): Int64 {println("你…

Springboot使用Redis实现分布式锁

1、使用场景和实现方案: 使用场景:本地锁如Lock和Syncronized只能锁住本地进程,在分布式应用中,需要使用分布式锁来更好实现特定的业务。 实现方案:有多种,比如使用mysql、zookeeper、redis,各…

nginx续1:

八、虚拟主机配置 基于域名的虚拟主机 [rootserver2 ~]# ps -au|grep nginx //查看进程 修改Nginx服务配置,添加相关虚拟主机配置如下 1. [rootproxy ~]# vim /usr/local/nginx/conf/nginx.conf 2. .. .. 3. server { 4. listen …

基于Material studio拉伸-断裂过程的Perl脚本

在材料科学的研究中,拉伸-断裂过程一直是科学家们探索的焦点。这一过程涉及复杂的力学行为和材料内部微观结构的变化,对于理解材料的性能至关重要。然而,传统的实验方法不仅耗时耗力,而且难以捕捉到微观尺度上的所有细节。 为了满…

jQuery前端网页制作

1、Jquery的概述 1.1JavaScript库 JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时。 为了应对这些调整,许多的 JavaScript (helper) 库应运而生。 这些 JavaScript 库常被称为 JavaScript 框架。 市面上一些广受欢迎的 JavaScript 框架:…

visual studio性能探测器使用案列

visual studio性能探测器使用案列 在visual studio中,我们可以使用自带的工具对项目进行性能探测,具体如下 1.选择性能探查器 Vs2022/Vs2019中打开方式: Vs2017打开方式: 注意最好将解决方案配置为:Release Debu…

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度,尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图,然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板,勾上真省钱,然后保…

Meta再下一城:SAM 2

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- “继用于图像的Meta Segment Anything Model &#xff08;SAM&#xff09;取得成功之后&#xff0c;我们发布了SAM 2&#xff0c;这是一种用于在图像和视频中实时进行对象分割的统一模型&#…

npm创建vue的ts项目

一、进入项目文件夹 使用cmd进入你想要创建项目的文件夹&#xff0c;此处为 E盘的test文件夹 cd E:\testE:二、创建项目 此处项目名为 MyTestProject npm create vitelatest输入上述代码&#xff0c;回车后会出现灰色的虚拟名称&#xff0c;此处输入你自己的名称即可&#…

软件平台化开发项目实践

汉捷咨询有40多位来自多家著名企业&#xff08;华为、中兴、三星等&#xff09;的咨询顾问和讲师&#xff0c;资深顾问/项目经理均有华为、中兴等领先企业高管及咨询实践15年以上经验&#xff0c;本文为汉捷一IPD资深顾问的行业实践总结&#xff0c;与各位同仁分享&#xff01;…

WPF用户登录界面设计-使用SQLite数据库进行存储

一、SQLite数据库介绍 SQLite是一款轻量级的关系型数据库&#xff0c;它小巧高效&#xff0c;无需服务器配置&#xff0c;仅需单一文件即可存储数据。SQLite跨平台支持&#xff0c;易于集成到各种应用程序中&#xff0c;并支持SQL语言进行数据操作。它保证了数据的完整性、一致…

Java数据结构和算法中文版(第2版)详细教程

前言 数据结构是指数据在计算机存储空间中(或磁盘中)的安排方式。算法是指软件程序用来操作这些结构中的数据的过程。几乎所有的计算机程序都使用数据结构和算法&#xff0c;即使最简单的程序也不例外。比如设想一个打印地址标签的程序&#xff0c;这个程序使用一个数组来存储…

整理几个常用的Linux命令(Centos发行版)

如果工作中需要经常整理一些文档&#xff0c;需要汇总一下&#xff0c;现有的服务器资源信息&#xff0c;那么这篇文章适合你&#xff1b; 如果你是一名开发者&#xff0c;需要经常登录服务器&#xff0c;排查应用的出现的一些问题&#xff0c;那么这篇文章适合你&#xff1b;…

使用java判断字符串中是否包含中文汉字

1.导入huool工具的maven依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.复制一下代码直接运行 import cn.hutool.core.lang.Validator;public …

面向对象 - 概述、类的创建、 实例化与内存解析

一、学习面向对象的三条主线 Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;其他关键字的使用&#xff1a;…

机械学习—零基础学习日志(高数16——函数极限性质)

零基础为了学人工智能&#xff0c;真的开始复习高数 这里我们继续学习函数极限的性质。 局部有界性 充分条件与必要条件 极限存在是函数局部有界的充分条件。什么是充分条件&#xff0c;什么是必要条件呢&#xff1f;我这里做了一点小思考&#xff0c;和大家分享&#xff0c…

alibaba cloud linux+JDK+TOMCAT+NGINX+PHP+MYSQL配置实践

CentOs要停止维护了&#xff0c;一直在服务器上用的CentOs7也最迟到2024年6月了&#xff0c;这次给公司新购一台备用服务器&#xff0c;在选择操作系统的时候&#xff0c;考虑了一下&#xff0c;决定试用一下阿里云的alibaba cloud linux。 alibaba cloud linux分为2和3版本&am…