nginx负载均衡、java、tomcat装包

news2024/12/29 1:22:08

一、nginx 七层负载均衡

1、七层负载均衡基础配置

2、负载均衡状态

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

worker_processes 1;

event {

   worker_connections 1024;

   }

   http {      # 七层负载均衡支持http、ftp协议

      include mime.types;

      default_type application/octet-stream;

      sendfile on;

      keepalive_timeout 65;

      upstream qicengzu {     # 服务器组,组名qingcengzu

           server 192.168.33.11:8080;     # 组内服务器1

           server 192.168.33.22:8080;     # 组内服务器2

           }
 
      server {     # 虚拟服务器
  
           listen 80;     # 虚拟服务器端口

           server_name localhost;     # 虚拟服务器名

           location {    # 虚拟服务器的url跳转
 
                proxy_pass http://qicengzu;# 当访问本机的80端口时,跳转到服务器组

            }

      }

}

 3、负载均衡策略

(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

1)当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。

2)这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。

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

upstream backend {

    ip_hash; # ip_hash算法
  
    server 192.168.33.11:8080;

    server 192.168.33.22:8080;

}

(4)least_conn

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

upstream backend {

    least_conn; # 将请求转发给连接数较少的后端服务器

    server 192.168.33.11:8080;

    server 192.168.33.22:8080;

}

(5)url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用ur_hash,可以使得同一个url (也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从缓存中读取。

upstream backend {

     hash $request_uri;

     server 192.168.33.11:8080;
 
     server 192.168.33.22:8080;

}

二、nginx四层负载均衡

1、四层使用 stream 模块,与七层的 http 模块同级。

[root@localhost ~]# nginx -V
nginx version: nginx/1.22.1

built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)

built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx--with-httpssl module --withhttp_stub status_module --with-http_realip module
[root@localhost ~]# cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxbak   #将原有/usr/local/nginx/sbin/nginx进行备份

[root@localhost ~]# cd /usr/src/nginx-1.22.1/

[root@localhost nginx-1.22.1]# Is

auto CHANGES CHANGES.ru configure html Makefile objs

conf contrib LICENSE man README src
[root@localhost nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --withhttp_ssl_module --with-http_stub_status_module --withhttp_realip_module --with-stream     # 安装指定模块

[root@localhost nginx-1.22.1]# make # 进行编译
[root@localhost nginx-1.22.1]# cp ./objs/nginx  /usr/local/nginx/sbin/ # 将obis下面的nginx移动到/usr/local/nginx/sbin下

[root@localhost nginx-1.22.1]# nginx -V    # 模块添加成功

nginx version: nginx/1.22.1

built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)

built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx--with-httpssl module --withhttp_stub status_module --with-http_realip module --withstream
[root@server ~]# vim /usr/local/nginx/conf/nginx.conf
events {
    worker_connections 1024;
    }
    stream {
        upstream dongtai {    # 配置dongtai服务器组
             server 192.168.33.11:8080;    # 动态资源走tomcat的8080端口
             server 192.168.33.22:8080;
        }
        server {
             listen 81;     # 设置监听端口
             proxy_pass dongtai;  #当请求访问到本机的81端口时,将请求转发到dongtai组
        }
        upstream jingtai {    # 配置jingtai服务器组
             server 192.168.33.33:80; # 静态资源走nginx或tomcat的80端口
             server 192.168.33.44:80;
        }
        server {
             listen 82;
             proxy_pass jingtai;
        }
  }

三、java环境的配置

1、下载jdk22

wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

2、解压

tar -zxvf jdk-22.2.tar.gz

3、移动到usr目录

mv jdk-22.2/ /usr/local/jdk22/

4、修改配置文件

vim /etc/profire

……

export JAVA_HOME=/usr/local/jdk22/

export PATH=$JAVA_HOME/bin:$PATH

5、运行profile

source /etc/profile

6、测试

java

java -version

四、tomcat的配置

1、tomcat启动服务

/usr/local/tomcat/bin/startup.sh    //启动
netstat -lnput|grep java     //端口状态
8080
8005
/usr/local/tomcat/bin/shutdown.sh    //停用

2、tomcat的目录

(1)bin

1)可执行文件

A.在window和linux通用

B. win10上优化之后上传到linx,只需要添加权限就可以了

C. win对应的文件的扩展名为bat(批处理文件)

D. linux对应的文件的扩展名为sh

F. startupsh

E. Shutdown.sh

(2)webapps

1)每个目录就是一个项目

2)ROOT是默认的项目目录,在实际开发中,我们可以将程序打包成ROOT.war或者将目录名称修改为ROOT就可以直接发布。

3)使用10.1.1.20:8080直接访问的页面是ROOT目录下的index.jsp

4)在这个目录下可以部署一些静态资源,可以使用浏览器查看,也可以使用下载

5)用可以在该目录下创建新的文件夹作为项目发布

6)要发布项目有两个选项

 A. 将项目移动该目录下

 B. 在conf/server.xml修改资源文件的位置

 C. nginx 默认的路径/usr/local/nginx/html,也可以在server中配置其他的绝对路径,不必须是在内部的html目录中

(3)work

1)将jsp还原成java和class文件

2)保存的路径

/usr/local/tomcat/work/Catalina/localhost/myweb/org/apache/jsp/xxx.java

3)自动将jsp解析为javav文件,不需要重启服务器

(4)logs

1)日志文档

2)catalina.log

3)localhost.log

4)都有相应日期

(5)conf

[root@dynamic001 conf]# ls -l

总用量 232

drwxr-x--- 3 root root 23 8月 1 14:11 Catalina

-rw------- 1 root root 12926 7月 8 05:02

catalina.policy

-rw------- 1 root root 7693 7月 8 05:02

catalina.properties

-rw------- 1 root root 1411 7月 8 05:02 context.xml

-rw------- 1 root root 1149 7月 8 05:02 jaspic

providers.xml

-rw------- 1 root root 2313 7月 8 05:02 jaspic

providers.xsd

-rw------- 1 root root 4144 7月 8 05:02

logging.properties

####################################################333

-rw------- 1 root root 7126 7月 8 05:02 server.xml

######################################################

-rw------- 1 root root 2756 7月 8 05:02 tomcat

users.xml

-rw------- 1 root root 2558 7月 8 05:02 tomcat

users.xsd#####################################################

-rw------- 1 root root 172780 7月 8 05:02 web.xml

######################################################33

(6)lib

(1)tomcat运行为项目提供的依赖文件

(2)要访问没有数据,访问数据库的包

五、数据库

1、关系型数据库

(1)oracle

(2)mysql

1)安装和配置

2)sql语句

3)优化

4)备份与安全

5)集群

A.主从

B. 一主多从

C. 增删改主机

D. 从服务负责mysql查询

(3)sql-server

2、非关系型数据库

(1)redis

(2)cached

(3)mongodb

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

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

相关文章

T3学员领取资料通知0803

T3学员领取资料通知0803 各位学员∶本周MF系列VBA技术资料增加671-680讲,T3学员看到通知后请免费领取,领取时间8月2日晚上19:00-8月3日12:00。本次增加内容: MF671:Shell命令输出计算机的详细信息 MF672:Shell命令输出网络配置信息 MF673:解锁和启用…

QtQuick Text-文本省略

效果 import QtQuickColumn{spacing: 20Text{width: 200text: qsTr("1使文本在单行中对于超出部分不要进行省略")font.pointSize: 20}Text{width: 200elide: Text.ElideLefttext: qsTr("2使文本在单行中对于超出部分从左边进行省略")font.pointSize: 20}Te…

【协作提效 Go - gin ! swagger】

什么是swagger Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括: API 文档生成:Swagger 可以自动生成详细的 API 文档,包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理…

【香橙派系列教程】(五)Linux的热拔插UDEV机制

【五】Linux的热拔插UDEV机制 在上一篇中我们发现,当手机接入开发板时,系统并不认识,当我们在/etc/udev目录下创建一个规则后,就可以通过adb访问到手机了,这里到底是怎么回事? 文章目录 【五】Linux的热拔插…

【Python】数据类型(上)

本篇文章将讲解: (1)整型 (2)布尔类型 一:整型 整型其实就是十进制整数的统称,例如:1 666 都属于整型。 (1)定义 num11 age45 &#xff08…

【网络】网络入门(第一篇)

网络入门可以从多个方面开始,以下是一个基本的网络入门指南,涵盖了网络的基本概念、网络类型、网络协议、网络拓扑、网络设备以及网络地址等方面。 一、网络基本概念 计算机网络:将多个计算机系统和设备连接在一起,以实现资源共…

Opencv学习-LUT函数

这个函数大概意思根据自己设定的查找表,改变原本像素点值 例如:我们想将一张图片灰度为0-100的像素的灰度变成0,101-200的变成100,201-255的变成255。我们就可已建立如下的一张表格 ​​​​​​​ ​​​​​​​ ​​​​​​​…

Studying-代码随想录训练营day52| 101.孤岛的总面积、102沉没孤岛、103.水流问题、104.建造最大岛屿

第52天,图论part03,岛屿问题继续!!💪(ง •_•)ง,编程语言:C 目录 101.孤岛的总面积 102沉没孤岛 103.水流问题 104.建造最大岛屿 101.孤岛的总面积 文档讲解:手撕孤岛的总…

昇思25天学习打卡营第XX天|SSD目标检测

感觉目标检测还是yolo相对最火?ssd有点老了可以更新下 SSD算法数学描述 SSD算法使用卷积神经网络(CNN)进行特征提取,并通过多尺度的特征图进行目标检测。设 ( C ) 为CNN输出的特征层数量,( F_i ) 为第 ( i ) 层特征…

【Postman的接口测试工具介绍】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉Postman接口.👋 👉Postman是一款常用的API开发测试工具,它提…

Harmony学习(四)(应用程序框架基础)

1.应该程序框架基础 多Module设计机制 模块化开发:一个应用多个功能,每个功能可作为一个模块,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能支持多设备&#xf…

jdk的版本匹配 Usage of ApI documented as @since 11+

IDEA 解决 Usage of API documented as since XX 的方法 如下所示,代码已经报错提示。 这个问题的原因是IDEA 设置的jdk Language level 语法级别太低,不适配代码导致的,只要在项目结构中将语法级别调相应的级别就可以了。具体解决思路见下图…

vue-创建自己的CLI脚手架

1.自定义命令和入口配置 首先创建一个文件夹,然后npm init -y生成package.json文件 添加bin命令配置入口文件 新建lib/index.js文件 然后在控制台npm link 建立软连接 、然后执行felix-cli 就可以输出代码 2.查看当前版本号命令 安装 commander npm i commander…

系统架构设计师 - 企业信息化战略与实施

企业信息化战略与实施 企业信息化战略与实施信息与信息化的概念信息的定义信息的特点信息化的概念信息化对组织的意义 信息系统生命周期 ★立项阶段开发阶段运维阶段消亡阶段 信息系统战略规划 ★ ★ ★政府信息化与电子政务 ★企业信息化与电子商务 ★ ★ ★企业资源计划企业资…

2024年让短片制作不再难,4款剪辑软件助你一臂之力!

在这个短视频流行的时代,每一个创意都值得被展现,每一份热情都值得被激发。你是不是也曾经想过,用镜头来讲述你的故事,用剪辑来展示你的才华?今天,我们一起来探索2024年制作高质量短片的秘密武器——4款强大…

gitignore文件设置,git提交时忽略部分文件

在git提交时,出现了非常多无用的文件,包括.idea、.iml文件等等,使得commit变得麻烦,要自己在勾选框中点击半天。 右键单击项目名,选择New 选择File,命名为.gitignore(注意:开头符号是英文.&…

文件描述符(fileno)及文件系统

fileno: #include <stdio.h> main() {FILE *fp;int fd;fp fopen("/etc/passwd", "r");fd fileno(fp);printf("fd %d\n", fd);fclose(fp); } 一&#xff0e;fileno()函数-CSDN博客https://blog.csdn.net/TuxedoLinux/article/detai…

利用开源可视化报表工具进入流程化办公!

很多客户朋友都希望能实现流程化办公&#xff0c;因为只有这样才能帮助企业顺利降本、增效、提质&#xff0c;利用好企业内部数据资源&#xff0c;打破信息孤岛壁垒&#xff0c;实现高效发展。低代码技术平台、开源可视化报表工具优势功能特点多&#xff0c;是提质高效的办公利…

日本软文发稿:日本主流发稿媒体有哪些?

日本软文发稿&#xff1a;日本主流发稿媒体有哪些 在日本发布软文时&#xff0c;选择合适的主流媒体进行推广是非常关键的。以下是一些在日本广受欢迎、影响力较大的媒体推荐&#xff08;排列不区分媒体排名顺序&#xff09;&#xff1a; 1. 朝日新闻 (Asahi Shimbun) 朝日新…

ChildLife童年时光创始人Murray Clarke亮相CBME并解析技术创新

2024年7月17日至19日&#xff0c;全球知名的孕婴童产品展览会——CBME国际孕婴童展在上海盛大开幕。作为这一领域最具影响力的展会之一&#xff0c;CBME吸引了众多国际知名品牌前来参展。美国知名儿童营养品牌ChildLife童年时光也携其重磅新品“液体钙小绿钙”亮相本次展会。Ch…