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

nginx加tomcat动静分离,负载均衡

tomcat是什么:java开发的开源服务器

处理动态页面,静态页面处理能力一般

 jvm参数优化

配置添加 在119行之前

以2cpu 4G内存为例

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC"

cygwin=false之前

-server 一定要作为第一个参数,再多个cpu时使用

-Xmx 堆内存的最大大小

-Xms 内存初始大小

-Xmx  -Xms最好相等且等于内存的一半,避免回校后机制后重新整理堆

-Xmn新创建的对象给的内存空间

-xx:premSizea:非堆内存初始值

 -xx:maxPermSize:非堆的最大   

伸缩堆带来的大小

-xx:parallelGCThreads:设置并行垃圾收集器的线程数最好等于cpu数

-xx:premSizea -xx:maxPermSize:最好设置相且等于物理内存的四分之一

-Djava.awt.headless=true 避免再linux/unix环境下web网页不能正常显示图片

-XX:+DisableExplicitGC 关闭系统级别的垃圾回收机制,以防大起打落导致响应变慢

两个tomcat实例

Nginx+Tomcat负载均衡,动j静分离群集

 

 nginx负载均衡是通过反向代理实现的

 upstream

proxy_pass转发http://服务名称

 location匹配请求通过 http反向代理转发给后台

 nginx配置

 #定义tomcat服务器组集群

 weight权重,默认为1proxy_pass http://

 优化,图片内容保存

负载均衡模式:

rr模式轮询

每个请求按时间顺序逐一分配到不同的后端服务器,超过最大失败次数后(max_files默认为1)后端服务器死机,自动剔除故障,时访问不受影响

least_conn最少连接

优先将客户机请求调度到当前连接最少的服务器

ip_hash

每个球球按IP的hash结果分配会话断开保持

每个顾客固定一个服务器session共享问题可用后端的session共享同步

fair 第三方负载

按照后端服务器的响应时间进行分配,响应时间段的优先分配

url_hash(第三方)

根据用户请求的u人来做hash,对每个url的hash结果分配

 反向代理两种模式

 七层转发

动静分离基于七层反向代理

http{

stream{

upstream 服务器组名称{

       server IP1:PORT 【weight=1 ...】 ;

       server ip2:  PORT;

       . . . . .

       调度算法(rr轮询/加权轮询/least_conn最小链接,ip_hash,url_hash,fair/)

server {

   location ~ . . . {

      proxy_pass http://tomcat_server;

      proxy set header HosT $host;

      proxy set header X-Real-Ip $remote addr;

      proxy set header X-Forwarded-For $proxy_add_x_forwarded_for;

 }

}

}

四层反向代理:配置--with-stream 模块

http模块添加同一级的stream块(一般配置在http块上面)

proxy_pass

 关闭长连接keeptimeout=0四层代理

tomcat的长连接

四层反向代理

 stream {

  upstream 服务器组名称 {

       server ip1:PORT ;

       server ip2:  PORT;

       server ip3:PORT;

         . . . . .

   }

}

server {

   listen 监听端口;

   server_name 网站主机名;

   proxy_ pass 服务器组名称

}

}

总结nginx支持哪些类型的反向代理

基于七层的http/https/mail等应用协议的代理

基于四层的ip+tcp或udp端口的代理

例题

三台nginx需要重新编译,添加 --with-stream  编译安装

到源安装的nginx目录下

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream

make

然后把 新的objs目录下的nginx复制usr/local/nginx/sbin/下的ningx

nginx -V查看是否加载模块成功

四层反向代理的nginx配置

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  0;
   # keepalive_timeout  65;

    #gzip  on;
upstream tomcat_server {
   server 192.168.232.33:8080;
   server 192.168.232.105:8080;
}
 

server

{

listen 81;

server_name localhost;

#charset koi8-r;

如果使用80端口,需要将下面localhost端口改为80之外的端口,这里设为81.

七层反向代理的配置

upstream tomcat_server {
   server 192.168.232.33:8080;
   server 192.168.232.105:8080;
}

在tomcat中创建动态网页 :

cd /usr/local/tomcat/webapps/
 
vim index.jsp
 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

在nginx中创建静态网页:

cd /usr/share/nginx/html
vim index.html
 
<html>
<body>
<h1>this is nginx1 test web!</h1>
</body>
</html>

动态页面一定要在webapps下建立test要不会跳到tomcat默认页面

测试

 

 


http://www.kler.cn/a/13768.html

相关文章:

  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题59螺旋矩阵II) 2023.4.20
  • 动态规划——最长非降子序列
  • 司空见惯 - 参加VOE问卷调查
  • Nginx之正则表达式、location匹配简介以及rewrite重写
  • TortoiseSVN使用-权限配置
  • 机器思维(个人总结)
  • 【U8+】用友U8+对账不平案例及方法总结
  • 获得将要生成的资源的GUID
  • js 把base64转file文件
  • 基于高德导航的大作业
  • 在更高的起点创业 专访Aqara重庆服务商,探问「经营秘籍」
  • NFC 学习笔记 5 MFRC522读写器2 NDEF
  • 互联网摸鱼日报(2023-04-20)
  • Matlab 相机标定
  • “行泊舱”+出海全面发力,这家ADAS厂商跑出规模化“新速度”
  • deepstream的nvv4l2h264enc硬编码插件讲解,实现rtsp推流,且无延迟
  • 153. 寻找旋转排序数组中的最小值
  • 电子工程有哪些SCI期刊推荐? - 易智编译EaseEditing
  • Python面试题常用函数总结
  • 【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例、代码耗时计算