docker实现nginx tocmat的负载均衡

简介: 应用场景当一个应用部署在tomcat后,发现访问量越来越多,服务器完全无法承受住压力,导致系统卡顿延时等,此时需要通过nginx技术将应用压力进行平均分配到其他服务器,将多台服务器一起提供资源,通过nginx来协调资源进行负载均衡。

应用场景

当一个应用部署在tomcat后,发现访问量越来越多,服务器完全无法承受住压力,导致系统卡顿延时等,此时需要通过nginx技术将应用压力进行平均分配到其他服务器,将多台服务器一起提供资源,通过nginx来协调资源进行负载均衡。

操作步骤

1. 目标与准备

目标:使用docker部署nginx+tomcat,nginx实现负载均衡。

准备:
docker主机,192.168.199.32 (docker2)
tomcat容器1:tomcat01
tomcat容器2:tomcat03
nginx容器:nginx_test

2. 镜像下载

docker主机pull镜像文件,需要tomcat和nginx。
 # docker pull docker.io/tomcat
 # docker pull docker.io/malderhout/tomcat
 # docker pull nginx

下载两个不同版本的tomcat镜像文件,只是为了后期更好的验证nginx的负载均衡。

用# docker search tomcat命令搜索tomcat的镜像,进行选择,选择一个tomcat7,一个tomcat8。

这里写图片描述

3. 部署2个tomcat容器

 # docker run -d -ti --name tomcat01 docker.io/tomcat
 # docker run -d -ti --name tomcat03 docker.io/malderhout/tomcat
查看两个容器是否已开启:
 # docker ps

这里写图片描述

tomcat容器默认启用8080端口。

4. 部署nginx容器,并修改配置文件,commit新镜像。

启动nginx容器,并进入到容器:
 # docker run -ti docker.io/nginx /bin/bash
进入容器中,进行修改配置文件:
 # cd /etc/nginx/
 # cd conf.d/
 # vi default.conf
   bash: vi: command not found
提示没有vi命令,执行
 # apt-get update
 # apt-get install vim
编辑default.conf文件,如下:
 # vim default.conf
upstream web_app{
server tomcat01:8080 weight=1 max_fails=2 fail_timeout=30s;
server tomcat03:8080 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name nginx_test localhost;
index index.jsp index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web_app;
root /usr/share/nginx/html;
index index.html index.htm;
}
location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /usr/share/nginx/html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /\.ht {
# deny all;
#}
}

该配置文件为网上找的,如果有好的配置文件可以替换。 注意,配置文件引用的为容器的name,而不是ip地址,好处就是不用关心ip变动。nginx_test ,为nginx容器name,一会需要创建。

手动执行nginx,看是否报错,如果报错进行调试,直至没有报错。
 # nginx
 # ps -ef

这里写图片描述

复制这个临时容器的id:0b85b3e2edda
退出临时容器,使用刚创建的临时容器commit新的镜像,镜像名:nginx_tomcat

 # docker commit 0b85b3e2edda nginx_tomcat
 # docker images

这里写图片描述

使用nginx_tomcat部署nginx_test容器:

 # docker run -d -p 80:80 --name nginx_test nginx_tomcat nginx -g “daemon off;”
 # docker ps

这里写图片描述

5. 验证

浏览器打开: http://192.168.199.32
连续打开2次,发现第一个为tomcat8.0界面,第二个为tomcat7.0界面。

这里写图片描述

这里写图片描述

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
10月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
4136 4
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
10月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
441 5
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
445 4
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
438 21
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
424 14
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
529 11
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
848 5
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
1650 25