使用docker 搭建nginx + tomcat 集群

  • 创建3个Tomcat容器,端口分别映射到 8080,8081,8082,使用数据卷挂载,分别将宿主机目录下的
    /opt/module/docker/tomcat3/ROOT1/,/opt/module/docker/tomcat3/ROOT2/,/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部的tomcat目录下的webapps目录。实现挂载的好处如下:
  1. 数据共享: 同一份数据可以被挂载到多个容器
  2. 容器删除了但是数据还在,更安全。

docker run -d --name tomcat-8080 -p8080:8080 -v /opt/module/docker/tomcat3/ROOT1/:/usr/local/tomcat/webapps/ tomcat

docker run -d --name tomcat-8081 -p8081:8080 -v /opt/module/docker/tomcat3/ROOT2/:/usr/local/tomcat/webapps/ tomcat

docker run -d --name tomcat-8082 -p8082:8080 -v /opt/module/docker/tomcat3/ROOT3/:/usr/local/tomcat/webapps/ tomcat

分别访问三个端口

  • docker 启动nginx

docker run -d --name nginx-8000 -p 8000:80 ngxin

访问

进入到nginx容器内部,找到Nginx的配置文件

使用cp命令,将容器中的nginx配置文件复制到宿主机上

docker cp 9s2:/etc/nginx/nginx.conf /opt/module/docker/nginx/

修改配置文件,做负载均衡

bash 复制代码
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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 backend {  
 	 server 192.168.240.131:8080;  
 	 server 192.168.240.131:8081;  
 	 server 192.168.240.131:8082;  
    }

    server {  
        listen 80;  
  
        location / {  
            proxy_pass http://backend;  
            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_set_header X-Forwarded-Proto $scheme;  
        }  
    }  	

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

此时重启nginx,将ngxin的配置文件挂载到宿主机

docker run -d --name ngxin-8000 -p 8000:80 -v /opt/module/docker/nginx/nginx.conf:/etc/nginx/nginx.conf nginx

由于nginx的端口映射到了宿主机的8000,此时访问8000,就相当于在负载均衡的访问3台tomcat



Docker创建一个容器是秒级启动,同时支持挂载,端口映射等,通过此也可以发现Docker的强大,尤其是搭建负载均衡,快速扩容和缩容等。

相关推荐
羑悻的小杀马特6 分钟前
超越Bridge:全面掌握Docker网络隔离与通信的底层逻辑!
运维·网络·docker·容器
Thomas.Sir18 分钟前
第34课:微服务Docker容器化部署 & 生产环境上线
spring cloud·docker·微服务
对象存储与RustFS18 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
程序员老赵21 小时前
Docker 部署 Filestash:轻松搭建浏览器文件管理平台
前端·docker·开源
艾伦_耶格宇21 小时前
【DOCKER容器实战】-5 Docker容器镜像的构建
运维·docker·容器
2601_965619691 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619691 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
程序员小孔.1 天前
基于 SpringBoot + UniApp + Vue 的家政服务系统设计与实现
前端·数据库·spring boot·python·docker·微信小程序
我不会起名字3221 天前
Redis 从 0 到 1(九):主库宕机 30 秒自动切主——1 主 2 从 3 哨兵 + Go 客户端
redis·docker·sentinel·高可用·哨兵
姜鱼问生2 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器