美文网首页
nginx 负载均衡

nginx 负载均衡

作者: 暴躁程序员 | 来源:发表于2023-01-06 09:18 被阅读0次

    一、nginx实现负载均衡原理

    将请求通过nginx服务器分摊到多个apache服务器来减小服务器压力,利用 nginx 服务器的多并发特性和 apache 服务器的稳定和功能丰富特性,使 nginx 做反向代理服务器,apache 做终端服务器

    二、nginx 常见得几种负载均衡方式

    方式一:默认的轮询

    将每个请求按照请求的先后顺序平均分配到不同的服务器上

    http {
        upstream mypros {
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    方式二:权重 - 轮询

    设置轮询的访问几率,当接受到四个请求时,会分配给 192.168.76.100 服务器1个请求,192.168.76.129 服务器3个请求

    http {
        upstream mypros {
            server 192.168.76.100:80 weight=1;
            server 192.168.76.129:80 weight=3;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    方式三:ip_hash - 轮询

    按照客户端IP进行分配,同一个ip只能访问同一台终端服务器,解决 session 跨域不共享的问题

    http {
        upstream mypros {
            ip_hash;
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    方式四:least_conn - 轮询

    将请求转发给连接数较少的服务器上

    http {
        upstream mypros {
            least_conn;
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    方式五:fair - 轮询

    按照服务器端的响应时间来分配请求,响应时间短的优先分配。

    http {
        upstream mypros {
            fair
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    方式六:url_hash - 轮询

    按照访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,需要配合缓存用

    http {
        upstream mypros {
            hash $request_uri;
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    

    三、实现默认轮询(虚拟机模拟linux服务器)

    1. 准备并开启 apache 子服务器

    1. 建立一台虚拟机,ip配置为:192.168.76.100
    2. 配置apache服务器
    yum install httpd                                               安装 apache
    
    1. 编辑/var/www/html/index.html 网页内容,插入:192.168.76.100,用于区分其他apache服务器
    vim /var/www/html/index.html                  
    
    1. 启动apache服务,并设置开机自启
    systemctl start httpd                               启动 apache 
    systemctl enable httpd                              设置 apache 开机自启         
    netstat -antlp | grep 80                            查看apache服务是否正常开启,检测80端口占用情况
    
    1. 关闭防火墙
    systemctl disable firewalld                         永久关闭防火墙
    systemctl stop firewalld                            临时关闭防火墙
    
    1. 客户端浏览器测试
    http://192.168.76.100
    

    2. 准备其他apache子服务器

    • 方式一:创建新虚拟机
      按照上述步骤配置 apache 服务器
    • 方式二:克隆第一个apache服务器
    1. 步骤
      点击虚拟机 --> 管理 --> 克隆 --> 完整克隆
      克隆出的新的虚拟机和原始虚拟机环境相同,唯一不同的是ip
    2. 查看并记录ip
      可通过 ip addr 查看新生成的随机ip,记录下来,配置负载均衡的时候需要,比如:192.168.76.129
    3. 编辑/var/www/html/index.html 网页内容,插入:92.168.76.129,用于区分其他apache服务器
    vim /var/www/html/index.html           
    

    3. 本地电脑部署nginx环境(也可用虚拟机部署nginx环境)

    1. 修改 nginx.conf 配置文件
    http {
        upstream mypros {
            server 192.168.76.100:80;
            server 192.168.76.129:80;
        }
      
        server {
            listen 80;
            server_name localhost;
      
            location / {
                proxy_pass http://mypros; 
                proxy_set_header Host $proxy_host;
            }
        }
    }
    
    1. 重启 nginx
      nginx -s reload
    2. 使用客户端访问测试
      用浏览器多次刷新访问
    http://localhost
    

    观察页面的内容变化,如果轮询则配置成功

    相关文章

      网友评论

          本文标题:nginx 负载均衡

          本文链接:https://www.haomeiwen.com/subject/rnurcdtx.html