计算机系统应用教程网站

网站首页 > 技术文章 正文

docker应用:win10子系统搭建nginx负载均衡

btikc 2024-09-12 12:05:05 技术文章 18 ℃ 0 评论

说明:

这次开启3台nginx 来做测试,名称为master,slave01,slave02

步骤:

tips:

这里在使用-v进行挂载目录时,出现了在宿主机里修改配置文件不生效的问题,解决办法:先启动一个nginx服务,但 不是挂载到宿主机上,把配置文件目录拷贝到宿主机上,再启动一个新的nginx服务进行挂载,使用docker-compose.yml并不会出现这个问题

启动第一个nginx服务,名称为master,端口为8080

docker run --name master -p 8080:80 -v /mnt/d/wsl_www/nginx-slb/conf/nginx:

/etc/nginx -v /mnt/d/wsl_www/nginx-slb/www:/usr/share/nginx/html -d nginx:1.20.1

#参数说明

--name 给容器起名称

-p 指定端口

-v 挂载目录

-d 以后台运行


由于在容器里编辑配置文件不方便,我就把它拷贝到宿主机里的挂载目录中,命令如下:
docker cp master:/etc/nginx/nginx.conf /mnt/d/wsl_www/nginx-slb/conf/nginx/
#这里只复制的主文件,主要是为了演示

启动另外两个nginx服务,名称slave01,slave02,端口为8081,8082

#slave01相关命令如下

docker run --name slave01 -p 8081:80 -v /mnt/d/wsl_www/nginx-slb/conf01/nginx:/etc/nginx -v /mnt

/d/wsl_www/nginx-slb/www01:/usr/share/nginx/html -d nginx:1.20.1

#slave02相关命令如下

docker run --name slave02 -p 8082:80 -v /mnt/d/wsl_www/nginx-slb/conf02/nginx:/etc/nginx -v /mnt

/d/wsl_www/nginx-slb/www02:/usr/share/nginx/html -d nginx:1.20.1

通过docker ps查看运行中的nginx服务

配置masternginx.conf配置文件,添加如下内容

upstream abc {

server 172.21.105.60:8081;#这里的ip是个坑,下面有解释

server 172.21.105.60:8082;

}

再配置conf.d目录下的default.conf文件

重启master服务

docker exec -it master /etc/init.d/nginx reload

天坑:

我的环境如下:

  • win10系统
  • win10子系统wsl2的系统是ubuntu20.04
  • ubuntu系统里安装docker服务
  • nginx容器运行在docker里

我在一开始运行nginx负载均衡时,一直不成功,最后排查是因为是我的ip设置有问题,在真实服务器上不会有这问题,浪费了些时间

在这里会有几个ip需要说明一下

  • win10系统里的ip
  • ubuntu系统里的ip
  • docker容器里的ip

我一开始配置的是upstream里的ip是直接写的容器里的ip,始终也不行,其实在真实环境里,直接 写内网地址就可以了,但是这里是不可以的!

最终的解决办法

一定要写ubuntu系统里的ip,也就是etho0对应的ip地址,网卡说的宿主机地址,也是指的docker容器所在的宿主机,也就是ubuntu20.04系统,千万不要把windows当成宿主机呀(血的教训!!!!)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表