前提是需要配置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 可以看到负载均衡(默认轮询)的效果
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容器,访问查看效果