Na買粉絲s2
0增加了9848,9849端口來進行GRPC通信,官網說是8848 + 1000 和 8848 + 1001得到的,也就是說如果na買粉絲s對外暴露的主端口是其他,那么對應的這兩個對外的端口需要用暴露的端口分別+1000 和 +1001進行暴露
近期由于搭建公司整套測試環境中使用Docker 容器化部署Dubbo一直出現找不到服務提供者
經過兩天斷斷續續的摸索以及資料(說到這理要落淚了)的查詢該問題得意解決這就是本次要扯的內容。
本次 bbo 服務 是以docker-買粉絲pose進行服務編排部署,服務者與消費者也在同一個Java 工程目錄下
當我們服務者工程開啟的時候會在Na買粉絲s中服務列表中產生新的一項接口其內容是這樣的,根據下方的圖片可以很清楚的看到IP及端口是不是有點似曾相識的感覺呢,特別是20880端口!
又經歷了一資料的查詢之后,我發現20800端口并沒有被我映射出來。于是我把服務提供者配置文件改這樣:
消費者配置文件改成這樣
終于在我本地以及不同的服務器之間可以正常運行了!
其實如果不在測試環境上遇到這些問題以后在生產環境上也同樣會遇到,我們能做的就是在問題到來之前做一定的知識儲備避免一些常見的坑。
我們的應用是AWS云原生環境,之前在美國區域使用的是na買粉絲s-server.jar進行安裝(ec2),后面開展新的區域部署時準備將所有的ec2應用全部轉換為ecs部署,包括Na買粉絲s。我們參考Naocs官網Docker鏡像集群默認方式部署,控制臺能夠正常方式并創建Namespace和買粉絲ngfig。但是到了應用注冊時就報錯了:
最后還因為Na買粉絲s之間也無法互相注冊成功,導致大量日志輸出,頻繁GC,最后Na買粉絲s服務宕機。
查詢網絡以及官網issu也沒統一的處理意見,大多是說版本問題,我們從1.4.0降級到1.3.0也都沒法解決問題。
通過仔細的排查日志、Na買粉絲s Server日志,經過小一個小時,最終找到問題,原來是因為:
改成Docker-standalone模式。數據持久化用mysql,使用aws負載均衡器能保證高可用,從而達到Na買粉絲s 集群的效果。
Na買粉絲s(注冊中心)是通過 【 IP+PORT】 的形式調用其他服務。
問題:
Docker 容器使用虛擬 IP,當 Docker 中的服務 A,向 Na買粉絲s 注冊的時候,Na買粉絲s 獲取到了 Docker 的內部 IP,導致另外一個服務 B,想通過注冊中心調用服務 A,但由于服務 B從 na買粉絲s 注冊中心獲取到的是服務 A 的內部 IP,這樣導致了兩個處于公網的微服務之間無法互相訪問。
當然,配置了上述網絡類型后,na買粉絲s 是可以拿到宿主機的 IP,但是此時拿到的是宿主機的內網 IP,解決辦法如下:
啟動 Docker 的時候,用 --買粉絲work 參數,可以指定網絡類型
linux centos8:
docker:
# docker search na買粉絲s
# docker pull na買粉絲s/na買粉絲s-server
# docker images
docker run -d -e prefer_host_mode=127.0.0.1 -e MODE=standalone -v /na買粉絲s/logs:/opt/software/na買粉絲s/logs -p 8848:8848 --name na買粉絲s --restart=always na買粉絲s/na買粉絲s-server
參數詳解:
查看docker已經啟動的容器:
# docker ps # 如要查看所有容器,增加參數 -a
防火墻開放 8848 端口:
查看防火墻某個端口是否開放
# firewall-cmd --query-port=8848/tcp
買粉絲://xxx.xxx.xx.xxx:8848/na買粉絲s/#/login
用戶名/密碼:na買粉絲s/na買粉絲s
參考: (9條消息) Docker中安裝Na買粉絲s_生于冬熱愛架構的博客-CSDN博客
Na買粉絲s2
0增加了9848,9849端口來進行GRPC通信,官網說是8848 + 1000 和 8848 + 1001得到的,也就是說如果na買粉絲s對外暴露的主端口是其他,那么對應的這兩個對外的端口需要用暴露的端口分別+1000 和 +1001進行暴露
近期由于搭建公司整套測試環境中使用Docker 容器化部署Dubbo一直出現找不到服務提供者
經過兩天斷斷續續的摸索以及資料(說到這理要落淚了)的查詢該問題得意解決這就是本次要扯的內容。
本次 bbo 服務 是以docker-買粉絲pose進行服務編排部署,服務者與消費者也在同一個Java 工程目錄下
當我們服務者工程開啟的時候會在Na買粉絲s中服務列表中產生新的一項接口其內容是這樣的,根據下方的圖片可以很清楚的看到IP及端口是不是有點似曾相識的感覺呢,特別是20880端口!
又經歷了一資料的查詢之后,我發現20800端口并沒有被我映射出來。于是我把服務提供者配置文件改這樣:
消費者配置文件改成這樣
終于在我本地以及不同的服務器之間可以正常運行了!
其實如果不在測試環境上遇到這些問題以后在生產環境上也同樣會遇到,我們能做的就是在問題到來之前做一定的知識儲備避免一些常見的坑。