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

相关推荐
hakukun16 小时前
docker避免每次sudo方法
运维·docker·容器
杨凯凡16 小时前
Docker Compose:多容器应用编排入门与实战
运维·docker·容器
C2H5OH66616 小时前
Podman和Docker
docker·容器·podman
毛甘木16 小时前
阿里云CentOS环境下Docker使用教程
阿里云·docker·centos
AAA小肥杨16 小时前
探索K8s与AI的结合:PyTorch训练任务在k8s上调度实践
人工智能·pytorch·docker·ai·云原生·kubernetes
春生野草16 小时前
安装k8s过程中涉及知识点梳理
docker
FOREVER-Q17 小时前
Windows 下 Docker Desktop 快速入门与镜像管理
运维·服务器·windows·docker·容器
IT瑞先生18 小时前
Docker容器使用手册——入门篇(上)
运维·docker·容器
q***d17319 小时前
前端微前端部署方案,Nginx与Webpack
前端·nginx·webpack
青柚~20 小时前
【鲲鹏服务器麒麟系统arm架构部署docker】
服务器·arm开发·docker·架构