赞
踩
一.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 |
依次的将任务部署给不同主机
[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进行轮询
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
浏览器访问
[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
[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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。