国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Part 3: Services

leo108 / 3471人閱讀

摘要:介紹在第部分中,我們將擴展應用程序并啟用負載平衡。運行您的新負載平衡應用程序在我們使用命令之前,我們先運行注意我們將在第部分中了解該命令的含義。無論如何,您將看到容器的更改,顯示負載平衡在每個請求中,選擇一個循環模式的個任務中的一個來響應。

介紹

在第3部分中,我們將擴展應用程序并啟用負載平衡。為此,我們必須在分布式應用程序的層次結構中提升一個級別:服務。

Stack

Services (你在這里)

Container (涵蓋在第2部分中)

關于服務

在分布式應用程序中,應用程序的不同部分被稱為“服務”。例如,如果你想象一個視頻分享網站,它可能包括一個用于在數據庫中存儲應用程序數據的服務,一個在用戶上傳某個東西后在后臺進行視頻轉換的服務,一個為前端服務的服務,等等。

服務實際上只是“生產中的容器”。一個服務只運行一個鏡像,但它將以鏡像的方式運行——它應該使用的端口,容器應該運行多少個副本,這樣服務具有它需要的容量等等——的方式進行了編碼。擴展服務會改變運行該軟件的容器實例的數量,為流程中的服務分配更多的計算資源。

幸運的是,使用Docker平臺定義、運行和擴展服務很容易——只需編寫docker-compose.yml文件。

你的第一個docker-compose.yml文件

docker-compose.yml文件是一個YAML文件,它定義了Docker容器在生產中的行為。

docker-compose.yml

將此文件保存為docker-compose.yml無論什么位置。確保您已經將在第2部分中創建的鏡像推送到注冊中心,更新這個yml文件,用你鏡像中的內容替換username/repo:tag

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repo:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

docker-compose.yml告訴Docker做下面的事情:

從注冊表中提取第2步中上傳的圖像。

將該映像的5個實例作為web服務運行,限制每個CPU使用最多10%的CPU(跨所有內核)和50MB RAM。

如果失敗,立即重新啟動容器。

將端口80映射到web的端口80。

指示web容器通過一個名為webnet的負載均衡網絡共享端口80。(在內部,容器本身將在臨時端口上發布到web的端口80。)

用默認設置定義webnet網絡(這是一個負載均衡的覆蓋網絡)。

運行您的新負載平衡應用程序

在我們使用docker stack deploy命令之前,我們先運行:

docker swarm init

注意:我們將在第4部分中了解該命令的含義。如果你不運行docker swarm init,你會得到一個錯誤,“這個節點不是一個群集管理器。”

現在,讓我們來運行它。你必須給你的應用一個名字。在這里,它被設置為getstartedlab

docker stack deploy -c docker-compose.yml getstartedlab

我們的單一服務堆棧在一個主機上運行我們部署映像的5個容器實例。讓我們調查。
在我們的應用程序中獲得一個服務的服務ID:

docker service ls

您將看到web服務的輸出,并以您的應用程序名稱為前提。如果您將其命名為與本例中顯示的相同,則名稱將為getstartedlab_web。服務ID也被列出,以及復制的數量、圖像名稱和暴露的端口。
在服務中運行的單個容器稱為任務。任務被賦予獨特的id,replicas遞增,知道達到您在docker-compose.yml中定義的副本數量。列出服務的任務:

docker service ps getstartedlab_web

如果您將系統上所有的容器列表列出,但這些任務也不會被服務過濾:

docker container ls -q

您可以多次運行curl -4 http://localhost,或者在瀏覽器中訪問該URL并點擊刷新幾次。

無論如何,您將看到容器ID的更改,顯示負載平衡;在每個請求中,選擇一個循環模式的5個任務中的一個來響應。容器id將與前面的命令(docker container ls -q)匹配。

擴大app的規模

您可以通過在docker-compose.yml中更改replicas來擴展應用程序,保存更改,并重新運行docker stack deploy命令:

docker stack deploy -c docker-compose.yml getstartedlab

Docker將做一個就地更新,不需要先拆下堆棧,也不需要殺死任何容器。
現在,重新運行docker container ls -q,以查看已部署的實例重新配置。如果您將副本按比例放大,就會有更多的任務,因此會有更多的容器。

拿下應用程序和swarm

拿下應用程序,用docker stack rm

docker stack rm getstartedlab

拿下swarm

docker swarm leave --force

這就像站起來,和Docker一起擴展你的應用一樣簡單。您已經向學習如何在生產中運行容器邁出了一大步。接下來,您將學習如何在Docker機器集群上運行這個應用程序。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27141.html

相關文章

  • Laravel Container (容器) 概念詳解 (上)

    摘要:上文書,創建對象需要先創建對象。創建對象的雜活是嵌入在中的。對象使用來管理依賴關系非常好,但不是必須的。很容易實現,但手工維護各種亂七八糟的對象還是很麻煩。所有文章均已收錄至項目。 本文翻譯自 Symfony 作者 Fabien Potencier 的 《Dependency Injection in general and the implementation of a Depend...

    FullStackDeveloper 評論0 收藏0
  • Laravel Dependency Injection (依賴注入) 概念詳解

    摘要:依賴注入并不限于構造函數作為經驗,注入最適合必須的依賴關系,比如示例中的情況注入最適合可選依賴關系,比如緩存一個對象實例。 本文翻譯自 Symfony 作者 Fabien Potencier 的 《Dependency Injection in general and the implementation of a Dependency Injection Container in P...

    Fundebug 評論0 收藏0

發表評論

0條評論

leo108

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<