使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟
以Docker的網(wǎng)絡(luò)管理,容器的IP設(shè)置為基礎(chǔ)知識(shí)實(shí)現(xiàn)Nginx負(fù)載均衡
查看所有docker網(wǎng)絡(luò)
docker network ls /* NETWORK ID NAME DRIVER SCOPE b832b168ca9a bridge bridge local 373be82d3a6a composetest_default bridge local a360425082c4 host host local 154f600f0e90 none null local */ // composetest_default 是上一篇介紹Compose時(shí),docker-compose.yml文件所在的目錄名, // 所以,用docker-compose創(chuàng)建的容器會(huì)默認(rèn)創(chuàng)建一個(gè)以目錄名為網(wǎng)絡(luò)名的網(wǎng)絡(luò),并且是dridge(橋接)類型
指定容器IP地址
官網(wǎng)文檔地址:https://docs.docker.com/compose/compose-file/#ipv4_address-ipv6_address
繼續(xù)編寫(xiě)上一篇《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.2
networks:
nginx-lsb:
driver: bridge
ipam:
config:
- subnet: 192.169.0.0/16
使用docker-compose啟動(dòng)容器
docker-compose up -d
查看容器是否啟動(dòng),并確認(rèn)是否創(chuàng)建了網(wǎng)絡(luò) nginx-lsb
// 可以查看當(dāng)前docker-compose.yml配置的容器組里的容器狀態(tài) docker-compose ps docker network ls /* NETWORK ID NAME DRIVER SCOPE b832b168ca9a bridge bridge local 373be82d3a6a composetest_default bridge local de6f5b8df1c8 composetest_nginx-lsb bridge local a360425082c4 host host local 154f600f0e90 none null local */ // 創(chuàng)建了nginx-lsb網(wǎng)絡(luò),命名是容器組項(xiàng)目的 文件名開(kāi)頭_網(wǎng)絡(luò)名
查看網(wǎng)絡(luò) nginx-lsb的詳情
docker network inspect composetest_nginx-lsb
// 詳情里面可以看到使用這個(gè)網(wǎng)絡(luò)的每個(gè)容器的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環(huán)境文件:
簡(jiǎn)單可以理解為:在docker-compose.yml中定義變量,引用在外部.env文件中進(jìn)行變量定義
官方文檔地址:https://docs.docker.com/compose/compose-file/#env_file
// 還是在composetest目錄中定義個(gè) .env文件,用來(lái)存放變量
web1_addr=192.169.0.2
web2_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
重新啟動(dòng)composetest項(xiàng)目,并查看網(wǎng)絡(luò)詳情,確認(rèn)容器ip是否設(shè)置成功
// 重新啟動(dòng)composetest項(xiàng)目 docker-compose up -d // 查看網(wǎng)絡(luò)詳情 docker network inspect composetest_nginx-lsb
在composetest項(xiàng)目中添加一臺(tái)nginx服務(wù)器作為負(fù)載均衡服務(wù)器
// 在.env文件里添加一個(gè)變量 nginx_lsb
web1_addr=192.169.0.2
web2_addr=192.169.0.3
nginx_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
// 重新啟動(dòng)composetest項(xiàng)目
docker-compose up -d
修改nginx.conf配置文件,配置負(fù)載均衡
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;
}
}
重新啟動(dòng)nginx-lsb,加載配置文件
docker-composer restart nginx-lsb
訪問(wèn) http://服務(wù)器IP地址:8000,測(cè)試服務(wù)器負(fù)載均衡!
注意:上一篇已經(jīng)在兩臺(tái)httpd服務(wù)器上放置了不同的web文件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- docker安裝nginx實(shí)現(xiàn)對(duì)springboot項(xiàng)目的負(fù)載均衡的操作方法
- docker swam集群如何實(shí)現(xiàn)負(fù)載均衡
- Docker安裝Nacos容器并根據(jù)Nginx實(shí)現(xiàn)負(fù)載均衡
- docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼
- 基于Docker部署Tomcat集群、 Nginx負(fù)載均衡的問(wèn)題小結(jié)
- docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的解決方案
- Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作
- 詳解Docker Swarm服務(wù)發(fā)現(xiàn)和負(fù)載均衡原理
- 詳解利用nginx和docker實(shí)現(xiàn)一個(gè)簡(jiǎn)易的負(fù)載均衡
- Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)
相關(guān)文章
使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理
這篇文章主要為大家介紹了使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Docker容器化部署Python應(yīng)用過(guò)程解析
這篇文章主要介紹了Docker容器化部署Python應(yīng)用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Docker搭建代碼檢測(cè)平臺(tái)SonarQube并檢測(cè)maven項(xiàng)目的流程
這篇文章主要介紹了Docker搭建代碼檢測(cè)平臺(tái)SonarQube并檢測(cè)maven項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Docker-Compose搭建Spark集群的實(shí)現(xiàn)方法
本文主要介紹了Docker-Compose搭建Spark集群的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Docker安裝Kong API Gateway并使用的詳細(xì)教程
這篇文章主要介紹了Docker安裝Kong API Gateway并使用,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
使用Dockerfile部署nodejs服務(wù)的方法步驟
這篇文章主要介紹了使用Dockerfile部署nodejs服務(wù)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

