首页 > 系统相关 >docker-compose 通过NGINX快速搭建负载均衡的Tomcat集群

docker-compose 通过NGINX快速搭建负载均衡的Tomcat集群

时间:2023-04-05 19:33:27浏览次数:64  
标签:index compose Tomcat tomcat 192.168 NGINX html docker


                         docker-compose 通过NGINX快速搭建负载均衡的Tomcat集群

从标题也可以看出,需要三个软件,docker-compose ,docker-ce(docker的运行环境),Tomcat的镜像。docker-compose 和docker的安装就不用说了,都可以离线安装,安装方法见博客:

(docker-compose安装方法)

(docker离线安装方法以及本地化配置以提高pull效率)

(nginx编译安装脚本)

本次实验环境介绍:

centos7虚拟机环境,IP地址192.168.0.16,docker的版本为docker-19.3.09,docker-compose的版本为1.25.1版本,NGINX版本为1.8.1(在宿主机上安装,安装方式为编译),tomcat镜像使用的为官方tomcat:latest。

tomcat集群的搭建步骤:

一,从官网pull镜像

[root@centos6 conf]# docker pull tomcat
[root@centos6 conf]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              e0bd8b34b4ea        13 days ago         649MB

二,编写docker-compose所使用的编排文件,启动tomcat集群,计划tomcat容器端口为8081,8082,8083,分别映射到宿主机的8080端口,文件内容如下(本实验我定义的名字为tomcat_cluster.yaml )。

version: '3'
services:
  tomcat1:
    image: tomcat:latest
    container_name: tomcat1
    volumes:
      - /opt/tomcat1:/usr/local/tomcat/webapps/
    restart: always
    ports:
      - 8081:8080
  tomcat2:
    image: tomcat:latest
    container_name: tomcat2
    volumes:
      - /opt/tomcat2:/usr/local/tomcat/webapps/
    restart: always
    ports:
      - 8082:8080
  tomcat3:
    image: tomcat:latest
    container_name: tomcat3
    volumes:
      - /opt/tomcat3:/usr/local/tomcat/webapps/
    restart: always
    ports:
      - 8083:8080

三,建立容器和宿主机映射的路径,并写入测试页面以区分三个容器。

 

容器名称在文件内固定了,分别为tomcat1 ,tomcat2,tomcat3,在宿主机也就是192.168.0.16这个虚拟机内,要建立映射目录,命令如下:

mkdir -p /opt/{tomcat1,tomcat2,tomcat3}/ROOT/ 

在/opt/tomcat1/ROOT目录下生成一个index.html 文件,文件内容为  tomcat1  ,命令为: echo "tomcat1" > /opt/tomat1/ROOT/index.html

在/opt/tomcat2/ROOT目录下生成一个index.html 文件,文件内容为  tomcat2  ,命令为: echo "tomcat2" > /opt/tomat2/ROOT/index.html

在/opt/tomcat3/ROOT目录下生成一个index.html 文件,文件内容为  tomcat3 ,命令为: echo "tomcat3" > /opt/tomat3/ROOT/index.html

四,NGINX的负载均衡+反向代理配置(简单实验就简单的来了,因此配置文件写在主配置文件 nginx.conf 了,需要添加的内容如下:

server {
        listen       80;
        server_name  192.168.0.16;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat;
        }
 
upstream tomcat{
    server 192.168.0.16:8081;
    server 192.168.0.16:8082;
    server 192.168.0.16:8083;
                  }

完整的nginx.conf文件内容如下:(nginx如果是使用上面我提到的博客编译安装,那么主配置文件路径为:/usr/local/nginx/conf/nginx.conf)

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  192.168.0.17;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    upstream tomcat{
    server 192.168.0.17:8081;
    server 192.168.0.17:8082;
    server 192.168.0.17:8083;
                  }
}

 

五,重启nginx服务,启动tomcat集群。

nginx -s reload

docker-compose -f ~/tomcat_cluster.yaml up -d

[root@centos6 conf]# docker-compose -f ~/tomcat_cluster.yaml up -d
Creating tomcat1 ... done
Creating tomcat2 ... done
Creating tomcat3 ... done

六,验证阶段

执行docker-compose -f ~/tomcat_cluster.yaml up -d这个命令启动成功集群后,打开任意浏览器,输入以下网址:

http://192.168.0.16:8081   http://192.168.0.16:8082  http://192.168.0.16:8083    以及最后一个最为关键的http://192.168.0.16

本次实验完美完成,特别需要注意的是,在实际生产中,nginx的配置文件可能需要配置负载均衡算法为ip_hash 以保持session。这些都是后话,暂不讨论了。

标签:index,compose,Tomcat,tomcat,192.168,NGINX,html,docker
From: https://blog.51cto.com/u_15966109/6171424

相关文章

  • NGINX的stream模块以及实操问题
    NGINX的stream模块以及实操问题前言:nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。nginx作为一个优秀的web服务器软件,毫无疑问,功能是十分强大的,但学习这种软件,如果脱离了实际操作(应用场景落地),那么就是一种耍流氓的行为。(1)关于stream域的模块......
  • 46 openEuler搭建Nginx服务器-管理Nginx
    46openEuler搭建Nginx服务器-管理Nginx46.1概述通过systemctl工具,可以对nginx服务进行管理,包括启动、停止、重启服务,以及查看服务状态等。本节介绍nginx服务的管理操作。46.2前提条件为了能够使用nginx服务,请确保您的系统中已经安装nginx服务。若未安装,可参考安装进行安装......
  • Nginx容器安装vim命令
    dockerpullnginx:1.22.1dockerrun-itdnginx:1.22.1进入nginx容器apt-getupdateapt-getinstall-yvim ......
  • Ubuntu10.04下配置和使用JDK-Mysql-Tomcat-SVN
    操作系统:Linux-Ubuntu10.0.4,JDK:1.61.安装JDK和设置Java环境变量1.1安装JDKa.下载JDKjdk-6u31-linux-x64.bin,具体下载哪个,根据自己的平台和系统来决定b.修改权限,增加可执行权限sudochmodu+xjdk-6u31-linux-x64.binc.进入到jdk-6u31-linux-x64.bin所在的目录./jdk-6u31-linux-x......
  • Nginx
    轻量级web服务器、反向代理服务器内存占用少、启动快、高并发过程:客户端访问-->(负载均衡/)Nginx-->tomcat/-->SOA反向代理:客户端访问-->转发-->代理到内网。反向代理"代理"的是服务器端Master-Worker模式启动Nginx-->80端口启动了Socket服务进行监听Master:读取......
  • 通过阿里云ECS服务器公网ip访问tomcat,nginx
    一、概述1、操作系统:centos72、安装nginx方法:https://www.cnblogs.com/boonya/p/7907999.html,亲测可用。3、tomcat版本:apache-tomcat-7.0.92二、操作步骤1、启动tomcat;2、进入阿里云控制台,选择安全组,配置安全组规则(添加80,8080端口规则);    3、按图示配置完成,点击......
  • How to Configure Nginx reverse proxy the domain
    未测试过,自己记录待用http{resolver8.8.8.8;upstreamexample{serverhttp://example.comresolve[use_last]...;keepalive1024;}第二种负载均衡upstreammytarget{serveraaa.tar.com:443max_fails=3fail_timeout=60s;serverbbb.tar.com:443backup;}server......
  • JavaWeb——Tomcat的基础应用总结,看这一片文章就够了(web服务器软件、启动时黑窗口闪退
    目录1、Web服务器软件概述2、Tomcat基本操作3、Tomcat部署项目4、Tomcat与IDEA集成并创建web项目本文讲解web服务器Tomcat,关于Web的相关概念,可以回顾以前的文章。1、Web服务器软件概述服务器,就是安装了服务器软件的计算机;服务器软件,就是可以接收用户的请求,处理请求,做出响应的软件;We......
  • nginx 配置虚拟目录
     需求配置静态资源目录访问 location/npm{alias/usr/npm;indexindex.html;autoindexon;#开启目录访问access_logoff;expires30d;} 多级子目录下 [email protected]\dist\axios.min.js      注......
  • 45 openEuler搭建Nginx服务器-Nginx概述和安装
    45openEuler搭建Nginx服务器-Nginx概述和安装45.1概述Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,支持FastCGI、SSL、VirtualHost、URLRewrite、Gzip等......