当前位置: 首页 > news >正文

nginx反向代理和负载均衡+安装jdk-22.0.2

ps -aux|grep nginx   //查看进程
 

nginx 代理

nginx代理是负载均衡的基础

主机:192.168.118.60

这台主机只发布了web服务,没有做代理的任何操作

修改一下index.html中的内容

echo "this is java web server" > /usr/local/nginx/html/index.html

主机:192.168.118.54 

echo "this is static server" > /usr/local/nginx/html/index.html

这台主机要做反向代理,当你访问54这台主机的时候,会返回60主机的内容

使用54主机代理60主机,当用户访问54的时候,54主机不响应,而是由60主机响应

使用54主机nginx反向代理60的服务器:

修改配置文件 /usr/local/nginx/conf/nginx.conf ,在配置文件中加入 location proxy_pass   协议  域名  端口

在浏览器上访问:

nginx访客IP黑名单

主机:192.168.118.70

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

在配置文件中的server模块中设置,allow为允许,deny为禁止,可以对IP生效,也可以对网段生效

vim /usr/local/nginx/conf/nginx.conf 

添加allow和deny

测试:

60主机:[root@server ~]# curl 192.168.118.70
you are luckly

54主机:[root@slave ~]# curl 192.168.118.70
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>

70主机:[root@allow ~]# 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>

[root@allow nginx]# tail -f logs/error.log  //实时更新错误日志

nginx负载均衡

默认情况下同一个文件只允许1024人访问

nginx负载均衡的基础是反向代理

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

负载均衡的五种策略:

轮询:默认方式,使负载大致相同

权重:weight

ip_hash:根据IP分配方式,常用在指定区域

least_conn:依据最少连接方式

url_hash:依据URL分配方式, hash $request_uri;

负载均衡状态:


准备四台服务器,54主机代理其他三台

1.192.168.118.60

2.192.168.118.70

3.192.168.118.80

4.192.168.118.54

   (1)轮询:默认方式

(2)权重:weight ,数字越大,压力越大,权重默认是1,谁权重大,谁优先处理请求

(3)ip_hash

当对后端的多台动态应用服务器做负载均衡时, ip_hash 指令能够将某
个客户端 IP 的请求通过哈希算法定位到同一台后端服务器上。
注意:使用 ip_hash 指令无法保证后端服务器的负载均衡,可能导致有些
后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置
后端服务器权重等方法将不起作用
(4)  least_conn
least_conn :最少连接,把请求转发给连接数较少的后端服务器。轮询
算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,
有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况
下, leastconn 这种方式就可以达到更好的负载均衡效果。
(5) url_hash
按访问 url hash 结果来分配请求,使每个 url 定向到同一个后端服务
器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的
服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时
间的浪费。而使用 ur_hash ,可以使得同一个 url ( 也就是同一个资源请
) 会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从
缓存中读取。

nginx平滑升级

不停用业务,使用平滑升级,需要用kill命令的支持,kill不仅仅用于杀死进程,还可以向软件进程发送信号 

常用的 -9 -15 一个是强杀,一个是正常杀
kill 信号 进程编号:
-USR2   平滑启动一个进程,平滑升级
-WINCH   优雅关闭子进程
-QUIT      优雅关闭主进程

查看nginx的当前版本  :  /usr/local/nginx/sbin/nginx -v

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

平滑升级到1.27,服务持续期间对nginx升级

步骤:

1. 不停止原有服务,但是必须使用原生方式启动或者更改 nginx 脚本(不建议使用脚本,会创
建一个新的进程)
2. 重新编译 nginx 新版本
3. 使用 kill -USR@ 启动新版本
4. 把旧的 Nginx 子进程全部退出
5. 优雅的退出 Nginx 的老进程 系统就只剩下新的 nginx

下载新的nginx

注意:对新版本进行编译安装,安装目录必须和旧版本一致

  210  wget https://nginx.org/download/nginx-1.27.0.tar.gz
  212  tar -zxvf nginx-1.27.0.tar.gz 
  214  cd nginx-1.27.0/

  217  ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
  218  make && make install
 

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

[root@daili nginx-1.27.0]# ps -aux|grep nginx
root       1364  0.0  0.1  46116  1144 ?        Ss   15:09   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1365  0.0  0.2  46564  2132 ?        S    15:09   0:00 nginx: worker process
root       4460  0.0  0.0 112824   980 pts/0    S+   16:34   0:00 grep --color=auto nginx

使用 kill -USR2 启用新版本的 Nginx 的软件
kill -USR2 老版本的 pid 编号
使用老的nginx进程创建新的进程

[root@daili nginx-1.27.0]# kill -USR2 1364  //老版本的pid编号
[root@daili nginx-1.27.0]# ps -aux|grep nginx  

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

root       1364  0.0  0.1  46116  1332 ?        Ss   15:09   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1365  0.0  0.2  46564  2132 ?        S    15:09   0:00 nginx: worker process
root       4462  0.0  0.3  46116  3320 ?        S    16:37   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      4463  0.0  0.1  46568  1896 ?        S    16:37   0:00 nginx: worker process
root       4466  0.0  0.0 112824   976 pts/0    S+   16:37   0:00 grep --color=auto nginx

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

[root@daili nginx-1.27.0]# kill -WINCH 1365
[root@daili nginx-1.27.0]# ps -aux|grep nginx
root       1364  0.0  0.1  46116  1332 ?        Ss   15:09   0:00 nginx: master process /usr/local/nginx/sbin/nginx
root       4462  0.0  0.3  46116  3320 ?        S    16:37   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      4463  0.0  0.2  46568  2144 ?        S    16:37   0:00 nginx: worker process
nginx      4468  0.0  0.1  46564  1888 ?        S    16:39   0:00 nginx: worker process
root       4470  0.0  0.0 112824   980 pts/0    S+   16:40   0:00 grep --color=auto nginx
[root@daili nginx-1.27.0]# kill -QUIT 1364

使用curl 查看当前服务器的版本
[root@daili nginx-1.27.0]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 30 Jul 2024 08:41:41 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 17
Last-Modified: Tue, 30 Jul 2024 07:04:55 GMT
Connection: keep-alive
ETag: "66a89097-11"
Accept-Ranges: bytes

[root@daili nginx-1.27.0]# ps -aux|grep nginx
root       4462  0.0  0.3  46116  3320 ?        S    16:37   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      4463  0.0  0.2  46568  2144 ?        S    16:37   0:00 nginx: worker process
root       4474  0.0  0.0 112824   980 pts/0    S+   16:41   0:00 grep --color=auto nginx
 

tomcat9可以在jdk8的环境运行,tomcat10必须在jdk17以上的版本运行

配置tomcat 10运行环境时,tomcat需要jdk环境

安装jdk-22.0.2

[root@server ~]# cd jdk-22.0.2/
[root@server jdk-22.0.2]# ls
bin  conf  include  jmods  legal  lib  LICENSE  man  README  release
[root@server jdk-22.0.2]# cd bin
[root@server bin]# ./java
用法:java [options] <mainclass> [args...]

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

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

[root@server jdk22]# sed -n '$p' /etc/profile
unset -f pathmunge
[root@server jdk22]# sed -i '$aexport JAVA_HOME=/usr/local/jdk22/' /etc/profile
[root@server jdk22]# sed -n '$p' /etc/profile
export JAVA_HOME=/usr/local/jdk22/
[root@server jdk22]# source /etc/profile
[root@server jdk22]# $JAVA_HOME
-bash: /usr/local/jdk22/: 是一个目录
[root@server jdk22]# java
-bash: java: 未找到命令

[root@server jdk22]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
[root@server jdk22]# sed -n '$p' /etc/profile
PATH=$JAVA_HOME/bin:$PATH
[root@server jdk22]# source /etc/profile
[root@server jdk22]# java
用法:java [options] <mainclass> [args...]

[root@server jdk22]# java -version
java version "22.0.2" 2024-07-16
 


 


 

相关文章:

nginx反向代理和负载均衡+安装jdk-22.0.2

ps -aux|grep nginx //查看进程 nginx 代理 nginx代理是负载均衡的基础 主机&#xff1a;192.168.118.60 这台主机只发布了web服务&#xff0c;没有做代理的任何操作 修改一下index.html中的内容 echo "this is java web server" > /usr/local/nginx/htm…...

软考高级科目怎么选?软考高级含金量排序

软考既是国家职业资格考试&#xff0c;又是职称资格考试&#xff0c;含金量很高。软考的报考不设置任何条件&#xff0c;可以跨级考试&#xff0c;也就是非相关专业的人&#xff0c;也可以直接考高级。因此近些年报考软考、尤其是软考高级的人越来越多。 软考高级证书&#xf…...

【机器学习西瓜书学习笔记——模型评估与选择】

机器学习西瓜书学习笔记【第二章】 第二章 模型评估与选择2.1训练误差和测试误差错误率误差 欠拟合和过拟合2.2评估方法留出法交叉验证法自助法 2.3性能度量查准率、查全率与F1查准率查全率F1 P-R曲线ROC与AUCROCAUC 代价敏感错误率与代价曲线代价曲线 2.4比较检验假设检验&…...

vue3+cesium创建地图

1.我这边使用的是cdn引入形式 比较简单的方式 不需要下载依赖 在项目文件的index.html引入 这样cesium就会挂载到window对象上面去了 <!-- 引入cesium-js文件 --><script src"https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"…...

Zookeeper客户端和服务端NIO网络通信源码剖析

文章目录 服务端的ServerCnxFactory到底是个什么东西?ServerCnxFactory 的作用ServerCnxFactory 的实现使用 ServerCnxFactory 的示例注意事项ServerCnxFactory是什么时候完成初始化的?初始化流程代码示例详细步骤1. 创建实例2. 配置3. 启动初始化时机总结服务端基于NIO的Ser…...

从DevOps到DevSecOps是怎样之中转变?

DevSecOps是DevOps实践的自然演进&#xff0c;其重点是将安全集成到软件开发和部署流程中。在DevOps和DevSecOps发展之前&#xff0c;企业通常在在软件部署前进行集中的安全测试&#xff0c;导致安全介入严重滞后&#xff0c;漏洞分风险无法及时修复&#xff0c;影响上线交付。…...

ORM与第三方数据库对接的探讨及不同版本数据库的影响

对象关系映射&#xff08;Object-Relational Mapping&#xff0c;ORM&#xff09;是一种将程序中的对象与数据库中的数据进行映射的技术&#xff0c;使开发者可以通过操作对象来间接操作数据库。然而&#xff0c;在实际应用中&#xff0c;ORM并不是总能完美地对接陌生的第三方数…...

Windows远程桌面无法拷贝文件问题

场景说明 Winwdows远程桌面&#xff0c;相比Linux方便一点就是&#xff0c;同是windows连接&#xff0c;其中复制粘贴功能&#xff0c;可以在两个windows无缝切换。 但最近笔者远程一台测试windows服务器时&#xff0c;发现无法在服务器上复制内容到本地&#xff0c;也无法从…...

优化数据处理效率,解读 EasyMR 大数据组件升级

EasyMR 作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。此前&#xff0c;我们已就其展开了多方位、多角度的详尽介绍。而此次&#xff0c;我们成功接入了大数据组件的升级和回滚功能&#xff0c;能够借助 EasyMR …...

并发编程AtomicInteger详解

AtomicInteger 是 Java 并发包 (java.util.concurrent.atomic) 中的一个原子变量类&#xff0c;用于对 int 类型的变量进行原子操作。它利用底层的 CAS&#xff08;Compare-And-Swap&#xff09;机制&#xff0c;实现了无锁的线程安全。AtomicInteger 常用于需要高效、线程安全…...

ctfshow 权限维持 web670--web679

web670 <?php// 题目说明&#xff1a; // 想办法维持权限&#xff0c;确定无误后提交check&#xff0c;通过check后&#xff0c;才会生成flag&#xff0c;此前flag不存在error_reporting(0); highlight_file(__FILE__);$a$_GET[action];switch($a){case cmd:eval($_POST[c…...

职场生存指南

求职篇 面试潜台词分析 (1)介绍: “请做一下自我介绍?” ❌:慢吞吞的介绍:叫什么,来自学校,专业,工作了那几家公司。 问题目的:个人优势+岗位匹配度+个人身上技能标签 (2)反问: “你还有什么想问的吗?” 问题目的:对工作的好奇心+个人积极性<——岗位…...

Spring源码(八)--Spring实例化的策略

Spring实例化的策略有几种 &#xff0c;可以看一下 InstantiationStrategy 相关的类。 UML 结构图 InstantiationStrategy的实现类有 SimpleInstantiationStrategy。 CglibSubclassingInstantiationStrategy 又继承了SimpleInstantiationStrategy。 InstantiationStrategy I…...

部署KVM虚拟化平台

文章目录 KVM虚拟化架构KVM组成KVM虚拟化三种模式 KVM虚拟化架构 KVM模块直接整合在Linux内核中 KVM组成 e KVM Driver虚拟机创建虚拟机内存分配虚拟CPU寄存器读写虚拟CPU运行 QEMU(快速仿真器) 模拟PC硬件的用户控件组件提供I/O设备模型及访问外设的途径 KVM虚拟化三种模式 客…...

Java对象模型深度剖析:从POJO到ENTITY

引言 在Java企业级应用开发中&#xff0c;对象模型是构建软件架构的核心。它们不仅帮助我们组织代码&#xff0c;还提升了代码的可读性和可维护性。本文将深入介绍Java中的几种关键对象模型&#xff1a;POJO、DTO、DAO、PO、BO、VO、QO和ENTITY&#xff0c;以及DO&#xff0c;…...

Nginx日志分析:编写Shell脚本进行全面日志统计

Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。无论是在大流量的网站还是小型的个人博客中&#xff0c;Nginx都得到了广泛应用。在实际生产环境中&#xff0c;对Nginx日志的分析有助于我们了解网站的访问情况&#xff0c;发现潜在问题…...

【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下)

【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下) 大家好 我是寸铁&#x1f44a; 【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分&#xf…...

C语言——运算符及表达式

C语言——运算符及表达式 运算符运算符的分类&#xff08;自增运算符&#xff09;、--&#xff08;自减运算符&#xff09;赋值运算符逗号运算符&#xff08;顺序求值运算符&#xff09; 表达式 运算符 运算符的分类 C语言的运算符范围很宽&#xff0c;除了控制语句和输入输出…...

Python面试宝典第23题:分发糖果

题目 n 个孩子站成一排&#xff0c;给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求&#xff0c;给这些孩子分发糖果。 &#xff08;1&#xff09;每个孩子至少分配到 1 个糖果。 &#xff08;2&#xff09;相邻两个孩子评分更高的孩子会获得更多的糖果。 请…...

Java与模式及其应用场景知识点分享(电子版)

前言 Java 编程语言自1995年问世以来&#xff0c;其成功好像任何编程语言都无法媲美。生逢其时(互联网的兴起)固然是一方面的原因&#xff0c;而Java吸收总结了前人的经验教训&#xff0c;反映了最新技术(the state ofthe art)&#xff0c;对其受到欢迎和采用&#xff0c;恐怕…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...