使用docker stack部署微服務遇到的坑

2021-10-13 19:58:36 字數 1142 閱讀 4296

warning: ipv4 forwarding is disabled. networking will not work.

在使用docker stack構建啟動微服務的時候,所有的從節點機器專案全部啟動失敗,錯誤資訊是服務無法註冊到遠端的nacos伺服器上,但是我單獨在

從節點上又可以ping通遠端的nacos,搞得一臉蒙蔽,又把問題歸結到是不是docker swarm集群的問題,建立的容器是不是連線不到遠端的nacos,但是

主節點上的服務又可以,沒辦法最後把服務單獨拿到其中乙個從節點上啟動,最後看到這個warning: ipv4 forwarding is disabled. networking will not work.

報錯。解決方法:

a: vi /etc/sysctl.conf

b: net.ipv4.ip_forward=1  #新增這段**

c: #重啟network服務

systemctl restart network && systemctl restart docker

服務啟動都正常,但是閘道器無法將請求路由到指定的服務,不使用閘道器單獨訪問子服務都是ok的

原因就是我們在docker-compose.yml中定義swarm服務發現的模式問題:

我們在定義閘道器的時候使用的是deploy.endpoint_mode=vip,這個是沒問題的 ,但是在定義閘道器後面的

子服務的時候就需要使用deploy.endpoint_mode=dnsrr這個模式了,因為我們是個集群,每個子服務存在

好幾個副本,在閘道器路由的時候是通過服務名稱去發現子服務的,而vip是通過ip位址發現的,所以需要使用dnsrr模式

invalidargument desc = endpointspec: port published with ingress mode can't be used with dnsrr mode

在服務使用deploy.endpoint_mode=dnsrr模式後不能使用如下方式暴露埠:

需要這樣定義:

docker stack 簡單部署

建立dockerfile檔案 copy 好像只支援先對路徑 當前相對路徑,目錄絕對路徑 from centos copy test folder home test folder copy test file.sh home 執行命令 docker build t custom middlegrou...

docker stack相關命令

部署專案命令 docker stack c docker compose.yml 服務名稱 顯示stack列表 命令 docker stack ls 可以看到名稱叫ormis service的stack中存在3個服務 列出stack中的任務 命令 docker stack ps stack名稱 通過...

Gitlab CI CD部署使用

runner gitlab ci.yml git提交之後,runner在runner目錄中git checkout,根據配置的yml檔案執行指定的指令碼命令進行編譯等等操作。stages build test deploy job1 stage deploy script cp home confs...