• 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

    谢谢

  • 相关阅读:
    Codeforces 1439B. Graph Subset Problem (思维,复杂度分析)
    石子游戏(nim游戏+按位考虑)
    Codeforces 1437F Emotional Fishermen(思维,dp)
    Codeforces Round #671 (Div. 2) (A~E)
    Java就业企业面试问题ssh框架
    DUBBO初探搭建DUBBO开发环境
    Spring容器组建注解@Component和Resouces实现完全注解配置
    jUnit 4 在 s2sh 中的应用
    4.5、常量、作用域、内置全局变量
    Java 诗词纵向转换字符流输出
  • 原文地址:https://www.cnblogs.com/wangzaiplus/p/10843099.html
Copyright © 2020-2023  润新知