使用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的强大,尤其是搭建负载均衡,快速扩容和缩容等。

相关推荐
盛夏绽放38 分钟前
流式响应 线上请求出现“待处理”问题
前端·后端·nginx·proxy
%252 小时前
Nginx
运维·nginx
坤虫debug2 小时前
Nginx 模块和指令的区别:http/server/location 不是模块,是指令
nginx
❀͜͡傀儡师4 小时前
使用 Docker 部署 Puter 云桌面系统
运维·docker·容器
wfj1264 小时前
服务器部署,用 nginx 部署后页面刷新 404 问题,宝塔面板修改(修改 nginx.conf 配置文件)
运维·服务器·nginx
匀泪5 小时前
云原生(nginx环境设定)
java·nginx·云原生
swbook5 小时前
k8s1.35.1二进制部署
docker·kubernetes·k8s·kubectl-ai
2501_924878736 小时前
中小电商自建直播间成本降47%:AI口播智能体轻量部署(含Docker+OBS链路)
人工智能·docker·容器·排序算法·宽度优先
taiguisheng6 小时前
Windows系统中安装WSL2与Docker-Desktop
windows·docker·容器
unirst19850076 小时前
nginx中的proxy_set_header参数详解
运维·网络·nginx