zoukankan      html  css  js  c++  java
  • nginx+tomcat实现负载均衡(windows环境)

    一、准备工作

    1. nginx1.14
      nginx1.14下载链接

    2. tomcat8
      tomcat8下载链接

    3. windows系统

    二、实现目标

    访问http://localhost地址时, 将请求轮询到tomcat1tomcat2服务器上, 实现负载均衡, 并通过proxy_connect_timeout 1;配置, 实现其中一台服务器宕机能快速切换到另一台服务器上面, 从而不影响使用

    1. 第一次、第二次请求到tomcat2服务器
      image.png

    2. 第三次请求到tomcat1服务器, 说明负载均衡生效
      image.png

    3. 停掉tomcat2, 再次请求, 请求自动分发到tomcat1, 开启tomcat2, 轮询请求再次生效

    三、实现

    1. 下载nginx和tomcat, 复制一份tomcat作为tomcat2服务器
      image.png

    2. 分别修改tomcat1、tomcat2的server.xml配置文件
      image.png

    tomcat2一样, 对应修改为28005, 28080, 28009

    为了区分tomcat1、tomcat2, 修改F: est_nginx_tomcat omcat1webappsROOT目录下的index.jsp文件内容
    image.png

    1. 分别启动tomcat1、tomcat2, /bin目录下startup.bat命令, 访问http://localhost:18080http://localhost:28080, 查看是否启动成功
      image.png

    image.png

    1. 到目前为止两台tomcat服务器已经准备就绪了, 但是还没配置nginx, 所以此时是访问不了http://localhost的, 如:
      image.png

    2. OK, 现在配置nginx, 其实就是修改nginx.conf文件

    worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致
     
    events {
        worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数)
    }
     
    http {
        include       mime.types; #文件扩展名与文件类型映射表
        default_type  application/octet-stream;#默认文件类型
     
        sendfile        on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
        
    	keepalive_timeout  65; #长连接超时时间,单位是秒
     
        gzip  on;#启用Gizp压缩
    	
    	#服务器的集群
        upstream  test.nginx.com {  #服务器集群名字	
    		server    127.0.0.1:18080  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。
    		server    127.0.0.1:28080  weight=2;
    	}	
     
    	#当前的Nginx的配置
        server {
            listen       80;#监听80端口,可以改成其他端口
            server_name  localhost;##############	当前服务的域名
     
    	location / {
                proxy_pass http://test.nginx.com;
                proxy_redirect default;
    	    proxy_connect_timeout 3;
    	    proxy_read_timeout 1;
    	    proxy_send_timeout 1;
            }
    		
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    这是参考别人的配置, 最重要的是下面中的内容
    image.png

    • upstream: 指定服务器集群, 我们开启了tomcat1、tomcat2, 定义2个server即可
    • weight: 权重, tomcat2是1的两倍, 后面测试发现, 基本上tomcat1和tomcat2的请求次数比例为1:2
    • server: 监听localhost:80的所有请求, 并将请求根据upstream配置的集群规则进行分发, 注意, proxy_pass的test.nginx.com必须跟upstream的test.nginx.com一致
    	    proxy_connect_timeout 3; # 当其中一台服务器宕机后, 请求连接的超时时间, 设为3s, 可以看到tomcat2宕机后, 当轮询到tomcat2服务器时, 响应会有3s的延时, 3s后自动将请求转到tomcat1服务器, 实现了集群的高可用, 同理, 开启tomcat2后, nginx恢复正常的轮询请求
    	    proxy_read_timeout 1;
    	    proxy_send_timeout 1;
    
    1. 保存配置, 启动nginx, 双击启动
      image.png

    浏览器请求http://localhost, 不断刷新、停掉任意一台服务器, 可以看到文章实现目标中的效果

    四、文章参考

    https://blog.csdn.net/wang379275614/article/details/47778201

    谢谢

  • 相关阅读:
    SAP OPEN UI5 Step 8: Translatable Texts
    SAP OPEN UI5 Step7 JSON Model
    SAP OPEN UI5 Step6 Modules
    SAP OPEN UI5 Step5 Controllers
    SAP OPEN UI5 Step4 Xml View
    SAP OPEN UI5 Step3 Controls
    SAP OPEN UI5 Step2 Bootstrap
    SAP OPEN UI5 Step1 环境安装和hello world
    2021php最新composer的使用攻略
    Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error
  • 原文地址:https://www.cnblogs.com/wangzaiplus/p/10843099.html
Copyright © 2011-2022 走看看