docker实现Nginx负载均衡2台Tomcat集群

安装docker

安装docker源

wget  -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装Docker-CE版本;
yum install docker-ce -y
#查Docker版本是否安装;
rpm -qa|grep -E "docker"
#启动Docker引擎服务;
service docker restart
systemctl restart docker.service
#查看Docker服务进程;
ps -ef|grep docker

启动docker

systemctl start docker

下载nginx和tomcat镜像:

docker pull nginx:latest

docker pull tomcat:latest

创建容器挂载目录

cd /data/

mkdir nginx html

docker run -d --name nginx nginx:latset

docker cp nginx:/etc/nginx/nginx.conf.default  /data/nginx/

docker cp nginx:/usr/share/nginx/html/  /data/html/

删除容器

docker ps -aq | xargs docker rm -f

重新启动nginx容器:

docker run -d -p 80:80 --name nginx  -v /data/nginx/:/etc/nginx/conf.d/ -v /data/html:/usr/share/nginx/html/ nginx:latest

启动tomcat容器

docker run -itd --name tomcat1 -p 8081:8080 tomcat:latest

docker run -itd --name tomcat2 -p 8082:8080 tomcat:latest

查看容器

浏览器上访问tomcat报错如下:

是由于 tomcat 配置为空导致的

进入tomcat1容器

docker exec -it  tomcat1  /bin/bash

查看 webapps 目录是否为空

ll webapps

如果为空,则:

# 进入到 webapps.dist 目录下

cd webapps.dist/

# 将目录拷贝到 webapps 目录下

cp -r * ../webapps

重新刷新浏览器

Tomcat2同样操作

配置nginx负载均衡

由于我已经将nginx容器配置文件挂载到宿主机/data/nginx/目录下了,所以只需更改宿主机上的目录

upstream tomcat-web {

  server 192.168.1.101:8081;

  server 192.168.1.101:8082;

}

server {

    listen       80;

    listen  [::]:80;

    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {

proxy_pass http://tomcat-web;

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    #location ~ \.php$ {

    #    root           html;

    #    fastcgi_pass   127.0.0.1:9000;

    #    fastcgi_index  index.php;

    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    #    include        fastcgi_params;

    #}

    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

}

重启nginx

docker exec -it nginx nginx -s reload

访问网页效果

访问时报错400错误的请求

根据浏览器报错的提示消息,意思为:在一个域名中使用字符“_”是不正确的;
原来问题出在了nginx主配置文件中给后端tomcat服务器池起的名字上,不支持下划线

解决方法:

将下划线改成“-”,再重新启动nginx服务就没问题了

重启nginx

docker exec -it nginx nginx -s reload

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要部署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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值