2024年7月30日(nginx 代理 负载均衡 jdk )

news2024/11/25 12:40:39
一、nginx代理
1、动态服务器

修改index.html文件,并且发布web项目

当前这台主机1动态服务器,后端服务器对标Java服务器,由于没有部署tomcat,所以使用nginx代理

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

[root@localhost ~]# source ~/nginx.sh 

[root@localhost ~]# curl localhost
this is web server

2、静态服务器

[root@localhost ~]# echo "this is static server" > /usr/local/nginx/html/index.html 
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost ~]# ps -aux | grep nginx

[root@localhost ~]# curl localhost
this is static server
[root@localhost ~]# curl 192.168.8.151
this is web server

使用152(static server)主机代理151(web server)主机,当用户访问152时,152不响应,而由151主机响应,使用152主机nginx反向代理151主机

location proxy_pass 协议 域名 端口

修改配置文件 /usr/local/nginx/conf/nginx.conf

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

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

现在的静态服务器实际尚是代理服务器,nignx代理其他服务的时候,不需要对方同意,更加方便模块化操作,如果代理一个服务器,

3、配置allowdeny服务器

[root@allowdeny ~]# scp root@192.168.8.151:~/nginx-1.26.1.tar.gz ./
[root@allowdeny ~]# yum -y install gcc gcc-c++ pcre-devel openssl-devel
[root@allowdeny ~]# tar -xzvf nginx-1.26.1.tar.gz 

[root@allowdeny nginx-1.26.1]# cd nginx-1.26.1

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

[root@allowdeny nginx-1.26.1]# useradd -s /bin/nologin -M nginx
[root@allowdeny nginx-1.26.1]# /usr/local/nginx/sbin/nginx

修改index.html文件内容

[root@allowdeny nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@allowdeny nginx-1.26.1]# echo "your are luckly" > /usr/local/nginx/html/index.html 
[root@allowdeny nginx-1.26.1]# curl localhost
your are luckly

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


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

[root@localhost ~]# curl 192.168.8.153
your are luckly
[root@localhost ~]# curl 192.168.8.153
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>

二、负载均衡

让每一台主机能够获取相应的压力,轮询,依次将任务部署给不同主机,权重 

static server192.168.8.159
dynamicserver d0192.168.8.155
dynamicserver d1192.168.8.158
dynamicserver d2192.168.8.160

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

[root@d0 ~]# echo "I am dynamicserver d0" > /usr/local/nginx/html/index.html

 [root@d0 ~]# echo "I am dynamicserver d1" > /usr/local/nginx/html/index.html

[root@d0 ~]# echo "I am dynamicserver d2" > /usr/local/nginx/html/index.html

常用的状态有:

weight:服务访问的权重,默认是1。
down:表示当前的servel 时不参与负载均衡。
backup:预留的备份机品。当其他所有的非backup机器出现故障或者忙的时候,才会请求
backup机器,因此这台机器的压力最轻。
max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,
会在fail_timeout时间内不允许再次被选择。,返回proxy_next_upstream模块定义的错误。
fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该
server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout-起使用。
注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。

1、轮询

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

 

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

[root@static ~]# vim /usr/local/nginx/conf/nginx.conf  (d2 down)

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

2、权重

[root@static ~]# vim /usr/local/nginx/conf/nginx.conf  (权重值大的访问次数多)

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

3、ip_hash

■ 当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通
过哈希算法定位到同一台后端服务器上。
■ 这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能
保证其访问的还是后端web服务器A。

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

[root@static ~]# vim /usr/local/nginx/conf/nginx.conf (第一次访问出来是那个就一直是那个)

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

4、least_conn

least_conn:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均
地转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间农长,会导致其
所在的后端负载较高。这种情况下,leastconn这种方式就可以达到更好的负载均衡效果。

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

 三、平滑升级

1、查看nginx当前版本

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

2、平滑升级到1.27版本

(1)服务持续期间对nginx升级

下载新的nginx

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

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

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

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

使用kill -USR2 启动新版本的NGINX服务

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

[root@static nginx-1.27.0]# kill -USR2 1262

[root@static nginx-1.27.0]# kill -WINCH 1294
[root@static nginx-1.27.0]# kill -QUIT 1262

[root@static nginx-1.27.0]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 30 Jul 2024 08:44:10 GMT
Content-Type: text/html
Content-Length: 22
Connection: keep-alive
Last-Modified: Tue, 30 Jul 2024 07:44:21 GMT
ETag: "66a899d5-16"
Accept-Ranges: bytes 

tomcat9 可以在jdk8的环境运行
# tomcat10 必须在jdk17以上的版本运行
#在实际的工作中,不需要这么高的版本,在实训,要求使用最新斑斑
#新版本只换骨不换皮,我们使用新版本,为了让大家知道各个程序之间版本依赖管理

# 配置tomcat 10 运行环境

[root@d0 ~]#  wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

[root@d0 ~]# tar -xzvf jdk-22_linux-x64_bin.tar.gz 

[root@d0 bin]# cd jdk-22.0.2/

[root@d0 bin]# cd bin/
[root@d0 bin]# ./java

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

[root@d0 ~]# cd /usr/local/jdk22/
[root@d0 jdk22]# ls
[root@d0 jdk22]# pwd
/usr/local/jdk22
[root@d0 jdk22]# sed -n '$p' /etc/profile
unset -f pathmunge

[root@d0 jdk22]# sed -i '$aexport JAVA_HOME=/usr/local/jdk22/' /etc/profile
[root@d0 jdk22]# sed -n '$p' /etc/profile
export JAVA_HOME=/usr/local/jdk22/
[root@d0 jdk22]# source /etc/profile

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

[root@d0 jdk22]# sed -n '$p' /etc/profile
PATH=$JAVA_HOME/bin:$PATH
[root@d0 jdk22]# source /etc/profile
[root@d0 jdk22]# java -version

[root@d0 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz

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

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

相关文章

C++入门 | auto关键字、范围for、指针空值nullptr

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;C专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ C入门 | auto关键字、范围for、指针空值nullptr 文章编号&#xff1a;C …

原神升级计划数据表:重新布局,优化代码

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>原神升级计划数据表</title><style>* {margin: 0;padding: 0;box-sizing: border-box;body {background: #0b1b2c;}}header {width: 10…

Java斗地主--index1 (0801)

今天遇到一个很有意思的游戏–斗地主&#xff0c;那么下面就开始实现斗地主啦&#xff01;&#xff01;&#xff01; package Demo_YY;public class PockerIndex {public static void main(String[] args) {start();}public static void start(){String pocker[] new String[…

C语言中整数类型及其类型转换

1.数据的存储和排列 是的&#xff0c;在C语言中&#xff0c;整数类型通常以补码&#xff08;twos complement&#xff09;形式存储在内存中。这是因为补码表示法在处理有符号整数的加减运算上更为简便和高效。 基本类型所占字节数&#xff1a; 大端方式存储 就相当于我们平时的…

Android 自定义View(二):画布、画笔、路径(遮罩)以及Sufaceview

目录 1&#xff09;画布是什么&#xff1f;画布如何使用&#xff1f; 2&#xff09;画笔是什么&#xff0c;画笔如何生成呢&#xff1f; 3&#xff09;如何画圆、画文字、画矩形 4&#xff09;路径&#xff08;Path&#xff09;遮罩 5&#xff09;Sufaceview&#xff08;使用…

UWB实操:使用 litepoint 定制UWB信号,BPRF,HPRF,mean PRF,SFD,gap,PSDU,STS

使用 litepoint 定制UWB信号 预备知识: Technology选择UWBP VSG -> WaveGen ->UWBP Wave settings G

2024.8.6 作业

1> 使用消息队列完成两个进程之间相互通信 snd.c #include <myhead.h>struct msgbuf {long mtype;char mtext[1024]; };#define SIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc,const char *argv[]) {pid_t pid fork();if(pid-1){perror("fork er…

【C++入门(下)】—— 我与C++的不解之缘(二)

前言 接上篇&#xff0c;继续来学习C&#xff0c;本篇内容大概有 引用&#xff0c;inline 和 nullptr。 六、引用&#xff1a; 6.1、引用的定义 引用不是新定义一个变量&#xff0c;而是给已存在的变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它…

SQL基础命令

目录 查看版本 root登录 查看用户 数据库清单 创建数据库 选择数据库 删除数据库 退出 MySQL 查看版本 mysql --version root登录 mysql -uroot -p 查看用户 select user()&#xff1b; 数据库清单 show databases; 创建数据库 # create database xxx; create dat…

heic格式批量转化jpg,这几个方法简单好上手!

在这个数字化时代&#xff0c;手机摄影已成为我们记录生活、分享美好的重要方式。然而&#xff0c;苹果用户可能会遇到一个头疼的问题——拍摄的照片默认保存为HEIC格式&#xff0c;这种格式虽然能大幅节省存储空间&#xff0c;但在非苹果设备上查看或编辑时却不太方便。别担心…

8月开始|660/880/严选题45天强化带刷计划

45天刷完《严选题》《660》《880》&#xff1f; 可能吗&#xff1f; 是不是又在制造焦虑&#xff1f; 别急&#xff0c;其实严选题《660》《880》的核心知识点并不多&#xff0c;45天完全能够刷完&#xff0c;下面就是帮大家整理总结的这些习题册的核心知识点和重点题&#…

【多线程-从零开始-肆】线程安全、加锁和死锁

进程状态 进程状态&#xff1a; 就绪&#xff1a;正在 CPU 上执行&#xff0c;或者随时可以去 CPU 上执行阻塞&#xff1a;暂时不能参与 CPU 的执行 Java 的线程&#xff0c;对应状态做了更详细的区分&#xff0c;不仅仅是就绪和阻塞了 六种状态&#xff1a; NEW 当前 Thread…

vulnhub靶机实战_DC-8

一、靶机下载 靶机下载链接汇总&#xff1a;https://download.vulnhub.com/使用搜索功能&#xff0c;搜索dc类型的靶机即可。本次实战使用的靶机是&#xff1a;DC-8系统&#xff1a;Debian下载链接&#xff1a;https://download.vulnhub.com/dc/DC-8.zip 二、靶机启动 下载完…

C++编程基础的学习

Qt跨平台特性 在深入探讨C编程的基础知识之前&#xff0c;我们首先需要了解Qt框架的跨平台特性。Qt是一个功能强大的跨平台应用程序框架&#xff0c;它允许开发者编写一次代码&#xff0c;然后在多个平台上运行&#xff0c;包括Windows、macOS、Linux、iOS、Android等。这种跨…

Linux网络编程3

并发服务器 1.TCP多进程并发服务器 服务器端&#xff1a; 客户端&#xff1a; 2.TCP多线程服务器 服务器端&#xff1a; 客户机端&#xff1a; 需要学习的函数还有 1. send() 函数 send() 函数用于在套接字上发送数据。它是网络编程中发送数据到对端的主要函数之一。 函数…

人像修图-高低频磨皮

原理 将图像分成高频图层&#xff08;处理纹理细节&#xff09;和低频图层&#xff08;处理光影和光影&#xff09;&#xff0c;以达到修饰时互不干扰 步骤 复制两个图层 在低频图层建立高斯模糊&#xff1a;滤镜->模糊->高斯模糊。注意半径一般根据皮肤占比&#xf…

day 20进程

一、程序和进程的区别 程序&#xff1a;保存在磁盘空间中的的一段代码的集合&#xff0c;死的 进程&#xff1a;是一个程序动态执行的过程&#xff0c;包括进程的创建、调度和消亡的过程 二、进程相关的命令 PID:进程的标识符(进程的ID) PPID:父进程的ID号 三、进程的创建…

redis的数据结构与对象

简单动态字符串 文章目录 简单动态字符串SDS的定义SDS的结构图示结构SDS字段解析SDS的特点 SDS和字符串的区别常数复杂度获取字符串的长度杜绝缓冲区的溢出减少修改字符串时的内存分配次数二进制安全兼容部分c字符串函数总结 链表链表和链表节点的实现链表节点&#xff08;list…

全球手机基站位置数据,包含(2G-5G)基站

OpenCellID 是一个由社区维护的项目&#xff0c;它提供了一个开放的数据集&#xff0c;包含全球各地的移动通信基站信息。这个项目对于需要获取蜂窝网络基础设施详细信息的研究人员、开发者以及组织来说非常有用。这些信息可以被用来进行各种分析和应用开发&#xff0c;例如改进…

Python 在开发中的设计模式有哪些?怎样使用?

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 今天我们要聊点硬核的——设计模式。不过&#xff0c;不用担心&#xff0c;我会带着热情来跟你分享这些看似枯燥的知识点。让我们一起从“代码搬砖工”蜕变成“代码艺术家”吧&#xff…