微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

springcloud负载均衡

一.简介

通俗的讲 就是一个服务器 我们在开发中主要用于做反向代理负载均衡功能 下面就跟着我们的镜头一起来看吧!

二.安装

Nginx官网: http://nginx.org/en/,自行安装Nginx,安装成功之后,打开localhost:8080来访问一下

看到如上图的样子说明Nginx已经启动成功了。接下来你有可能会有疑问 接下来我们用它做啥子呢?我在文章开头已经说过了Nginx主要实现两个功能反向代理负载均衡

三.开始使用

1.反向代理

什么是反向代理呢? 其实很好理解 就是通过Nginx转发请求到你其他的接口 以达到隐藏服务器真实地址功能

下面我们就来配置一下 首先定位到配置文件路径,Nginx.conf文件,之后用文本编辑器打开 可以看到一大坨代码 我把注释的地方都删了


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/Nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    include servers/*;
}

我们可以看见有一个server的字段 我们在这里面就可以配置服务器相关的东西了,localhost 服务器监听端口号

好的我们接下来就来配置一下反向代理 我们只需要在server里面的location添加一个proxy_pass [空格] 你的服务器地址即可

server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://localhost:8082;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

我这里在本地开了个8082端口的微服务 你们自行开启。我们修改完配置之后需要重新启动Nginx
首先结束进程

Nginx -s stop

 然后重新启动

Nginx

好的 我们来试验一下效果吧 这里不要忘了 修改配置文件必须重启Nginx才能生效

我们可以看到 我访问的是Nginx8080端口 而我的服务是在8082上面的 这时Nginx会把请求转发到8082让我可以访问到服务 可以看到网页上写着8082这是我在服务内部打印的端口

我们成功访问了接口 但是并没有暴露出服务器的地址 这就是所谓的反向代理 你请求给Nginx它帮你转发到你的本地服务上去

2.负载均衡

负载均衡就是把用户的请求 分摊到功能相同的不同服务器上去 来减轻单个服务器的压力 我想有些人到这里应该不太明白 我举个例子解释一下

百度这个网站每天有几亿人进行访问 这么庞大的访问量往往用一个服务器是不可能完成快速响应的 所以百度使用了集群策略 买了100台服务器 每个服务器都能提供搜索服务 用户访问百度的时候 会按照一定逻辑 随机访问其中一个 这样就不至于造成单个压力过大而宕机了 反过来说 即使单个服务器宕机后 还有99个服务器可以服务 所以搜索功能是不受影响的

这篇文章我用本地来模拟一下负载均衡 我从本地开两个服务:8082和:8083做集群

之后我们来简单配置一下Nginx.conf文件

    upstream jiqun {
        server localhost:8082;
        server localhost:8083;
    }

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://jiqun;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置中可以看到 首先声明两个服务 起个别名为jiqun之后我们修改proxy_passhttp://jiqun就可以了 这样我们访问接口的时候 就会随机转发到这两个相同的服务上去 实现负载均衡了

我们可以看到 访问同一个网址 会在两个不同端口的微服务之间来回切换 说明我们已经实现了负载均衡

好的 接下来 我们来引入一个概念权重

假如我们有两个服务器
一个处理能力强
一个处理能力弱

我们希望让处理能力强的服务器 多接收一些用户请求 所以我们就要给Nginx配置权重

upstream jiqun {
        server localhost:8082 weight=2;
        server localhost:8083 weight=1;
}

weight就是权重 配置为2的权重要比1高 我们来实际看一下效果 好的重启Nginx 我们来看看效果

所以没有配置过权重 认就是同样的权重 好了 这就是Nginx最基本的配置实现了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐