如何使用Docker Compose实现nginx负载均衡
发表于:2024-10-28 作者:千家信息网编辑
千家信息网最后更新 2024年10月28日,这篇文章将为大家详细讲解有关如何使用Docker Compose实现nginx负载均衡,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。以Docker的网络管理,容器的
千家信息网最后更新 2024年10月28日如何使用Docker Compose实现nginx负载均衡
这篇文章将为大家详细讲解有关如何使用Docker Compose实现nginx负载均衡,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
以Docker的网络管理,容器的IP设置为基础知识实现Nginx负载均衡
查看所有docker网络
docker network ls/*NETWORK ID NAME DRIVER SCOPEb832b168ca9a bridge bridge local373be82d3a6a composetest_default bridge locala360425082c4 host host local154f600f0e90 none null local*/// composetest_default 是上一篇介绍Compose时,docker-compose.yml文件所在的目录名,// 所以,用docker-compose创建的容器会默认创建一个以目录名为网络名的网络,并且是dridge(桥接)类型
指定容器IP地址
官网文档地址:https://docs.docker.com/compose/compose-file/#ipv4_address-ipv6_address
继续编写上一篇《12.使用Docker Compose容器编排工具》文章中的docker-compose.yml
version: "3"services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.3 web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.2networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16
使用docker-compose启动容器
docker-compose up -d
查看容器是否启动,并确认是否创建了网络 nginx-lsb
// 可以查看当前docker-compose.yml配置的容器组里的容器状态docker-compose psdocker network ls/*NETWORK ID NAME DRIVER SCOPEb832b168ca9a bridge bridge local373be82d3a6a composetest_default bridge localde6f5b8df1c8 composetest_nginx-lsb bridge locala360425082c4 host host local154f600f0e90 none null local*/// 创建了nginx-lsb网络,命名是容器组项目的 文件名开头_网络名
查看网络 nginx-lsb的详情
docker network inspect composetest_nginx-lsb// 详情里面可以看到使用这个网络的每个容器的ip如:/*... "Containers": { "039aa860ef04f20a7566fdc943fb4398a61d2ad6dd3e373b17c86ac778af89e3": { "Name": "web2", "EndpointID": "1bc206661179e65999015f132c2889d3d4365b8d42b8a89cf9c260016fedd5ee", "MacAddress": "02:42:c0:a9:00:02", "IPv4Address": "192.169.0.2/16", "IPv6Address": "" }, "437ad7a07da8e46c0abaf845c4b08425338009fbe972bde69478cf47c75c315b": { "Name": "web1", "EndpointID": "5a36e602a5364ee9ad06e9816d09e3966d56ebf06b9394ebc25b8bcee9546607", "MacAddress": "02:42:c0:a9:00:03", "IPv4Address": "192.169.0.3/16", "IPv6Address": "" } },...*/
使用 env_file环境文件:
简单可以理解为:在docker-compose.yml中定义变量,引用在外部.env文件中进行变量定义
官方文档地址:https://docs.docker.com/compose/compose-file/#env_file
// 还是在composetest目录中定义个 .env文件,用来存放变量web1_addr=192.169.0.2web2_addr=192.169.0.3// 修改docker-compose.yml文件,加入变量定义version: "3"services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr}networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16
重新启动composetest项目,并查看网络详情,确认容器ip是否设置成功
// 重新启动composetest项目docker-compose up -d// 查看网络详情docker network inspect composetest_nginx-lsb
在composetest项目中添加一台nginx服务器作为负载均衡服务器
// 在.env文件里添加一个变量 nginx_lsbweb1_addr=192.169.0.2web2_addr=192.169.0.3nginx_lsb=192.169.0.100// 修改docker-compose.yml文件,加入变量定义version: "3"services: nginx-lsb: container_name: nginx-lsb image: "centos:nginx" ports: - "8000:80" privileged: true volumes: - "/app/nginx/nginx.conf:/etc/nginx/nginx.conf" networks: nginx-lsb: ipv4_address: ${nginx_lsb} web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr}networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16// 重新启动composetest项目docker-compose up -d
修改nginx.conf配置文件,配置负载均衡
upstream mydocker { server 192.169.0.2; server 192.169.0.3;}server { listen 80; server_name mydocker; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off; proxy_pass http://mydocker; }}
重新启动nginx-lsb,加载配置文件
docker-composer restart nginx-lsb
访问 http://服务器IP地址:8000,测试服务器负载均衡!
关于"如何使用Docker Compose实现nginx负载均衡"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
容器
网络
文件
均衡
变量
项目
地址
服务器
详情
服务
配置
目录
篇文章
文档
文章
更多
知识
上一
不错
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库节点双亲节点
mysql数据库默认字符编码
滨州采购软件开发咨询
安徽网络安全公司
图书售卖数据库
软件开发怎么坚持
小区有线网络安全设计
银行 安全检查服务器
供应网络服务器机柜哪家好
qq的功能 软件开发
成都市软件开发人工价格
如何对软件开发质量进行考核
太空云网络安全
河南项目软件开发服务费
软件开发产品代办列表模板
软件开发能在哪些公司实习
深圳市来宝互联网科技
杭州铁木真网络技术公司
什么是服务器CPU总核数
黄浦区网络软件开发信息中心
中信银行总行软件开发中心
禁毒展厅软件开发
网络安全与个人隐私演讲稿
风投会投软件开发公司吗
我的世界制作饥荒游戏服务器
网络安全竞赛答案搜索
外汇平台服务器
软件开发工具通常称为
苏州戴尔服务器资源存储
软件开发项目ppt素材