zoukankan      html  css  js  c++  java
  • docker nginx 负载均衡

    本来这个配置很简单,也就好像从来没测试过。正好用 docker 来模拟多台服务器,于是开启了三台 nginx 容器,还测试了容器相互通过 Ping  内部 IP  172.17.0.X 能通,可是等配置好了,就是请求入口服务器时,返回 No route to host。

    百度查了下,说什么防火墙,我都没开。加上我是用的 WSL,与真实 Linux 系统还有点差异,所以就想通过别的方式。想过改为绑定宿主机端口,又还麻烦,不如把容器加入同一个网络,这样相互之间可以通过容器名访问,试试看行不行。

    创建一个网络 

    docker network create network 

    启动三个容器

    docker run -d --network network --name nginx-1 nginx:latest
    docker run -d --network network --name nginx-2 nginx:latest
    docker run -d --network network --name nginx-3 nginx:latest
     
    进入容器 nginx-1,并安装 vim 和 ping 命令
    docker exec -it nginx-1 bash
    sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list
    apt update
    apt install -y vim iputils-ping
    ping nginx-2
    ping nginx-3
     
    编辑容器 nginx-1 中的 配置文件,在http 块中添加入下内容,顺便把 http 块最下边 include 其他配置文件删掉
    vim /etc/nginx/nginx.conf
    http {
    
         upstream backend {
         server nginx-2;
         server nginx-3;
    
       }
    
        server {     
          listen 80;
          location / {
            proxy_pass http://backend;
          }
       }
    
    }

    保存后重启容器  nginx-1

    docker restart nginx-1
     
    进入容器 nginx-2
    docker exec -it nginx-2 bash
    echo 'ngxin 2 号服务器'  >  /usr/share/nginx/html/index.html
     
    进入容器 nginx-3
    docker exec -it nginx-3 bash
    echo 'ngxin 3 号服务器'  >  /usr/share/nginx/html/index.html
     
    回到宿主机的命令,查看 nginx-1 的 ip 地址
    docker container inspect nginx-1
     
    例如是 172.17.0.2,请求一下这个地址,返回内容会不会变,如果变的话,说明成功了。
    curl 172.17.0.2
    curl 172.17.0.2
    curl 172.17.0.2
     
     
    我用自己封装的快捷命令走一遍。
     
     
  • 相关阅读:
    现代软件工程 第八章 【需求分析】练习与讨论
    现代软件工程 第七章 【MSF】练习与讨论
    现代软件工程 第六章 【敏捷流程】练习与讨论
    PPT演说技巧
    Mac上最强大的截图软件-xnip
    什么是函数倾轧(name mangling)?
    编程--在线提交系统(Online Judge)
    C++ 的多继承与虚继承
    C++ 中 string和char* 的区别
    编程语言中优先级与结合性
  • 原文地址:https://www.cnblogs.com/zbseoag/p/14208109.html
Copyright © 2011-2022 走看看