当前位置:   article > 正文

【无标题】nginx反向代理+nginx负载均衡+nginx软件平滑升级

【无标题】nginx反向代理+nginx负载均衡+nginx软件平滑升级

一.nginx反向代理---负载均衡的基础

web    192.168.2.35    静态服务器(前端服务器)

dy001   192.168.2.37    动态服务器(后端服务器)

安装nginx

源码编译安装

1.下载源码包

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

2.解压

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

[root@web ~]# yum -y install gcc gcc-c++

[root@web ~]# yum -y install openssl-devel

[root@web ~]# yum -y install pcre-devel

[root@web ~]# yum -y install make

3.编译安装nginx

[root@web 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@web nginx-1.26.1]# make && make install

[root@web nginx-1.26.1]# useradd -s /bin/nologin -M nginx  //创建nginx用户和组不然无法启动

4.开启nginx状态监听模块

(1)修改配置文件

[root@web ~]# vim /usr/local/nginx/conf/nginx.conf  //在48行添加

location /status {

            stub_status on;    #nginx状态的监听模块

            access_log off;

        }

(2)重启nginx

[root@web ~]# systemctl reload nginx

5.将当前的主机作为前端服务器,用于接收和响应客户端,代理另外一台主机

克隆一台主机修改名称和ip地址,关闭防火墙和selinux----动态服务器,后端服务器

由于没有部署tomcat,所以使用nginx代替

6.修改index.html文件,并发布web服务

[root@dy001 ~]# echo "zhe shi web server" > /usr/local/nginx/html/index.html

7.启动nginx服务

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

8.使用curl访问当前项目

[root@dy001 ~]# curl localhost

zhe shi web server

9.切到静态服务器---前端服务器

(1)修改nginx中的html文件

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

(2)启动nginx

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

[root@web ~]# curl localhost

this is static server

[root@web ~]# curl 192.168.2.37

zhe shi web server

使用前端服务器代理后端服务器,当用户访问前端服务器的时候,前端服务器不响应,而是后端主机响应

使用前端服务器nginx反向代理后端服务器

(3)修改配置文件

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

location / {

 #           root   html;

  #          index  index.html index.htm;

                proxy_pass http://192.168.2.37:80;         

        }

(4)重启:

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

(5)在浏览器访问

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

10.再克隆一台机器

(1)安装nginx----同前端服务器一样的操作

scp -r root@192.168.2.35:~/nginx-1.26.1.tar.gz ./

yum -y install gcc gcc-c++ pcre-devel openssl-devel

tar -zxvf nginx-1.26.1.tar.gz

cd nginx-1.26.1/

[root@all 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@all nginx-1.26.1]# make && make install

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

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

(2)修改index.html中的内容

[root@all nginx-1.26.1]# echo "you are luckly" > /usr/local/nginx/html/index.html

(3)在浏览器访问  //自己可以访问

前端服务器和后端服务器都可以访问到:

[root@dy001 ~]# curl 192.168.2.38

you are luckly

[root@web ~]# curl 192.168.2.38

you are luckly

(4)设置黑名单 白名单----设置除后端服务器可以访问,其他主机都不可以访问

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

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

server {

        listen       80;

        server_name  localhost;

        charset utf-8;

        allow 192.168.2.37;      //允许后端服务器访问

        deny  192.168.2.0/24;   //静止了192.168.2.0这个网段的访问

        deny   all;            //静止所有主机访问

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

(5)进行访问测试:

在后端服务器(192.168.2.37)上进行访问:

[root@dy001 ~]# curl 192.168.2.38

you are luckly

在前端服务器(192.168.2.35)上进行访问:

[root@web ~]# curl 192.168.2.38

<html>

<head><title>403 Forbidden</title></head>

<body>

<center><h1>403 Forbidden</h1></center>

<hr><center>nginx/1.26.1</center>

</body>

</html>

错误日志

  • 负载均衡

让每一台主机能够获得相应的请求

Nginx做负载均衡的基础----反向代理

web

192.168.2.35

静态服务器

dy001

192.168.2.37

动态服务器

dy002

192.168.2.38

dy003

192.168.2.39

  1. 轮询

依次的将任务部署给不同主机

[root@web ~]# echo "i am static server" > /usr/local/nginx/html/index.html

[root@dy001 ~]# echo " i am dynamic server 001" > /usr/local/nginx/html/index.html

[root@dy002 ~]# echo "i am dynamic server 002"  > /usr/local/nginx/html/index.html

[root@dy003 ~]# echo "i am dynamic server 003" > /usr/local/nginx/html/index.html

每台机器重启服务

/usr/local/nginx/sbin/nginx -s reload

编辑前端服务器的配置文件:

#gzip  on;

    upstream server_group_name {

          server 192.168.2.37:80;

          server 192.168.2.38:80;

          server 192.168.2.39:80;

}

server {

        listen       80;

        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

         # root   html;

          #  index  index.html index.htm;

                proxy_pass http://server_group_name;       

        }

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

在浏览器访问前端服务器(作为代理),它就会把任务分配给三个后端服务器进行轮询

将第二台后端服务器标记为down

在浏览器访问只有001和002进行轮询

  1. 轮询+权重

weight加权---数字越大负担的任务就越重

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

upstream server_group_name {

          server 192.168.2.37:80 weight=4;

          server 192.168.2.38:80 weight=2;

          server 192.168.2.39:80 weight=1;

}

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

浏览器访问

  1. Ip_hash---第一次访问的是谁,后面就都是谁

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

upstream server_group_name {

          Ip_hash;

          server 192.168.2.37:80 weight=4;

          server 192.168.2.38:80 weight=2;

          server 192.168.2.39:80 weight=1;

}

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

  1. least_conn---最少连接,将任务发送给连接树最小的这台

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

upstream server_group_name {

          #Ip_hash;

          least_conn;

          server 192.168.2.37:80 weight=4;

          server 192.168.2.38:80 weight=2;

          server 192.168.2.39:80 weight=1;

}

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

三.Nginx软件平滑升级

不停用业务,使用平滑升级

需要有kill命令的支持

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

Kill 信号 进程编号

-USR2  平滑启动进程

-WINCH  优雅关闭子进程

-QUIT    优雅关闭主进程

步骤

查看版本

[root@web ~]# /usr/local/nginx/sbin/nginx -v

查看进程,分主进程和work进程

ps -aux|grep nginx

平滑升级1.27版本

服务持续期间对nginx升级

1.上传新的版本并且解压

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

[root@web nginx-1.27.0]# tar -zxvf nginx-1.27.0.tar.gz

2.对新版本进行编译安装,安装目录必须和旧版本一致

[root@web nginx-1.27.0]# cd nginx-1.27.0

[root@web nginx-1.27.0]# ./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@web nginx-1.27.0]# make && make install

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

kill -USR2 老版本的pid编号

[root@web nginx-1.27.0]# ls /usr/local/nginx/sbin/

nginx  nginx.old

[root@web nginx-1.27.0]#  /usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.27.0

[root@web nginx-1.27.0]#  /usr/local/nginx/sbin/nginx.old -v

nginx version: nginx/1.26.1

4.查看旧服务进程

[root@web nginx-1.27.0]# ps -aux|grep nginx

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

[root@web nginx-1.27.0]# kill -USR2 4326

6.关闭老版本的所有子进程

7.关闭老版本的主进程

[root@web nginx-1.27.0]# kill -WINCH 4355

[root@web nginx-1.27.0]# kill -QUIT 4326

[root@web nginx-1.27.0]# curl -I localhost

四.配置tomcat10 运行环境

Tomcat10必须在jdk17以上的版本运行

解压jdk

[root@dy001 ~]# tar -xf jdk-22_linux-x64_bin.tar.gz

cd jdk-22.0.2/

[root@dy001 jdk-22.0.2]# cd bin

[root@dy001 bin]# ./java

[root@dy001 bin]# cd

[root@dy001 ~]# mv jdk-22.0.2/ /usr/local/jdk22/

[root@dy001 ~]# cd /usr/local/jdk22/

[root@dy001 jdk22]# sed -n '$p' /etc/profile

export PATH=$MONGODB_HOME/bin:$PATH

[root@dy001 jdk22]# sed -i '$aexport JAVA_HOME=/usr/local/jdk22/' /etc/profile

[root@dy001 jdk22]# sed -n '$p' /etc/profile

export JAVA_HOME=/usr/local/jdk22/

[root@dy001 jdk22]# source /etc/profile

[root@dy001 jdk22]# $JAVA_HOME

-bash: /usr/local/jdk22/: 是一个目录

[root@dy001 jdk22]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile

[root@dy001 jdk22]# sed -n '$p' /etc/profile

PATH=$JAVA_HOME/bin:$PATH

[root@dy001 jdk22]# source /etc/profile

[root@dy001 jdk22]# java -version

java version "22.0.2" 2024-07-16

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/913179
推荐阅读
相关标签
  

闽ICP备14008679号