最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker swam集群如何實(shí)現(xiàn)負(fù)載均衡

 更新時(shí)間:2024年02月04日 10:34:24   作者:ghostwritten  
這篇文章主要介紹了docker swam集群如何實(shí)現(xiàn)負(fù)載均衡問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 初始化集群

第一個(gè)節(jié)點(diǎn)(manager):

$ docker swarm init
Swarm initialized: current node (9qksq9kb8tt9i5un3y2eqbhlj) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5b3w5w10px9ok0t39zs1nujng8x37rcapfkg885hmrokb5wvqi-9v45djurbjeajp3ln80zqcevu 172.17.0.6:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

第二個(gè)節(jié)點(diǎn)(worker):

$ docker swarm join 172.17.0.6:2377 --token $(ssh -o StrictHostKeyChecking=no 172.17.0.6 "docker swarm join-token -q worker")
Warning: Permanently added '172.17.0.6' (ECDSA) to the list of known hosts.
This node joined a swarm as a worker.

默認(rèn)情況下,對(duì)服務(wù)的請(qǐng)求基于公共端口進(jìn)行負(fù)載均衡。

2. 虛擬IP

下面的命令將創(chuàng)建一個(gè)名為lbapp1的新服務(wù),其中運(yùn)行兩個(gè)容器。

服務(wù)通過端口公開81

$ docker service create --name lbapp1 --replicas 2 -p 81:80 katacoda/docker-http-server
7w8k1esxuyx1gs17hwa4svop5

當(dāng)向集群中端口81上的節(jié)點(diǎn)發(fā)出請(qǐng)求時(shí),它會(huì)將負(fù)載分散到兩個(gè)容器上。

$ curl host01:81
<h1>This request was processed by host: cbc4fa365043</h1>
$ curl host01:81
<h1>This request was processed by host: faecced3dc9f</h1>

HTTP響應(yīng)指示哪個(gè)容器處理請(qǐng)求。

在第二臺(tái)主機(jī)上運(yùn)行命令會(huì)得到相同的結(jié)果,它會(huì)跨這兩臺(tái)主機(jī)處理請(qǐng)求。

在下一步中,我們將探討如何使用它來部署一個(gè)實(shí)際的應(yīng)用程序。

3. 服務(wù)發(fā)現(xiàn)

Docker群模式包括一個(gè)路由網(wǎng),它支持多主機(jī)網(wǎng)絡(luò)。

它允許兩個(gè)不同主機(jī)上的容器通信,就像它們?cè)谕恢鳈C(jī)上一樣。

它通過創(chuàng)建虛擬可擴(kuò)展LAN (VXLAN)來實(shí)現(xiàn)這一點(diǎn),VXLAN是為基于云的網(wǎng)絡(luò)設(shè)計(jì)的。

路由以兩種不同的方式工作。

  • 首先,基于公共端口暴露的服務(wù)。任何對(duì)端口的請(qǐng)求都將被分發(fā)。
  • 其次,該服務(wù)被賦予一個(gè)虛擬IP地址,該IP地址僅在Docker網(wǎng)絡(luò)內(nèi)部可路由。

當(dāng)向IP地址發(fā)出請(qǐng)求時(shí),它們被分發(fā)到底層容器。

這個(gè)虛擬IP是在Docker中的嵌入式DNS服務(wù)器上注冊(cè)的。

當(dāng)基于服務(wù)名進(jìn)行DNS解析時(shí),返回Virtual IP。

在這個(gè)步驟中,你將創(chuàng)建一個(gè)負(fù)載均衡的http,它被附加到一個(gè)覆蓋網(wǎng)絡(luò),并查找它是虛擬IP。

$ docker network create --attachable -d overlay eg1
cf4fx7p2a75irup0pjafylpd4

這個(gè)網(wǎng)絡(luò)將是一個(gè)“群體范圍網(wǎng)絡(luò)”。

這意味著只有作為服務(wù)啟動(dòng)的容器才能將自己附加到網(wǎng)絡(luò)上。

$ docker service create --name http --network eg1 --replicas 2 katacoda/docker-http-server

通過調(diào)用服務(wù)http, Docker添加了一個(gè)條目到它是嵌入式DNS服務(wù)器。

網(wǎng)絡(luò)上的其他容器可以使用友好的名稱來發(fā)現(xiàn)IP地址。

與端口一起,這個(gè)IP地址可以在網(wǎng)絡(luò)內(nèi)部使用,以達(dá)到負(fù)載均衡。

使用Dig查找內(nèi)部虛擬IP。

通過使用--attable標(biāo)志,Swarm服務(wù)之外的容器可以訪問網(wǎng)絡(luò)。

$ docker run --name=dig --network eg1 benhall/dig dig http
Unable to find image 'benhall/dig:latest' locally
latest: Pulling from benhall/dig
12b41071e6ce: Pull complete d23aaa6caac4: Pull complete a3ed95caeb02: Pull complete Digest: sha256:ed7d241f0faea3a015d13117824c04a433a79032619862e4e3741a31eb9e4272
Status: Downloaded newer image for benhall/dig:latest

; <<>> DiG 9.10.2 <<>> http
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59560
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;http.                          IN      A

;; ANSWER SECTION:
http.                   600     IN      A       10.0.1.2

;; Query time: 1 msec
;; SERVER: 127.0.0.11#53(127.0.0.11)
;; WHEN: Thu Sep 30 07:59:23 UTC 2021
;; MSG SIZE  rcvd: 42

通過ping該名稱還可以發(fā)現(xiàn)IP地址。

$ docker run --name=ping --network eg1 alpine ping -c5 http
PING http (10.0.1.2): 56 data bytes
64 bytes from 10.0.1.2: seq=0 ttl=64 time=0.287 ms
64 bytes from 10.0.1.2: seq=1 ttl=64 time=0.108 ms
64 bytes from 10.0.1.2: seq=2 ttl=64 time=0.160 ms
64 bytes from 10.0.1.2: seq=3 ttl=64 time=0.157 ms
64 bytes from 10.0.1.2: seq=4 ttl=64 time=0.131 ms

--- http ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.108/0.168/0.287 ms

這應(yīng)該與給服務(wù)的虛擬IP相匹配。

您可以通過檢查服務(wù)來發(fā)現(xiàn)這一點(diǎn)。

$ docker service inspect http --format="{{.Endpoint.VirtualIPs}}"
[{cf4fx7p2a75irup0pjafylpd4 10.0.1.2/24}]

每個(gè)容器仍然會(huì)被賦予一個(gè)唯一的IP地址。

$ docker inspect --format="{{.NetworkSettings.Networks.eg1.IPAddress}}" $(docker'{print $1}')cker-http-server | head -n1 | awk  
10.0.1.4

這個(gè)虛擬IP確保在集群中按照預(yù)期的方式進(jìn)行負(fù)載平衡。而IP地址確保它在集群外工作。

4. 多主機(jī)LB和服務(wù)發(fā)現(xiàn)

虛擬IP和端口負(fù)載均衡和服務(wù)發(fā)現(xiàn)都可以用于多主機(jī)場(chǎng)景,應(yīng)用程序可以在不同的主機(jī)上與不同的服務(wù)通信。

在這個(gè)步驟中,我們將部署一個(gè)復(fù)制的Node.js應(yīng)用程序,它與Redis通信來存儲(chǔ)數(shù)據(jù)。

首先,需要有一個(gè)覆蓋網(wǎng)絡(luò),應(yīng)用程序和數(shù)據(jù)存儲(chǔ)可以連接。

$ docker network create -d overlay app1-network

部署Redis時(shí),可以連接網(wǎng)絡(luò)。應(yīng)用程序希望能夠連接到一個(gè)名為Redis的實(shí)例。為了使應(yīng)用程序能夠通過嵌入式DNS發(fā)現(xiàn)虛擬IP,我們調(diào)用服務(wù)Redis。

$ docker service create --name redis --network app1-network redis:alpine

每個(gè)主機(jī)都應(yīng)該有一個(gè)Node.js容器實(shí)例,其中一個(gè)主機(jī)存儲(chǔ)Redis。

$ docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS               NAMES
06f131fda216        redis:alpine                         "docker-entrypoint.s…"   27 seconds ago      Up 25 seconds       6379/tcp            redis.1.mq95cigfa7etgefqs1pye9crv
1890d08df8cc        katacoda/docker-http-server:latest   "/app"                   7 minutes ago       Up 7 minutes        80/tcp              http.2.j5c4ari06egpy3zqw6b0n3iyl

調(diào)用HTTP服務(wù)器將在Redis中存儲(chǔ)請(qǐng)求并返回結(jié)果。這是負(fù)載平衡,兩個(gè)容器通過覆蓋網(wǎng)絡(luò)與Redis容器通信。

應(yīng)用程序現(xiàn)在分布在多個(gè)主機(jī)上。

參考:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • DOCKERFILE學(xué)習(xí)及使用注意事項(xiàng)

    DOCKERFILE學(xué)習(xí)及使用注意事項(xiàng)

    Dockerfile 由一行行命令語(yǔ)句組成,并且支持以 # 開頭的注釋行。一般的,Dockerfile分為四部分:基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令、容器啟動(dòng)時(shí)執(zhí)行指令
    2017-02-02
  • 如何通過DOCKER OVERLAY2目錄名查找容器名和容器ID

    如何通過DOCKER OVERLAY2目錄名查找容器名和容器ID

    這篇文章主要介紹了如何通過DOCKER OVERLAY2目錄名查找容器名和容器ID問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker compose up -d與Docker restart的區(qū)別

    Docker compose up -d與Docker restart的區(qū)別

    本文主要介紹了Docker compose up -d與Docker restart的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • docker容器連接宿主機(jī)redis與mysql的配置方法

    docker容器連接宿主機(jī)redis與mysql的配置方法

    最近有朋友在工作時(shí)遇到一個(gè)問題,docker容器無法訪問宿主機(jī)的redis,所以這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于docker容器連接宿主機(jī)redis與mysql的配置方法,需要的朋友可以參考下
    2023-06-06
  • Docker 和 Docker Compose 的關(guān)系對(duì)比分析

    Docker 和 Docker Compose 的關(guān)系對(duì)比分析

    Docker 和 Docker Compose 是 容器化 相關(guān)的工具,Docker Compose 是 Docker 的一個(gè)補(bǔ)充工具,用于管理 多容器應(yīng)用,本文介紹Docker 和 Docker Compose 的關(guān)系對(duì)比分析,感興趣的朋友一起看看吧
    2025-03-03
  • 利用drone?ci自動(dòng)化部署靜態(tài)博客的完整步驟

    利用drone?ci自動(dòng)化部署靜態(tài)博客的完整步驟

    drone是基于容器的構(gòu)建服務(wù),配置簡(jiǎn)單且免費(fèi),在 github上也有20Kstar,下面這篇文章主要給大家介紹了關(guān)于利用drone?ci自動(dòng)化部署靜態(tài)博客的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Docker刪除某個(gè)鏡像的實(shí)現(xiàn)方法

    Docker刪除某個(gè)鏡像的實(shí)現(xiàn)方法

    在使用 Docker 時(shí),經(jīng)常需要?jiǎng)h除不再需要的鏡像、容器和卷,以釋放存儲(chǔ)空間,本文主要介紹了Docker刪除某個(gè)鏡像的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 如何在Docker中設(shè)置Redis的密碼

    如何在Docker中設(shè)置Redis的密碼

    這篇文章主要介紹了在Docker中設(shè)置Redis的密碼的相關(guān)知識(shí),通過使用Docker,我們可以輕松地啟動(dòng)Redis容器并設(shè)置密碼來保護(hù)我們的Redis實(shí)例,這提供了一個(gè)簡(jiǎn)單和可移植的方法來部署和管理Redis服務(wù)器,感興趣的朋友一起看看吧
    2023-11-11
  • 從0開始了解Docker入門(小結(jié))

    從0開始了解Docker入門(小結(jié))

    本篇文章主要介紹了從0開始了解Docker(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Docker如何解決tomcat容器啟動(dòng)成功,無法訪問的問題

    Docker如何解決tomcat容器啟動(dòng)成功,無法訪問的問題

    這篇文章主要介紹了Docker如何解決tomcat容器啟動(dòng)成功,無法訪問的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

武定县| 内丘县| 临泉县| 措美县| 宁津县| 肥东县| 恭城| 伊金霍洛旗| 绍兴县| 静海县| 泽库县| 遂平县| 容城县| 定陶县| 九龙坡区| 南阳市| 铜川市| 仙游县| 稻城县| 景东| 电白县| 灌阳县| 镇原县| 平罗县| 黄陵县| 长顺县| 桐梓县| 贵阳市| 仙居县| 武安市| 霍州市| 鲜城| 南和县| 当阳市| 长泰县| 双鸭山市| 垣曲县| 宝鸡市| 伊吾县| 穆棱市| 乃东县|