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

相关推荐
傻傻虎虎13 分钟前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
qq_264220896 小时前
Nginx优化与 SSL/TLS配置
运维·nginx
2401_897930068 小时前
使用Docker轻松部署Neo4j图数据库
数据库·docker·neo4j
matlab的学徒9 小时前
Web与Nginx网站服务(改)
linux·运维·前端·nginx·tomcat
LeeZhao@9 小时前
【AI推理部署】Docker篇04—Docker自动构建镜像
人工智能·docker·容器
程思扬9 小时前
利用JSONCrack与cpolar提升数据可视化及跨团队协作效率
网络·人工智能·经验分享·docker·信息可视化·容器·架构
落日漫游10 小时前
dockercompose和k8s区别
docker·kubernetes
云动雨颤10 小时前
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
数据库·spring boot·tomcat
lllsure12 小时前
【Docker】存储卷
运维·docker·容器
纤瘦的鲸鱼13 小时前
Docker 从入门到实践:容器化技术核心指南
java·docker·容器