2020系统综合实践 第4次实践作业

一、使用Docker-compose实现Tomcat+Nginx负载均衡

1、nginx反向代理原理

多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色。 反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。(参考资料:Nginx详解)

2020系统综合实践 第4次实践作业_第1张图片

2、nginx代理tomcat集群,代理2个以上tomcat

在目录下创建如下文件

2020系统综合实践 第4次实践作业_第2张图片

docker-compose.yml

version: "3"
services:
    nginx:
        image: nginx
        container_name: yxynginx
        ports:
            - "80:80"
        volumes:
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf # 挂载配置文件
        depends_on:
            - tomcat01
            - tomcat02
            - tomcat03

    tomcat01:
        image: tomcat
        container_name: yxytomcat1
        volumes:
            - ./tomcat1:/usr/local/tomcat/webapps/ROOT # 挂载web目录

    tomcat02:
        image: tomcat
        container_name: yxytomcat2
        volumes:
            - ./tomcat2:/usr/local/tomcat/webapps/ROOT

    tomcat03:
        image: tomcat
        container_name: yxytomcat3
        volumes:
            - ./tomcat3:/usr/local/tomcat/webapps/ROOT

default.conf

upstream tomcats {
    server yxytomcat1:8080; # 主机名:端口号
    server yxytomcat2:8080; # tomcat默认端口号8080
    server yxytomcat3:8080; # 默认使用轮询策略
}

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://tomcats; # 请求转向tomcats
    }
}

在tomcat文件夹中打开终端,运行docker-compose

sudo docker-compose up -d


查看容器

2020系统综合实践 第4次实践作业_第3张图片

3、了解nginx的负载均衡策略,并至少实现nginx的2种负载均衡策略

3.1 轮询策略

最基本的配置方法,上面配置的就是轮询的方式,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。

  • nginx配置文件default.conf :

    upstream tomcats {
        server yxytomcat1:8080;
        server yxytomcat2:8080;
        server yxytomcat3:8080;
    }
    ...
    
  • 使用简单的爬虫查看(也可以直接在浏览器中访问127.0.0.1)

    #ex4.py
    import requests
    
    url="http://127.0.0.1"
    
    for i in range(0,10):
    	reponse=requests.get(url)
    	print(reponse.text)
    

    2020系统综合实践 第4次实践作业_第4张图片

3.2权重策略

在轮询策略的基础上指定轮询的几率。

  • 修改default.conf

    upstream tomcats {
        server yxytomcat1:8080 weight=5;
        server yxytomcat2:8080 weight=2;
        server yxytomcat3:8080 weight=1;
    }
    ...
    
  • 重启nginx容器(这步别漏了!前面漏了这步,查看结果就一直在轮询,没有切换成权重):

    sudo docker restart yxynginx
    

  • 使用刚才的爬虫查看负载均衡的结果

    2020系统综合实践 第4次实践作业_第5张图片

你可能感兴趣的:(2020系统综合实践 第4次实践作业)