前提是需要配置Nginx的反向代理,可以我看之前的文章

上篇Nginx配置动态代理的文章,我们在tomcat里写了两个简单html

这次我们依然采取同样的思路来演示负载均衡

一、负载均衡

1.在两个Tomcat容器(我这里一个端口8081,一个8082)里的webapps目录下都创建目录vod

2.在vod目录下都创建一个a.html  里面简单写点东西就行

我这里8081端口的Tomcat中html写的是 <h1>hello</h1>

8082端口的Tomcat中html写的是 <h1>8082</h1>

3.重启这两个Tomcat容器 docker restart 名字或容器ID

4.配置Nginx配置文件(上篇Nginx反向代理有详细介绍),在http下添加

#下面为负载均衡配置,默认为轮询,myserver是名字可以随意更改,要和server里对应的一样
upstream myserver{
 server ip:8081;
 server ip:8082;
 }server{
        #监听的端口
        listen 9003;
        #字符格式
        charset utf-8;
        #当前的服务器ip
        server_name ip;       location / {
           #要代理去哪个服务器的ip以及端口,这里的myserver是上面配置的轮询
           proxy_pass http://myserver;
           #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
           proxy_redirect default;
        }}



5.保存退出,重启Nginx重启

6.访问 http://ip:9003/vod/a.html  可以看到负载均衡(默认轮询)的效果

nginx docker 内存 nginx docker负载_nginx

nginx docker 内存 nginx docker负载_docker_02

7.Nginx的负载均衡策略

①轮询(默认)
②weight ,代表权重,默认为1,权重越高,被分配的客户端越多
upstream myserver{
 server ip:8081 weight=5;
 server ip:8082 weight=10;
 }
 ③ip_hash,每个请求按访问ip的hash结果分配,这样每个访客固定访问一-个后端服务器,可以解决session的问题。
upstream myserver{
ip_hash;
 server ip:8081;
 server ip:8082;
 }
 ④fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{
 server ip:8081;
 server ip:8082;fair;
 }

二、动静分离

1.进入Nginx的容器里 docker exec -it Nginx名称或者容器ID /bin/bash

2.进入/data目录 cd /data

3.创建一个txt目录(后续这里就是image、html等等静态文件)

4.vim a.txt 我这里只写了ooooooooooooooooooooooooooooooooooo来做演示

#注意:这里开放的端口为9004,如果没有开放Nginx容器的9004端口,可以查找一下教程开放一下,我一般都是删除这个Nginx容器然后重新运行一个开放了端口的Nginx容器
docker rm -f Nginx容器名称或者容器ID
docker run -p 9002:80 -p 9001:9001 -p 9003:9003 -p 9004:9004 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
server{
        #监听的端口
        listen 9004;
        #字符格式
        charset utf-8;
        #当前的服务器ip
        server_name ip;       location /txt/ {
           root /data/;
           index index.html index.htm;
        }}



 重启Nginx容器,访问查看效果

nginx docker 内存 nginx docker负载_nginx_03