Nginx:负载均衡

准备

创建两个tomcat容器

tomcat容器1

`docker run -d --name tomcat8080 
-p 8080:8080
-v /zzyyuse/tomcat/8080/conf:/conf
-v /zzyyuse/tomcat/8080/logs:/logs
-v /zzyyuse/tomcat/8080/webapps:/webapps 625b734f984e`

tomcat容器2

`docker run -d --name tomcat8081 -p 8081:8080 -v 
/zzyyuse/tomcat/8081/conf:/conf -v
/zzyyuse/tomcat/8081/logs:/logs -v
/zzyyuse/tomcat/8081/webapps:/webapps tomcat:8.5.32`

tomcat容器创建完毕:在一台linux操作系统上分别占用不同的端口

`[root@aubin zzyyuse]# docker ps`
`CONTAINER ID       IMAGE               COMMAND             CREATED             STATUS             PORTS                   NAMES`
`745f69d6965d       tomcat:8.5.32       "catalina.sh run"   About a minute ago   Up About a minute   0.0.0.0:8081->8080/tcp   tomcat8081`
`388e6628e16b       625b734f984e       "catalina.sh run"   3 minutes ago       Up 3 minutes       0.0.0.0:8080->8080/tcp   tomcat8080`

在容器内部的webapps目录下创建页面

启动容器的交互式运行

`[root@aubin zzyyuse]# docker exec -it tomcat8081 /bin/bash`
·

分别在两个容器的webapps目录下的zhai目录下创建页面并进行测试

配置Nginx

启动一个Nginx容器

[root@aubin ~]# docker run -d -p 80:80 nginx
73b5dadf0e425322dd704462b92024a90c6346f2ae5186de15b036091cf927b0
[root@aubin ~]# docker ps
CONTAINER ID       IMAGE               COMMAND                 CREATED             STATUS             PORTS                   NAMES
73b5dadf0e42       nginx               "/docker-entrypoint.猞"   4 seconds ago       Up 3 seconds       0.0.0.0:80->80/tcp       laughing_khayyam
745f69d6965d       tomcat:8.5.32       "catalina.sh run"       39 minutes ago     Up 39 minutes       0.0.0.0:8081->8080/tcp   tomcat8081
388e6628e16b       625b734f984e       "catalina.sh run"       41 minutes ago     Up 41 minutes       0.0.0.0:8080->8080/tcp   tomcat8080
[root@aubin ~]# docker exec -it 73b5dadf0e42 /bin/bash

配置服务器地址

配置server

测试

每次访问相同的地址,显示的结果是不一样的,也就是说每次请求访问的服务器是不同的,Nginx能够将请求分配到不同的服务器。

负载均衡总结

分配策略

轮询

默认的策略,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

weight

weight代表权,权重默认为1,权重越高被分配的客户端越多

ip_hash

 

每个请求按访问ip的 hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:用户一首次访问到的是端口为8080的服务器,那么以后访问到的依旧是8080端口的服务器,可以解决session共享的问题。

fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。例如:有两个服务器,哪一台服务器的响应时间短就优先分配给它。

 

原文地址:https://www.cnblogs.com/zhai1997/p/13905912.html