使用Docker在本地搭建調試高可用Eureka集羣

寫在前面的話

Hi,小夥伴們。繼上期分享瞭如何用Docker部署本身的第一個SpringBoot應用以後,愛折騰的Storm仍是耐不住性子,又折騰了一下SpringCloud應用的部署。在不使用Docker部署的時候呢,在本地模擬搭建一個高可用的Eureka集羣是至關簡單的。可是使用Docker部署的時候遇到了節點沒法通訊的問題,折騰半天終於完美解決這個問題,以此記錄一下。git

緣由猜想

在項目中,我使用的是域名來區分不一樣的Eureka服務,本地Host綁定這些域名解析爲127.0.0.1 可是部署到容易當中的時候就沒法進行通訊了,所以須要使用其餘方法來創建通訊。更改配置,使用ip並非個人意圖,雖然在實際生產環境是能夠的,可是硬編碼的風格顯然不是最好的方案。github

解決方案

通過資料的收集和整理,發現docker-compose可以解決這個問題,它可以自定義編排要發佈的容易,包括容器依賴和通訊而且統一部署。所以我在此使用它來解決上述的部署問題。docker

準備工做

首先咱們須要構建Eureka服務,使用不一樣的端口,具體源碼見個人開源項目網絡

  • SpringBoot-Cloud-Learning: 分別綁定配置文件中的三個域名到host,解析到127.0.0.1 嘗試直接啓動這單個SpringBoot應用,是能夠直接發佈成分佈式高可用Eureka集羣的。 進入http://eureka-server-01:1001/eureka/能夠看到相應的監控界面 接下來咱們用Docker單獨構建這三個應用,具體方法能夠看我上一期的文章。
  • 使用Docker部署SpringBoot應用:

主要工做

咱們須要在項目根目錄下新建一個docker文件夾,用於存儲Docker部署相關的文件,在此文件夾下新建一個docker-compose.yml文件,內容以下分佈式

version: "2.1"
services:
 eureka-server-01:
 image: eureka-server-01
 hostname: eureka-server-01
 networks:
 - eureka-net
 ports:
 - "1001:1001"

 eureka-server-02:
 image: eureka-server-02
 hostname: eureka-server-02
 networks:
 - eureka-net
 ports:
 - "1002:1002"

 eureka-server-03:
 image: eureka-server-03
 hostname: eureka-server-03
 networks:
 - eureka-net
 ports:
 - "1003:1003"
複製代碼

這裏的配置主要是編排咱們將要發佈的三個容器基本信息,包括容器的名稱,鏡像名稱,host名稱,端口等等。這樣咱們統一發布這些應用,應用之間就能夠相互通訊了,而不是網絡隔離的狀態。ide

最後咱們在idea中運行這個文件,不出意外的話,咱們就能夠看到三個容器正常部署而且輸出打印日誌。一樣的,訪問http://eureka-server-01:1001/eureka/ 查看是否有掛載3個節點,而且都處於正常狀態。到這裏高可用Eureka高可用服務註冊與發現中心得Docker部署搭建就完成啦,這個也是一樣能夠用於Feign等Eureka客戶端的部署使用過程中的,你們能夠自行嘗試。個人項目當中已經爲你們準備好了Demo,能夠自行查看。咱們下期見吧。編碼

相關文章
相關標籤/搜索