zoukankan      html  css  js  c++  java
  • Docker+Nginx+Tomcat实现负载均衡

    环境检测:

    1、Docker没有安装的小伙伴请查看https://www.cnblogs.com/niuniu0108/p/12372531.html

    2、没有创建Nginx容器的小伙伴请查看https://www.cnblogs.com/niuniu0108/p/12372709.html

    3、没有创建Tomcat容器的小伙伴请查看https://www.cnblogs.com/niuniu0108/p/12373067.html

    4、完成上述操作后,输入docker ps,回车后将会有一下内容(一个Tomcat容器、一个Nginx容器)

    负载均衡部署:

    1、在创建两个Tomcat容器,执行以下命令
    docker run -itd --name myTomcat2 -p 8087:8080 tomcat:latest /bin/bash
    docker run -itd --name myTomcat3 -p 8088:8080 tomcat:latest /bin/bash

    执行完成后,进入容器操作(按照上面环境检测步骤3)

    2、分别访问:http://IP:8087和http://IP:8088,出现以下界面说明Tomcat容器部署成功。

    3、还记得自己的Nginx容器部署的时候映射的端口吧,对的,就是8081,现在访问http://IP:80801,出现下面的界面说明Nginx没问题。

     4、现在我们来实现访问Nginx的时候,跳转到Tomcat

    进入Nginx容器:docker exec -it fb1773fc6bcd /bin/bash

    进入Nginx配置server的文件夹 

    cd /etc/nginx/conf.d

    编辑server配置文件

    vim default.conf (会发现vim命令找不着,怎么办呢?只能把文件拷贝到宿主机中,改完之后然后在拷贝回来是不是就好了)

     记住这个文件路径(/etc/nginx/conf.d/default.conf),然后退出容器:exit

    进入usr下的local文件夹

    cd /usr/local/

    在此文件夹中建立一个文件夹dockerNginx8082

    mkdir dockerNginx8082

    查看所有启动的容器并找到myNginx容器的ID

    docker ps

     开始拷贝文件

    将myNginx中的(/etc/nginx/conf.d)的文件(default.conf)拷贝到宿主机(/usr/local/dockerNginx8082)

    命令(红色字体就是myNginx对应的容器ID):docker cp fb1773fc6bcd:/etc/nginx/conf.d/default.conf /usr/local/dockerNginx8082

    将myNginx中的(/etc/nginx)的文件(nginx.conf)拷贝到宿主机(/usr/local/dockerNginx8082)

    命令(红色字体就是myNginx对应的容器ID):docker cp fb1773fc6bcd:/etc/nginx/nginx.conf /usr/local/dockerNginx8082

     然后输入命令:ls,回车就回看到文件default.conf和nginx.conf已经拷贝过来了

     现在开始修改default.conf文件:

    vim default.conf

     然后按键盘i键,就会看到下面的内容

     加入下面的东西(其中192.168.91.128,这个IP是我的,你们要换成你们自己的IP

    location / {
    proxy_pass http://myProxy;
    }

     然后按esc键,跟着输入英文冒号:,然后输入wq,最后回车

     这样default.conf就文件修改完成了,

    继续修改nginx.conf文件

    vim nginx.conf

    然后输入键i,在倒数第二行将下面的代码粘贴进去,如下图所示:

    upstream myProxy{
    server 192.168.91.128:8086;
    server 192.168.91.128:8087;
    server 192.168.91.128:8088;
    }

     然后按esc键,输入英文冒号:,然后输入wq,最后回车,修改完成。

    然后重启容器:

    docker restart fb1773fc6bcd(myNginx容器ID)

    现在将这两个文件在拷贝回去
    执行命令 :docker cp /usr/local/dockerNginx8082/default.conf fb1773fc6bcd:/etc/nginx/conf.d
    执行命令 :docker cp /usr/local/dockerNginx8082/nginx.conf fb1773fc6bcd:/etc/nginx

    然后我们进入myNginx容器:docker exec -it fb1773fc6bcd /bin/bash

    然后启动nginx

    输入命令cd usr/sbin,回车

    输入命令./nginx,回车

     现在我们再访问myNginx的网站试试,有没有跳转到tomcat去,http://ip:8081  发现可以跳转到Tomcat,但是不知道是哪个Tomcat,下面我们可以向每个Tomcat中都放入应用。

     下面我们开始想tomcat中放入war包,首先先要知道war放在什么地方,他就放在tomcat容器内/usr/local/tomcat/webapps文件夹下面,现在我们将主机中的war拷贝到这个文件夹下面,一共三个tomcat容器,所以要执行三条命令,三条命令唯一不同就是要更换容器ID

    备注:紫色的是你自己的war包路径,红色的是你自己的容器ID

    docker cp usr/local/receiveFtp/loadbalancing_1.war 0632aa789b09:/usr/local/tomcat/webapps

    docker cp usr/local/receiveFtp/loadbalancing_1.war 26f0a02b06ee:/usr/local/tomcat/webapps

    docker cp usr/local/receiveFtp/loadbalancing_1.war 2924f33228b5:/usr/local/tomcat/webapps

     到现在就拷贝完了,先依次进入先搁tomcat容器,将tomcat程序重启

    我这里就列举一个,其他的都一样
    进入容器:docker exec -it 0632aa789b09 /bin/bash

     进入bin文件夹:cd bin

     停止tomcat程序:./shutdown.sh

     启动tomcat程序:./startup.sh

     依次操作剩余的两个tomcat容器

    我的操作完成之后就是这个样子的:

     提示:我的只有8088端口是好的,其他的不能访问不知道为什么,我又重新新建了其他端口的容器是ok的,里面的IP刷新一次变化一次,这个问题目前还在排查中,不过操作是没有问题的!请各位放心!

    如果遇到和我一样的已经解决的请留言告知我一下,谢谢!

    经过测试,好像有的端口可以有的端口不行,但具体原因还有待查证。。。。。(有一点要提醒一下,我在宿主机上装的nginx是可以的,可以访问到所有的Tomcat,还没有发现端口有问题的情况!!!!!!)

  • 相关阅读:
    tp5使用jwt生成token,做api的用户认证
    thinkphp5.0多条件模糊查询以及多条件查询带分页如何保留参数
    tp5.1 模型 where多条件查询 like 查询 --多条件查询坑啊!!(tp5.1与tp5.0初始化控制器不一样)
    获取客户端IP地址-----以及--------线上开启redis扩展
    分享几个免费IP地址查询接口(API)
    thinkphp5选择redis库,让数据存入不同的redis库
    【JZOJ4824】【NOIP2016提高A组集训第1场10.29】配对游戏
    【JZOJ1637】【ZJOI2009】狼和羊的故事
    【JZOJ1611】Dining
    【JZOJ2224】【NOI2006】最大获利
  • 原文地址:https://www.cnblogs.com/niuniu0108/p/12374963.html
Copyright © 2011-2022 走看看