亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Docker Compose 實現(xiàn)nginx負載均衡的方法步驟

 更新時間:2019年05月22日 10:42:45   作者:董俊俊  
這篇文章主要介紹了使用Docker Compose 實現(xiàn)nginx負載均衡的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

以Docker的網(wǎng)絡(luò)管理,容器的IP設(shè)置為基礎(chǔ)知識實現(xiàn)Nginx負載均衡

查看所有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時,docker-compose.yml文件所在的目錄名,
// 所以,用docker-compose創(chuàng)建的容器會默認創(chuàng)建一個以目錄名為網(wǎng)絡(luò)名的網(wǎng)絡(luò),并且是dridge(橋接)類型

指定容器IP地址

官網(wǎng)文檔地址:https://docs.docker.com/compose/compose-file/#ipv4_address-ipv6_address

繼續(xù)編寫上一篇《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啟動容器

docker-compose up -d

查看容器是否啟動,并確認是否創(chuàng)建了網(wǎng)絡(luò) nginx-lsb

// 可以查看當前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ò),命名是容器組項目的 文件名開頭_網(wǎng)絡(luò)名

查看網(wǎng)絡(luò) nginx-lsb的詳情

docker network inspect composetest_nginx-lsb

// 詳情里面可以看到使用這個網(wǎng)絡(luò)的每個容器的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)境文件:

簡單可以理解為:在docker-compose.yml中定義變量,引用在外部.env文件中進行變量定義

官方文檔地址:https://docs.docker.com/compose/compose-file/#env_file

// 還是在composetest目錄中定義個 .env文件,用來存放變量
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

重新啟動composetest項目,并查看網(wǎng)絡(luò)詳情,確認容器ip是否設(shè)置成功

// 重新啟動composetest項目
docker-compose up -d

// 查看網(wǎng)絡(luò)詳情
docker network inspect composetest_nginx-lsb

在composetest項目中添加一臺nginx服務(wù)器作為負載均衡服務(wù)器

// 在.env文件里添加一個變量 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

// 重新啟動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://服務(wù)器IP地址:8000,測試服務(wù)器負載均衡!

注意:上一篇已經(jīng)在兩臺httpd服務(wù)器上放置了不同的web文件

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker 創(chuàng)建RedHat8.5鏡像的命令

    docker 創(chuàng)建RedHat8.5鏡像的命令

    這篇文章主要介紹了docker 創(chuàng)建RedHat8.5鏡像的命令,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • Docker如何部署SQL?Server?2017?Always?On集群

    Docker如何部署SQL?Server?2017?Always?On集群

    這篇文章主要介紹了Docker如何部署SQL?Server?2017?Always?On集群問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于docker 搭建Prometheus+Grafana的過程詳解

    基于docker 搭建Prometheus+Grafana的過程詳解

    這篇文章主要介紹了基于docker 搭建Prometheus+Grafana的過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Docker配置容器位置與小技巧總結(jié)

    Docker配置容器位置與小技巧總結(jié)

    這篇文章主要給大家介紹了關(guān)于Docker配置容器位置與小技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Docker具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • Docker部署Nginx設(shè)置環(huán)境變量的實現(xiàn)步驟

    Docker部署Nginx設(shè)置環(huán)境變量的實現(xiàn)步驟

    本文主要介紹了Docker部署Nginx設(shè)置環(huán)境變量的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • mac 中docker安裝mysql的圖文教程

    mac 中docker安裝mysql的圖文教程

    今天在Docker中安裝了MySQL ,是自己打的docker包.首先新建Dockerfile,新建Dockerfile后執(zhí)行build命令,具體詳情在本教程中給大家介紹的非常詳細,感興趣的朋友參考下
    2016-11-11
  • 一步步教你用docker部署postgreSQL數(shù)據(jù)庫

    一步步教你用docker部署postgreSQL數(shù)據(jù)庫

    這篇文章主要給大家介紹了關(guān)于如何使用docker部署postgreSQL數(shù)據(jù)庫的相關(guān)資料,PostgreSQL是一款功能豐富的關(guān)系型數(shù)據(jù)庫,類似于MySQL,它也是受歡迎程度非常高的,需要的朋友可以參考下
    2023-11-11
  • 如何通過Jenkins定期清理為None的鏡像詳解

    如何通過Jenkins定期清理為None的鏡像詳解

    這篇文章主要給大家介紹了關(guān)于如何通過Jenkins定期清理為None的鏡像的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 淺談關(guān)于Docker容器互聯(lián)的初步實踐

    淺談關(guān)于Docker容器互聯(lián)的初步實踐

    這篇文章主要介紹了淺談關(guān)于Docker容器互聯(lián)的初步實踐,本文介紹了使用網(wǎng)橋(bridge)來對容器進行互聯(lián),非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 如何利用Docker部署一個簡單的springboot項目

    如何利用Docker部署一個簡單的springboot項目

    這篇文章主要介紹了如何利用Docker部署一個簡單的springboot項目,本文通過實例圖文實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02

最新評論