Docker-Compose部署nginx代理Tomcat集群,实现负载均衡

1、安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod 755 !$

大体步骤分为以下四步

  1. 下载所需的文件tomcat,jdk
  2. 编写dockerfile来布署tomcat与java环境,生成镜像文件
  3. 编写docker-compose.yml配置文件,启动所有容器服务
  4. 测试负载均衡

(一)具体配置文件如下

#整个目录结构

[root@master java]# tree ./

./

├── docker-compose.yml

├── etc

│   └── localtime

├── nginx

│   └── nginx.conf

├── tomcat

│   ├── apache-tomcat-8.5.31.tar.gz

│   ├── Dockerfile

│   └── jdk-8u144-linux-x64.tar.gz

└── webserver

    ├── tomcatA
    
    │   └── index.jsp
    
    └── tomcatB
    
        └── index.jsp

6 directories, 8 files
#两个测试首页文件

[root@master java]# cat webserver/tomcatA/index.jsp 

welcome to tomcat-A server

[root@master java]# cat webserver/tomcatB/index.jsp 

welcome to tomcat-B server
#配置文件

[root@master java]# cat docker-compose.yml 

version: "3"

services:

  nginx:

    image: nginx:1.14
    
    restart: always
    
    ports:
    
      - 80:80
    
    links:
    
      - tomcat1:tomcat1
    
      - tomcat2:tomcat2
    
    volumes:
    
      - ./webserver:/webserver
    
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    
      - ./etc/localtime:/etc/localtime
    
    depends_on:
    
      - tomcat1
    
      - tomcat2

  tomcat1:

    hostname: tomcat1
    
    build: ./tomcat
    
    volumes:
    
      - ./webserver/tomcatA:/usr/local/apache-tomcat-8.5.31/webapps/ROOT
    
      - ./etc/localtime:/etc/localtime

  tomcat2:

    hostname: tomcat2
    
    build: ./tomcat
    
    volumes:
    
      - ./webserver/tomcatB:/usr/local/apache-tomcat-8.5.31/webapps/ROOT
    
      - ./etc/localtime:/etc/localtime
#安装JAVA环境

[root@master java]# cat tomcat/Dockerfile 

FROM centos

ADD jdk-8u144-linux-x64.tar.gz /usr/local

ENV JAVA_HOME /usr/local/jdk1.8.0_144

ADD apache-tomcat-8.5.31.tar.gz /usr/local

EXPOSE 8080

ENTRYPOINT ["/usr/local/apache-tomcat-8.5.31/bin/catalina.sh", "run"]
#nginx.conf配置文档

[root@slave nginx]# cat nginx.conf

user  nginx;

worker_processes  1;

error_log  /var/log/nginx/error.log warn;

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;
    
    client_max_body_size 10m;
    
    sendfile        on;
    
    #tcp_nopush     on;
    
    keepalive_timeout  65;
    
    #gzip  on;

upstream tomcat_client {

         server tomcat1:8080 weight=1;
    
         server tomcat2:8080 weight=1;
    
    }
    
    server {
    
        server_name "";
    
        listen 80 default_server;
    
        listen [::]:80 default_server ipv6only=on;
    
        location / {
    
            proxy_pass http://tomcat_client;
    
            proxy_redirect default;
    
            proxy_set_header Host $host;
    
            proxy_set_header X-Real-IP $remote_addr;
    
        }
    
    }

}

(二)启动所有容器服务

[root@master java]# docker-compose up -d

docker-compose-up

(三)查看启动情况

[root@master java]# docker-compose ps   

docker-compose-ps

(四)检测负载均衡

curl localhost

curl

(五)查看日志输出信息

tail /usr/local/nginx/log/access.log

logs

部署Tomcat集群,可以使用Docker来快速搭建。下面是一些常用的命令和步骤: 1. 首先,使用Docker创建两个Tomcat容器,可以使用以下命令: ``` docker run --name tomcat1 -p 8081:8080 -d tomcat:latest docker run --name tomcat2 -p 8082:8080 -d tomcat:latest ``` 这将创建两个名为tomcat1和tomcat2的容器,并将它们分别映射到主机的8081和8082端口。 2. 接下来,创建一个docker-compose.yml文件,定义Tomcat集群的配置。在该文件中,可以指定容器的名称、映射的端口、挂载的卷等。一个示例的docker-compose.yml文件如下所示: ``` version: '3' services: tomcat1: image: tomcat:latest ports: - "8081:8080" volumes: - ./test:/usr/local/tomcat/webapps/test tomcat2: image: tomcat:latest ports: - "8082:8080" ``` 3. 运行以下命令,使用docker-compose来启动Tomcat集群: ``` docker-compose up -d ``` 4. 现在,你可以通过访问http://localhost:8081/test和http://localhost:8082/test来访问Tomcat集群中的应用程序。其中,8081和8082是之前映射的端口,test是挂载的卷中的应用程序。 这样,你就成功地使用Docker部署Tomcat集群。通过创建多个Tomcat容器,并使用docker-compose来定义集群的配置,可以实现负载均衡和高可用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于Nginx负载均衡,使用Docker搭建Tomcat集群](https://blog.csdn.net/qq_38628046/article/details/106752122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微服务项目容器编排docker-compose.yml、Dockerfile文件模板、相关配置文件、shell脚本](https://download.csdn.net/download/qq_45629145/88248761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Docker学习(七)基于DockerTomcat\Nginx\Keepalived集群安装部署](https://blog.csdn.net/weixin_34319374/article/details/92086276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值