Nginx配置负载均衡

基于Docker配置Nginx负载均衡

准备工作

Docker下载安装运行Nginx服务

Docker下载安装运行Nginx服务

Docker部署静态页面项目

创建两个文件夹html-test1 html-test2

# ls
html-test1  html-test2 

编辑Dockerfile文件和index.html文件

# tree html-test1
html-test1
├── Dockerfile
└── index.html

Dockerfile

# 设置基础镜像,这里使用最新的nginx镜像,前面已经拉取过了
FROM nginx
# 定义作者 deroy
MAINTAINER deroy
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY index.html  /usr/share/nginx/html/

index.html

<html>
        <body>
                <h1> load balancing page one </h1>
        </body>
</html>

同理编辑html-test1和html-test2的index.html文件

<html>
        <body>
                <h1> load balancing page two </h1>
        </body>
</html>

构建静态页面的镜像

通过docker的build命令构建镜像

cd html-test1/
docker build -t htmltest1 ./

同理

cd html-test2/
docker build -t htmltest2 ./

构建完成之后通过 docker images 查看镜像

#docker images
REPOSITORY           TAG       IMAGE ID       CREATED             SIZE
htmltest1            latest    a49eb9b0599e   23 minutes ago      142MB
htmltest2            latest    d046a958140b   34 minutes ago      142MB

运行静态页面镜像

docker run --rm -d -p 9090:80 htmltest1
docker run --rm -d -p 9000:80 htmltest2

运行静态页面镜像之后可通过访问服务器的9090和9000端口查看,例如 http://49.234.35.128:9000

在这里插入图片描述


在这里插入图片描述

运行Nginx镜像

# docker images
nginx                latest    c316d5a335a5   2 weeks ago         142MB
# docker run --rm -d -p 8000:80 nginx

运行静态页面镜像之后可通过访问服务器的8000端口查看,例如 http://49.234.35.128:8000

配置Nginx负载均衡

进入Nginx容器后台

查看Nginx镜像

# docker container ls
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                       NAMES
7c0166e8640b   htmltest1            "/docker-entrypoint.…"   28 minutes ago   Up 28 minutes   0.0.0.0:9090->80/tcp, :::9090->80/tcp       nice_khorana
fef9e13ce9b5   htmltest2            "/docker-entrypoint.…"   37 minutes ago   Up 37 minutes   0.0.0.0:9000->80/tcp, :::9000->80/tcp       stoic_lederberg
4581d6aadcdd   nginx                "/docker-entrypoint.…"   2 hours ago      Up 21 minutes   0.0.0.0:8000->80/tcp, :::8000->80/tcp       nginx

通过镜像id 4581d6aadcdd 进入Nginx容器后台

docker exec -it 4581d6aadcdd bash

上面命令的解释说明:

  1. -it:表示分配一个伪终端。
  2. nginx:表示容器的名称,这里也可以使用容器ID。
  3. bash:即/bin/bash表示对容器执行bash操作。

执行过程如图所示

Nginx默认会安装在etc目录下面,进入nginx目录

查看nginx.conf配置文件

我们看最后红框里面的内容,表示使用的是conf.d目录下面的conf文件进行配置。我们进入conf.d目录下面,然后编辑default.conf文件。

安装vim
apt-get update
apt-get install vim

在修改配置文件之前,我们需要获取代理容器的服务ip地址

获取容器元数据

在这里插入图片描述

docker inspect 容器id

我们会看到很多信息,这里只需要关注最后的网络配置信息即可

获取到了两个静态页面容器的IP地址以后,我们就可以配置负载均衡了。

编辑default.conf文件

通过config文件配置负载均衡

1.1、负载均衡默认配置(轮询)

默认的负载均衡设置,采用轮询的形式,权重是均衡的。如果想测试建议配置多个nginx监听服务,然后进行测试。非要问个为什么,那就是nginx很轻很小但是功能很强大

upstream docker_vue{
        server 172.18.0.3:80;
        server 172.18.0.5:80;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_pass http://docker_vue;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

1.2、负载均衡加权轮询

做4次刷新访问的页面测试,其中有3次会定位到设置权重为3的9000端口对应的ip上,剩余1次定位到9090上。

upstream docker_vue{
        server 172.18.0.3:80 weight=3;
        server 172.18.0.5:80;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_pass http://docker_vue;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

因为容器是内部访问,所以设置的端口是80,而不是运行容器时设置的9000端口。 修改完成之后保存退出。

我们可以使用下面的命令检查一下修改后的配置文件是否有错:

nginx -t

如图所示

在这里插入图片描述

我们可以使用下面的命令检查一下修改后的配置文件是否有错:

nginx -t
1

如图所示

在这里插入图片描述

由于我们修改了配置,所以需要重新运行容器,以便配置生效。

docker restart 56b926f12269


然后我们在浏览器里面访问8000端口

在这里插入图片描述



在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeRoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值