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
我用自己封装的快捷命令走一遍。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术