最近关注了一下分布式dubbo和springCloud,dubbo简单的做了一下总结,springCloud还没有进行系统的学习,等过段时间学习了之后再写一篇关于它的文章。
借用百度百科里面的介绍就是
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

简单的说一下就是dubbo的负载均衡是服务层面,nginx的负载均衡是在http请求层面。

nginx的简单实现

nginx下载安装

首先这里我使用的是docker进行操作,毕竟现在docker已经非常的流行,构建起来也是很简单的。
我这里用的是centos8搭建的docker,可以看一下我之前写的docker教程

docker安装nginx

  • 首先我们可以先看一下docker里面的nginx版本:
    image.png
  • 将nginx的镜像下载下来即可:
    image.png
  • 启动nginx:
    由于docker启动nginx容器之后并不能直接启动nginx服务,所以还需要去/usr/sbin/启动nginx。
    image.png
    这样我们访问centos的地址就可以看到nginx已经启动了:
    image.png

在这里我们可能会发现我们访问地址后没有显示这个页面,而是显示的无法连接,其实是因为我们没有开放centos的80端口,我们只需要关闭防火墙就可以了。

  
  1. 查看防火墙状态
     firewall-cmd --state
  2. 停止firewall
     systemctl stop firewalld.service
  3. 禁止firewall开机启动
     systemctl disable firewalld.service

nginx的简单应用

首先实现nginx应用的时候我们需要先下载两个tomcat,所以在docker里面我们应该先启动两个tomcat。
image.png
启动两个tomcat,端口分别是8080和8081
image.png
我们需要进入容器内启动tomcat
image.png
这样我们两个tomcat都启动完毕了
image.png
image.png

反向代理

反向代理隐藏了服务器的信息!
image.png
我们想要实现的功能就是访问虚拟机的地址,然后通过nginx反向代理到8080的tomcat里面。
现在我们访问虚拟机的地址还是显示nginx的欢迎页面:
我们进入nginx容器的/etc/nginx文件夹里面修改nginx.conf:
image.png

  • 先安装vim编辑器

    apt-get update
    apt-get install vim
  • 进行编辑:
    image.png

    server {
     listen 80; # 端口号
     server_name 192.168.233.128; # 虚拟服务器的识别路径
         location  ~ /edu/ {
             root html;
             proxy_pass http://192.168.233.128:8080; # 代理的地址
             index index.html index.html;
     }
         location  ~ /vod/ {
             root html;
             proxy_pass http://192.168.233.128:8081; # 代理的地址
             index index.html index.html;
     }
    }
  • 启动ngins:

    重启nginx
    service nginx restart   
    启动nginx
    ./nginx
    停止nginx
    ./nginx -s stop
  • 查看页面:
    image.png
    image.png
nginx负载均衡
  • 首先需要将两个tomcat里面配置相同的文件:
    我们需要在连个tomcat里面都建一个test文件夹,然后里面新建一个同名的html文件,这里我们还是叫a.html就可以了。
    8080的tomcat服务器:
    image.png
    image.png
    8081的tomcat服务器:
    image.png
    image.png
  • 配置nginx.conf
    首先我们需要先新建一个upstream模块:
    image.png
    然后我们需要在server里面配置相关信息,这里的proxy_pass需要使用我们上面的upstream模块:
    image.png
    启动或者重启nginx就可以了,这里我们使用的是默认的轮询:
1.轮询(默认)
  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.weight
  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  upstream myserver {
    server 192.168.233.128:8080 weight 5;
    server 192.168.233.128:8081 weigth 10;
  }
3. ip_hash
  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
  upstream myserver {
    ip_hash;
    server 192.168.233.128:8080;
    server 192.168.233.128:8081;
  }
4.fair(第三方)
  按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
  upstream myserver {
    server 192.168.233.128:8080;
    server 192.168.233.128:8081;
    fair;
  }

测试(通过):
image.png
image.png


周兆东
107 声望21 粉丝

一个java小白的成长之路。。。