Day-08 基于 Docker安装 Nginx 镜像-负载均衡

1、反向代理后,自然而然就引出了负载均衡,下面简单实现负载均衡的效果;

2、实现该效果需要再添加一个 Nginx ,所以要增加一个文件夹。

bash 复制代码
/home
    |---mutou
           |----nginx
                  |----conf.d
                  |----html
                  |----conf.d2
                  |----html3

1.创建 html3 文件夹, 新建 index.html、index-test.html 文件

bash 复制代码
cd html3/
vi index.html
vi index-test.html

index.html、index-test.html 代码如下

html 复制代码
<html>
  <body>
    <h2>it is html3</h2>
  </body>
</html>

2. 修改 home/mutou/nginx/conf.d/default.conf 配置文件

bash 复制代码
vi defaul.conf

修改内容如下:

bash 复制代码
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /demo {
       try_files $uri $uri/ /index-test.html;
    }
}

3. 重启 Docker 镜像

此时,查看所有运行中的docker容器

bash 复制代码
docker ps

然后重启该停止:

bash 复制代码
docker restart 容器id

4. 启动新容器, 挂载配置文件

ps: 端口为 8081 、 8080

bash 复制代码
docker run -d -p 8081:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d  -v /home/mutou/nginx/html3:/usr/share/nginx/html nginx
bash 复制代码
docker run -d -p 8080:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d  -v /home/mutou/nginx/html3:/usr/share/nginx/html nginx

5.配置负载均衡

1、访问ip/demo 时,平均分发到8080端口和8081端口上;

2、即it is html1it is html3间接出现;

配置负载均衡,那就是配置在第二次的nginx上,就是反向代理的nginx上,

我们去conf.d2文件夹下,修改default.conf文件,如下:

bash 复制代码
upstream group{
    server 58.87.88.124:8081;
    server 58.87.88.124:8080;
}
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /demo {
        # 在该位置配置反向代理,将ip/demo1请求拦截,发送给8080端口,如果不是本机请使用公网ip
        proxy_pass  http://group;
    }
}

此时,查看所有运行中的docker容器:

bash 复制代码
docker ps

然后重启该容器:

bash 复制代码
docker restart 容器id

6. 查看效果

1、访问ip/demo,每次刷新页面;

2、页面都会在 html1 和 html3 中进行切换,此时负载均衡的效果就实现了。

7.配置负载均衡的权重

1、可以使用下面的配置修改两个端口的权重(即谁被访问的概率大);

ps: weight 越大权重越高 ;

bash 复制代码
upstream group1{
    server 你的刚才的ip地址:8080 weight=1;
    server 你的刚才的ip地址:8081 weight=10;
}

server {
    listen       80;
    server_name  localhost;
    location /demo1 {
        proxy_pass   http://group1/;
    }
}

ps: 修改配置文件, 保存退出, 然后重启该容器; 即可实现.

相关推荐
chexus21 分钟前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
java_logo3 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
生活爱好者!15 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo16 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
MC皮蛋侠客16 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
用户2333768521819 小时前
Docker 端口"时通时不通"的排查实战
docker
做个文艺程序员19 小时前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
ShiXZ21319 小时前
Redis docker-compose 部署指南
redis·docker·eureka
梦梦代码精21 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范
BelongPanda1 天前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx