docker微服務部署之:七、Rancher進行微服務擴容和縮容


docker微服務部署之:六、Rancher管理部署微服務

 Rancher有兩個特色用起來很方便,那就是擴容和縮容。

 一、擴容前的准備工作

 為了能直觀的查看效果,需要修改下demo_article項目的代碼。

 修改demo_article項目中ArticleController中的三處代碼:

 1.注入HttpServletRequest;2在findAll()方法的message參數后面加上request.getLocalAddr(),用於顯示從調用的是哪個ip的容器的服務;3.注釋掉pom中的instance-id

    @Autowired
    private ArticleService articleService;

    @Autowired
    private HttpServletRequest request;

    @RequestMapping(method = RequestMethod.GET)
    public Result findAll(){
        return new Result(true, "查詢成功"+request.getLocalAddr(), articleService.findAll());
    }
  instance:
    prefer-ip-address: true
    # instance-id: article.com #如果需要在eureka注冊多個服務,不能寫死instance-id

  

修改完成之后,在Idea中,通過DockerMaven插件,重新打包並部署article鏡像。

  點擊Idea界面左小角的Terminal,輸入cd demo_article,進入demo_article項目下,再輸入mvn clean package docker:build,重新將demo_article打成java包,並構建article鏡像,並上傳到docker本地倉庫(192.168.31.181)中

 

 在docker中,查看article鏡像,可以看到article鏡像在10秒前發生了變化,表示article鏡像更新成功。

$ sudo docker images 
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
article                   latest              c92e406bc72a        10 seconds ago       651MB
...

 二、擴容前的注意事項

在瀏覽器輸入http://192.168.31.181:8080,進入rancher管理界面,然后在頂部導航欄中選擇test環境,再點擊頂部導航欄中的應用—全部,在點擊進入microservice應用內:

  以需要擴容article為例。

   擴容article服務,簡單理解就是同一個article服務,要復制並運行多個article服務。那么問題來了,運行的article服務,都是9001端口,而一個容器內,甚至一個系統內只有一個9001端口,這明顯是有問題的。所以,需要把該article服務刪除點,修改為不指定端口。

   刪除article服務,點擊article服務那行最右邊豎着的三點,選擇刪除即可。

   

   刪除之后,article服務就沒了,此時我們需要再創建一個沒有指定端口的article服務。除不指定端口外,其他都一樣。

   點擊右上角的添加服務,配置圖中紅色框中的四處外,然后滾動到頁面底部,點擊創建

  

   注意下圖中紅色框中的部分,端口號9001已經沒了。

   

   在瀏覽器中訪問article服務,看看我們前面demo_article打包並構建后的鏡像是否已經更新。由於沒了端口,所以我們不能再通過http://192.168.31.181:9001/article訪問,而是只能通過zuul網關去訪問,也就是http://192.168.31.181:8888/myarticle/article。可能會500錯誤,由於發布article之后,rancher容器需要一個解析的過程。耐心等待大概一到兩分鍾,再刷新,即可看到訪問成功。(如果還是訪問不成功,可查看zuul、article等服務的運行日志,查看是否有錯誤)。

   

    可以看到界面返回的結果中有查詢成功,然后跟了一個ip地址:10.42.113.8,該ip地址是哪里來的呢?可在microservice應用列表管理界面中,點擊article,打開article服務的詳情界面,可以看到10.42.113.8,即為剛剛創建的沒有帶端口的article服務的ip地址。如下圖所示。

   

  三、擴容

   還是以article服務為例。擴容前,先看看microservice應用列表管理界面中的所有服務。可以看到只有4個服務,其中article服務只有一個,而且沒有指定端口號。

   

   再來看看eureka注冊中心歡迎頁中,注冊了哪幾個服務。可以看到只注冊了兩個服務,一個DEMO-ARTICLE和DEMO-ZUUL

  

  下面進行擴容操作。擴容操作,其實很簡單。

   點擊頂部導航欄中的API,點擊Webhooks

   

   打開Webhooks的列表頁面

   

   點擊添加接收器,新增一個接收器

  

  配置詳解:

          名稱:自己根據相關隨便取,此處為文章擴容。

          類型:選擇擴縮容服務

          操作:選擇擴容

         目標服務:選擇microservice/article

          步長:每次擴容多少個服務,可一次或1個或2個或3個,可自由選擇擴容個數,此處設置為2個。

          最小數量:article服務最小不能小於多少個,此處設置為默認的1個。

          最大數量:article服務擴容到多少個就不再擴容了,此處設置為默認的100個。

   點擊創建,完成擴容接受器的添加操作。

   

   添加完擴容觸發器后,此時microservice應用中,還是只有一個article服務。因為還需要一個觸發操作才能生效。

   怎么觸發呢?點擊上圖中的觸發地址的復制圖標,復制出觸發地址。觸發地址,其實就一個URL,需要利用POST請求,去調用一次該URL。

   利用POSTMAN,新建一個REQUEST,粘貼觸發地址,選擇請求類型為POST,然后點擊SEND

   

   請求完成之后,點擊頂部導航欄的應用,點全部,在打開的應用列表中,點microservice微服務,進入microservice應用列表管理界面

   

   可以看到article服務,已經由以前的單容器,變成了3個容器。

   如果需要再擴容兩個容器怎么辦呢?此時有個快捷操作,不需要再在webhooks中添加接收器,只需要復制剛剛的擴容觸發地址,在postman中多send幾次即可。

   因為擴容的步長的2,所以每send一次請求,容器數量會增加2個。

  點擊article進入該服務看一下article服務詳情。可以看到有了三個不同ip地址的容器(記住這三個IP地址)。

  

 等待三個容器都啟動完成(因為是在虛擬機中,機器性能有限,可能需要好幾分鍾,甚至十多分鍾到半個小時,因為虛擬機的性能畢竟有限)。訪問eureka,看看eureka注冊中心中,注冊了幾個article服務。可以看到已經注冊了三個article服務。

 

  利用POSTMAN,通過zuul網關來訪問article服務,多訪問幾次,看看是否達到負載均衡的效果

運行結果,會依次出現如下結果,這復合預期結果(zuul網關,默認采用的負載均衡機制就是輪詢機制):

四、縮容

縮容操作,和擴容操作很相似。

點擊頂部導航欄中的API,點擊Webhooks

打開Webhooks的列表頁面

點擊添加接收器,新增一個接收器

  配置詳解:

          名稱:自己根據相關隨便取,此處為文章縮容。

          類型:選擇擴縮容服務

          操作:選擇縮容

         目標服務:選擇microservice/article

          步長:每次縮容多少個服務,可一次或1個或2個或3個,可自由選擇縮容個數,此處設置為1個。最大縮容步長不能大於先有容器數。

          最小數量:article服務最小不能小於多少個,此處設置為默認的1個。

          最大數量:article服務縮容到多少個就不再縮容了,此處設置為默認的100個。

   點擊創建,完成縮容接受器的添加操作。

    添加完縮容觸發器后,還需要一個觸發操作才能生效。點擊上圖中文章縮容后面的觸發地址下的的復制圖標,復制出觸發地址。觸發地址,其實就一個URL,需要利用POST請求,去調用一次該URL。

    在POSTMAN,新建一個REQUEST,粘貼觸發地址,選擇請求類型為POST,然后點擊SEND

   

   請求完成之后,點擊頂部導航欄的應用,點用戶,在打開的應用列表中,點microservice微服務,進入microservice應用列表管理界面,可以看到article服務的容器數已經由3個變成了2個。

   如果需要再縮容一個容器怎么辦呢?此時有個快捷操作,不需要再在webhooks中添加接收器,只需要復制剛剛的縮容觸發地址,在postman中多send幾次即可。

   因為縮容的步長的1,所以每send一次請求,容器數量會減少1個。

   

   訪問eureka注冊中心,查看注冊了幾個article服務。可以看到,也只是注冊了兩個article服務。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM