原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會,謝謝!
原文鏈接地址:『高級篇』docker之DockerSwarm的集群環(huán)境搭建(28)10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有工農(nóng)免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
上次了解了docker Swarm,這次一起動手操作,搭建swarm的集群環(huán)境,一起測試下三種環(huán)境下的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,一個自定義下的overlay下的網(wǎng)絡(luò)發(fā)現(xiàn),一個Ingress下的服務(wù)發(fā)現(xiàn),一個是Ingress+link下的,跟上次Mesos一樣我們先建立三臺服務(wù)虛擬機。 源碼:https://github.com/limingios/msA-docker swarm分支
docker運行狀態(tài),切換到root用戶
docker version
默認(rèn)情況下network的結(jié)構(gòu)
docker network ls
查看ip地址
ifconfig
設(shè)置manager,初始化manager節(jié)點,添加一個work在swarm上,運行下面的命令可以添加work,加入到這個manage中。
docker swarm init --advertise-addr 192.168.66.101
執(zhí)行添加到manager的命令。
執(zhí)行添加到manager的命令。
之前是只有三個,一個bridge,一個host,一個none;多了個docker_gwbridge,一個ingress。
ingress的overlay網(wǎng)絡(luò),這個網(wǎng)絡(luò)需要借助docker-gwbridge這個網(wǎng)橋進行連接。如果是
docker network ls
目前的manager只有一個,如果manager節(jié)點掛了,這個集群也就掛了。docker swarm 有高可用的狀態(tài),就是將server02 和server03 ,manager節(jié)點本身也可以提供服務(wù)運行的狀態(tài),即便我們?nèi)齻€節(jié)點都是manager也是可以運行服務(wù)的?,F(xiàn)在把三個節(jié)點都變成manager節(jié)點試一下。
docker node ls
升級server02成為manager。變成了Reachable,這個跟zookeeper的原理是一樣的,當(dāng)一個leader掛了之后,通過選取可以產(chǎn)生一個新的leader。
docker node promote docker-swarm-02
docker node promote docker-swarm-03
PS:以上就完成高可用的docker swarm的集群環(huán)境,其實真心比其他的簡單。
創(chuàng)建一個小的鏡像,完成ping www.baidu.com
docker service create --name test1 alpine ping www.baidu.com docker service ls
``` 查看日志
docker service logs test1
![](/upload/otherpic60/11223715-f6ac8c36146450df.png%7CimageView2/2/w/1240)
* nginx的環(huán)境測試
``` bash
docker service create --name nginx nginx
docker service ls
曾經(jīng)有老鐵問我,如果是容器創(chuàng)建了需要修改創(chuàng)建時候的配置怎么辦,我告訴他想給當(dāng)前容器做個tag打成一個鏡像A,然后通過鏡像A,生成新的一個新的容器在run里增加你的配置,記住前提是要把原來的容器刪除。
對于docker swarm中的service 難道也需要刪除?其實不需要直接通過docker service update來完成。
docker service ls
docker service update --publish-add 8080:80 nginx
docker service ls
現(xiàn)在的nginx 太少了只有1個,如果掛了,還要打電話讓人解決。其實還是有辦法的。多起幾個??梢远嗟纫粫瑫r間就不緊急了,吃了飯再過去。
docker service scale nginx=3
docker service ls
docker service rm nginx test1
創(chuàng)建網(wǎng)絡(luò)
docker network create -d overlay idig8-overlay
nginx
docker service create --network idig8-overlay --name nginx -p 8080:80 nginx
alpine
docker service create --network idig8-overlay --name alpine alpine ping www.baidu.com
查看是在server02這臺機器上。
docker service ps alpine
進入server02機器,ping 容器名稱是nginx的 發(fā)現(xiàn)可以ping通
docker ps docker exec -it 387dd735de74 sh ping nginx
PS:當(dāng)前的網(wǎng)絡(luò)Ingress,容器之間的訪問方式可以通過名字訪問。在自定義的網(wǎng)絡(luò)下swarm每個service,都創(chuàng)建一個DNSadress,一定要是自定義的overlay的。
描述是參數(shù)不對,在dnsrr下不能開放端口的,他們之間是沖突的。dnsrr是給只通過名字訪問。如果不加入overlay的網(wǎng)絡(luò)它就是獨立的。
docker service create --name nginx-b --endpoint-mode dnsrr -p 8090:80 nginx
如果想dnsrr網(wǎng)絡(luò)可以被訪問,可以針對這個service增加overlay的網(wǎng)絡(luò)
docker service updata --network-add idig8-overlay nginx-b
單機模式下,我們可以使用 Docker Compose 來編排多個服務(wù),而在Docker Swarm 通過 Docker Stack 我們只需對已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群環(huán)境下的多服務(wù)編排。
version: "3.4"
services:
alpine:
image: alpine
command:
- "ping"
- "www.baidu.com"
networks:
- "idig8-overlay"
deploy:
replicas: 2
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
depends_on:
- nginx
nginx:
image: nginx
networks:
- "idig8-overlay"
ports:
- "8080:80"
networks:
idig8-overlay:
external: true
查看stack的命令,上邊走的是vip負(fù)載均衡的方式而不是dnsrr的方式。
docker stack ls
# -c 文件名 組名
docker stack deploy -c service.yml test
PS:dockerSwarm的服務(wù)發(fā)現(xiàn),負(fù)載均衡。
網(wǎng)站欄目:『高級篇』docker之DockerSwarm的集群環(huán)境搭建(28)
網(wǎng)頁路徑:http://bm7419.com/article32/jccjsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)頁設(shè)計公司、外貿(mào)建站、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)