当前位置:首页 > 服务器技术 > nginx

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 ? ? 我用自己封装的快捷命令走一遍。 ? docker nginx 负载均衡 - 文章图片 ?
【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!