美文网首页
负载均衡 --- 2021-11-14

负载均衡 --- 2021-11-14

作者: 一位先生_ | 来源:发表于2021-11-14 22:03 被阅读0次

七层负载均衡的实现:

基于URL等应用层信息的负载均衡,
功能强大,性能卓越,运行稳定;
配置简单灵活;
能够自动剔除工作不正常的后端服务器;
上传文件使用异步模式;
支持多种分配策略,可以分配权重,分配方式灵活;

NGINX负载均衡:
内置策略:
IP Hash ,加权轮询;
加权轮询策略:首先将请求分发给权重高的机器,直到该机器的权值降到比其他机器低,才将请求分发给下一个最高权重的机器;当所有后端机器都down掉时,nginx 会立即将所有机器的标志位状态清成初始状态;以避免所有的机器都处于timeout的状态;
IP Hash策略:是一种变向的轮询算法。
扩展策略:
fair策略,通用hash,一致hash;
fair策略:根据后端服务器的响应时间判断负载情况;从中选出负载最轻的机器进行分流。
通用hash比较简单,可以以nginx内置的变量为key进行hash,一致性hash才用了nginx内置的一致性hash环,支持memcache。

image.png

注意:记得去阿里云开启你的安全端口8080,8081,8082(取决于你的服务器商)

user  www www;

worker_processes auto;
worker_cpu_affinity auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept off;
        accept_mutex off;
    }

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

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile on;
        sendfile_max_chunk 512k;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

        server_tokens off;
        access_log off;

        upstream imooc_cluster
        {
            #ip_hash;
            server 81.69.33.124:8080 weight=11;
            server 81.69.33.124:8081 weight=12;
            server 81.69.33.124:8082 weight=13;
        }
server
    {
        listen 8080 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        location / {
            add_header REAL_SERVER 8080;
        }
    }

server
    {
        listen 8081 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        location / {
            add_header REAL_SERVER 8081;
        }
    }
server
    {
        listen 8082 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        location / {
            add_header REAL_SERVER 8082;
        }
    }    

server
    {
        listen 80 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location / 
        {
            proxy_pass http://imooc_cluster;
        }
        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }



#include vhost/*.conf;
}

四层负载均衡的实现:
通过报文中的地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
LVS实现负服务器集群载均衡有三种方式,NAT,DR,TUN。

相关文章

网友评论

      本文标题:负载均衡 --- 2021-11-14

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