JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Docker中配置简单的Nginx+Tomcat的web负载均衡

wys521 2024-10-09 18:43:28 精选教程 45 ℃ 0 评论

负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就可以分发给后台服务端(backend servers,也叫做服务池, 后面简称backend)来做复杂的计算、处理和响应,这种模式的好处是相当多的:隐藏业务主机更安全,节约了公网IP地址,并且在业务量增加的时候可以方便地扩容后台服务器。

负载均衡原理图

1、拉取Nginx和Tomcat镜像

docker pull nginx

docker pull tomcat

docker images查看镜像

docker images查看镜像

2、新建tomcat容器分别为tomcat1/tomcat2/tomcat3

docker run --name tomcat1-p 8080:8080 tomcat

docker run --name tomcat2-p 8081:8080 tomcat

docker run --name tomcat3-p 8082:8080 tomcat

docker ps -a 查看新建容器

查看容器

可在浏览器里分别打开:http://192.168.1.58:8080、http://192.168.1.58:8001、http://192.168.1.58:8082查看tomcat是否启动成功。

查看tomcat是否启动

3、新建nginx容器

docker run -p 80:80 --name mynginx -d nginx

docker ps -a 可查看容器状态,也可在8888端口访问(宿主计算机防火墙要开启8888端口的访问)

docker exec -it mynginx bash 进入容器修改/etc/nginx/nginx.conf

keepalive_timeout 65;

#gzip on;

upstream testloadbalance {

server 192.168.1.58:8080;

server 192.168.1.58:8081;

server 192.168.1.58:8082;

}

server {

listen 80;

server_name testloadbalance;

charset utf-8;

location / {

proxy_pass http://testloadbalance;

proxy_set_header X-Real-IP $remote_addr;

client_max_body_size 100m;

}

}

# include /etc/nginx/conf.d/*.conf;

}

"/etc/nginx/nginx.conf" 48L, 1107C 44,14 Bot

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

upstream testloadbalance {

server 192.168.1.58:8080;

server 192.168.1.58:8081;

server 192.168.1.58:8082;

}

server {

listen 80;

server_name testloadbalance;

charset utf-8;

location / {

proxy_pass http://testloadbalance;

proxy_set_header X-Real-IP $remote_addr;

client_max_body_size 100m;

}

}

# include /etc/nginx/conf.d/*.conf;

修改nginx.conf后,重启nginx,然后访问192.168.1.58(没有端口号)

访问没有端口的IP

访问成功,说明基本的配置是生效了,但是负载均衡有没有起作用?我们可以修改一个tomcat文件试试。修改后重启容器。多次访问会出现下面的情况:

测试负载是否生效

至此负载均衡已经生效,在三台机器之间做负载均衡。

Docker包容万象

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表