简介

负载均衡模块,通过一个简单的调度算法来实现客户ip到后端服务器的负载平衡
负载均衡分发请求给服务器。

  • 简单理解:负载均衡是反向代理的衍生品,当真实服务器有多台时,可以合理分配负载。
  • 也可认为:反向代理是负载均衡的一种,当真实的服务器只有一台时就是反向代理。

示意图:

upstream

写法

upstream  myproject{
  ip_hash;
  server 127.0.0.1:8000;
  server 127.0.0.1:8001 down;
  server 127.0.0.1:8002 weight=3;
  server 127.0.0.1:8003 backup;
  fair;
          }

负载均衡算法

  •  weight  负载权重,云主机配置越高权重越大
  •  down  当前server不参与负载均衡
  •  backup  其它机器全down掉或满载使用此服务(备份)
  •  ip_hash  按每个请求的hash结果分配(比较不错的方案,第一次访问的和后面访问的都是同一个主机,这样对于一个用户而言session就一直存放在访问的那台服务器中,不需要去其他地方去读取)
  •  fair  按后端响应时间来分(第三方的)

    实践

    主机远程连接mysql

    这里的负载均衡是两台服务器连接同一个数据库,所以需要远程连接数据库(如果规模扩大,数据库也可以有集群)
    这个时候需要修改settings.py中的mysql配置参数中的ip地址(修改成装有数据库所在的服务器Ip地址)

(留一个坑,但是头像传输会涉及到本地静态资源)

config.conf

upstream配置

upstream是记录参加负载服务器的IP地址的地方

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    upstream webserver{
          ip_hash;  # 利用哈希ip,让固定服务器处理固定ip,解决静态资源,session问题。
        server 47.99.192.206:80;
        server 111.230.175.230:80;

    }


    server {
    listen       80;
    server_name  localhost;

    root   /var/www/PeiQi1;

    location /static {

     #alias /var/www/PeiQi1/static;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        include /etc/nginx/uwsgi_params;
        proxy_pass http://webserver;

    }

    location / {
        proxy_set_header Host $host;      #传递主机信息
        proxy_set_header X-Real-IP $remote_addr;     #传递用户IP
        include /etc/nginx/uwsgi_params;
        proxy_pass http://webserver;
    }
  }

}
最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏