美文网首页
负载均衡

负载均衡

作者: 北疆07 | 来源:发表于2019-06-14 17:27 被阅读0次

    负载均衡

    用途

    1.实现用户访问进行合理调度处理,最终分配给不同web节点
    2.实现用户访问压力分担,将网站压力分配给每一个节点
    让后端服务器 报错每台服务器工作平均负载
    

    实现

    硬件设备
        F5 A10 Redware
    开源软件
        Nginx Haproxy Lvs
    

    开源软件负载均衡区别

    命名
    负载均衡
    用户请求的转发
    lvs
    反向代理
    代替用户去找 再发给用户
    nginx haproxy
    功能
    lvs
    4层负载均衡
    传输层tcp/udp 端口号
    
        最大进行端口转发
    nginx haproxy
        4层和7层负载均衡
    

    准备环境

    web01上
    [root@web01 ~]# echo 'this is PC website' >/app/www/lidao.html
    
    
    web02上
    [root@web02 ~]# echo 'this is Mobile website' >/app/www/lidao.html
    
    

    db01设置

    在db01 上安装nginx软件

    [root@lb01 ~]# cat /etc/nginx/nginx.conf
    
    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;
    
        keepalive_timeout  65;
       
        #gzip  on;
        upstream upload {
        server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
        }
        upstream static {
        server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
        }
        upstream default {
        server 10.0.0.9:80 weight=1 max_fails=3 fail_timeout=10s;
        }
      #  include /etc/nginx/conf.d/*.conf;
        server  {
        listen 80;
        server_name  www.oldboy.com;
        location  /upload {
           proxy_pass http://upload;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;  
        }
        location  /static {
           proxy_pass http://static;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;  
    }
        location  / {
           proxy_pass http://default;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
         }
      }
      }   
    
    ###设置完检查语法,重启一下nginx
    

    配置upstream与location

    定义upstream移动端与PC端
    
     upstream  default {
         server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
         }
         upstream mobile {
         server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
         }
    
    
    移动端的服务器池
    
         location / {
            if ($http_user_agent ~* "Android|IOS") {
            proxy_pass http://mobile;
            }
    
    

    检查是否成功

    curl一下查看结果
    curl -A 可以指定系统
    
    [root@lb01 nginx]# curl 10.0.0.5/lidao.html
    this is PC website
    [root@lb01 nginx]# curl -A ios 10.0.0.5/lidao.html
    this is Mobile website
    [root@lb01 nginx]# curl -A Android 10.0.0.5/lidao.html
    this is Mobile website
    ####完成后下载火狐浏览器下载插件查看一下
    user agent switcher
    

    根据URI中的目录地址事项代理转发(动静分离)

    添加一台测试web03节点—10.0.0.9
    将web03的配置与web01和web02配置相同
    (/app站点目录与nginx.conf配置文件)
    

    准备环境

    www.oldboy.com/upload/index.html
    www.oldboy.com/static/index.html
    www.oldboy.com/index.html
    
    #web01:
    mkdir -p /app/www/upload/index.html
    echo this is upload >/app/www/index.html
    [root@web01 ~]# cat /app/www/upload/index.html 
    this is upload
    
    #web02:
    mkdir -p /app/www/static/index.html
    echo this is static >/app/www/index.html
    [root@web02 ~]# cat /app/www/static/index.html 
    this is static
    
    #web03:
    mkdir -p /app/www/index.html  #之前已经有首页文件,只需修改内容
    echo this is default >/app/www/index.html
    [root@web03 ~]# cat /app/www/index.html 
    this is default
    

    配置upstream与location

    定义upstream.
    
         upstream  upload {
         server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
         }
         upstream static {
         server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
         }
         upstream default {
         server 10.0.0.9:80 weight=1 max_fails=3 fail_timeout=10s;
         }
    
    
    添加location
    
         server {
         listen 80;
         server_name www.oldboy.com;
         location /upload {
             proxy_pass http://upload;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         location /static {
             proxy_pass http://static;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         location /default {
             proxy_pass http://default;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         }
    
    

    完整配置

    [root@lb01 nginx]# vim nginx.conf 
    ....
         upstream  upload {
         server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
         }
         upstream static {
         server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
         }
         upstream default { 
         server 10.0.0.9:80 weight=1 max_fails=3 fail_timeout=10s;
         }
    #    include /etc/nginx/conf.d/*.conf;
         server {
         listen 80;
         server_name www.oldboy.com;
         location /upload {
             proxy_pass http://upload;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         location /static {
             proxy_pass http://static;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         location / {
             proxy_pass http://default;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;
            }
         }
    }
    [root@lb01 nginx]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@lb01 nginx]# systemctl reload nginx
    
    

    去浏览器测试一下

    轮询算法

    ip_hash
    只要客户端ip地址相同就会被转发到同一台机器上
    

    cookie与session会话区别

    1.共同点
    存放用户信息
    key value类型 变量和变量内容
    
    2.区别
    cookie:
    存放在浏览器
    为保证安全性,存放简单信息、钥匙
    开发设置
    响应服务器给你设置
    
    session:
    存放在服务器  
    存放敏感信息
    存放锁头
    

    模块说明

    weight=1    ###权重
    max_fails=3   ####失败次数
    fail_timeout=10s   ####失败后没10秒尝试建立一次
         upstream  upload {     ###池子模块
         server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
         }
    location  /upload {   ###指向池子的模块
           proxy_pass http://upload;       
           proxy_set_header Host $host;      ####修改请求头,修改负载均衡向web服务器发出的请求头信息,$host nginx内置变量,记录着用户的请求的域名
           proxy_set_header X-Forwarded-For $remote_addr;     ####让用户访问日志记录用户的ip地址
    
    
    image.png
    image.png
    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:负载均衡

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