美文网首页
负载均衡

负载均衡

作者: 北疆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