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

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

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

 1、擴容前的準備工做

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

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

 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鏡像。bash

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

 

 在docker中,查看article鏡像,能夠看到article鏡像在10秒前發生了變化,表示article鏡像更新成功。負載均衡

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

 2、擴容前的注意事項

在瀏覽器輸入http://192.168.31.181:8080,進入rancher管理界面,而後在頂部導航欄中選擇test環境,再點擊頂部導航欄中的應用—所有,在點擊進入microservice應用內:微服務

  以須要擴容article爲例。post

   擴容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地址。以下圖所示。

   

  3、擴容

   仍是以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網關,默認採用的負載均衡機制就是輪詢機制):

4、縮容

縮容操做,和擴容操做很類似。

點擊頂部導航欄中的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服務。

  

相關文章
相關標籤/搜索