• Nginx——端口负载均衡


    前言

    Nginx做的代理后面SpringBoot的项目,1N3T的架构,Tomcat的配置也进行了相应的调优。

    配置

    这里主要来简单的说下Nginx的端口负载均衡,具体的大家可以参考

    Nginx文档 | Nginx 烹调书(Nginx Cookbook 中文版) | Nginx文档PLUS

    upstream是nignx分配方式,默认是轮询

    1. 轮询: 轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器。
    2. weight: 按着权重的大小进行轮询。
    3. ip_hash: 每个请求按照访问ip的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
    4. fair: 可以根据页面大小、加载时间长短智能的进行负载均衡,响应时间短的后端服务器优先分配请求。
    5. url_hash: 与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
    6. least_conn: 把请求转发给连接数较少的后端服务器
    

    轮询

    # max_fails=2 fail_timeout=30s 代表在30秒内请求某一应用失败2次,认为该应用宕机,等待30秒再次请求
    
    upstream pool {
                    server 192.168.10.1:6001  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:51001 weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6005  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6004  weight=10 max_fails=2 fail_timeout=30s;
            }
    

    ip_hash

    upstream pool {
                    ip_hash;
                    server 192.168.10.1:6001  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:51001 weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6005  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6004  weight=10 max_fails=2 fail_timeout=30s;
            }
    

    完整配置

    我这边是虚拟主机的,所以直接配置对应的虚拟主机的配置就好了,完整配置如下

    # 负载的地址池
    upstream pool {
                    ip_hash;
                    server 192.168.10.1:6001  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:51001 weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6005  weight=10 max_fails=2 fail_timeout=30s;
                    server 192.168.10.1:6004  weight=10 max_fails=2 fail_timeout=30s;
     }
    
    server
        {
            listen 80;
            listen 443 ssl;
    
            server_name app.xxxx.net;
            index index.html index.htm index.php default.html default.htm default.php;
            underscores_in_headers on;
            root /usr/local/nginx/conf/html;
            ssl_certificate   /cert/app.xxxx.net.pem;
            ssl_certificate_key  /cert/app.xxxx.net.key;
            ssl_session_timeout 5m;
            ssl_ciphers xxxxxxxxxxxxxxxx;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
    
            location / {
                   proxy_set_header  Host $host:80;
                   proxy_set_header  X-Real-IP $remote_addr;
                   proxy_set_header x-forwarded-for $remote_addr;
                   #地址池名称pool
                   proxy_pass http://pool;
            }
    
    
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
                  #地址池名称pool
                  proxy_pass http://pool;
                  expires      30d;
             }
    
            location ~ .*.(js|css)?$ {
                  #地址池名称pool
                  proxy_pass http://pool;
                  expires      12h;
            }
    
            access_log  /home/wwwlogs/app.xxxx.net.log;
        }
    
    

    pool是自己命名的一个变量,你可以命名为别的值

    Nginx端口负载均衡就是这么的简单,但是不要忘记reload一下哦~

  • 相关阅读:
    iOS 学习
    swift
    (九)Javabean与Jsp(来自那些年的笔记)
    (八)JSP 技术知识点总结(来自那些年的笔记)
    java抽象工厂模式
    java工厂方法模式
    java的简单工厂模式
    服务提供者框架讲解 之 myJDBC
    第一条:考虑用静态工厂方法代替构造器
    另辟蹊径的归并排序复杂度分析
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/11946690.html
Copyright © 2020-2023  润新知