LB - Nginx

一、概述

负载均衡技术(Load Balance),把用户请求进行分发,流量分发

Nginx负载均衡:基于七层实现的负载均衡,根据虚拟的urlIP,主机接收请求,再转向(反向代理)相应的处理服务器

简单负载均衡架构图

二、负载均衡配置

官方文档: http://nginx.org/en/docs/http/load_balancing.html

 vim  /usr/local/nginx/conf/nginx.conf

LB配置:

http {
    ...
    upstream shop {
        server 10.1.1.31;
        server 10.1.1.32;
    }
    server {
        ...
        server_name  www.shop.com;
        location / {
            proxy_pass http://shop;
            proxy_set_header HOST $host;
            #将客户端真实的IP地址转发到web服务器
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

upstream 扩展

backup:其他没有backup标识的服务器都没有响应才分发到backup

down:请求不会被分发到该服务器

upstream {
    server 10.1.1.10 backup或down;
    server 10.1.1.12;
}

Web服务器配置:

重新定义日志格式,如果不定制将不会显示用户真实IP,而是会显示负载均衡服务器IP

# vim /usr/local/nginx/conf/nginx.conf
http {
    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;
}

测试:

web01web02项目的index.php分别添加测试代码,然后浏览器再进行访问,查看效果

#vim /www/shop/public/index.php
echo "web01/web02";

三、负载均衡算法

负载均衡需要解决Session共享问题

Round-Robin RR轮询(默认),一个个来

weight 权重

ip_hash, 同一个IP来源的请求分到到同一个后端服务器,可解决Session共享问题

其他

LB 高可用( + keepalived )

Last modification:August 31st, 2019 at 11:00 pm