目錄
- 一、容器管理工具 Rancher 介紹
- 二、Rancher 的安裝
- 三、Rancher 的初始化
- 1. 添加環境
- 2. 添加主機
- 3. 添加應用
- 四、應用部署
- 1. Mysql 部署
- 2. RabbitMQ 部署
- 3. Redis 部署
- 五、擴容與縮容
- 1. 擴容
- 2. 縮容
- 六、負載均衡器
本章學習目標:
掌握容器管理工具 Rancher 的安裝與使用;掌握基于 Rancher 的應用部署、擴容縮容操作。
一、容器管理工具 Rancher 介紹
Rancher 是一個開源的企業級全棧化容器部署及管理平臺,其實就是一個 Docker 的圖形化管理界面。它為容器提供基礎架構服務,可以讓 CNI 兼容的網絡服務、存儲服務、主機管理、負載均衡、防火墻等服務跨越公有云、私有云、虛擬機、物理機環境運行,真正實現一鍵式應用部署和管理。除此之外它還提供了諸如負載均衡、彈性擴容等高級功能,也是一個比較常用的運維工具。
提示:由于 Rancher 是 Docker 的界面化操作,比如應用部署等操作其實都是重復的,為避免端口互相沖突,所以建議在一個新的系統鏡像中進行操作。
二、Rancher 的安裝
第一步:下載 Rancher 鏡像;
docker pull rancher/server
第二步:創建 Rancher 容器;
docker run -di --name=rancher -p 9090:8080 rancher/server
第三步:本地瀏覽器輸入 虛擬機/服務器 IP:端口號 進行訪問,看到如下界面即 Rancher 安裝成功;
如果訪問不了看看自己創建的容器是否已啟動。
初始界面為英文界面,可在右下角切換中文;
三、Rancher 的初始化
1. 添加環境
Rancher 支持將資源分組歸屬到多個環境,每個環境都有著自己獨立的基礎架構資源及服務,并由一個或者多個用戶、團隊/組織管理。比如說:你可以創建獨立的開發、測試及生產環境并確保這些環境之間的安全隔離,將開發環境的訪問權限授予全部人員,而測試環境僅允許某個小的團隊訪問。
點擊 “Default” –> “環境管理”,進入環境界面;
點擊“添加環境”,輸入環境名稱和描述即可創建;
如下是我創建的開發、生產、測試環境,每個環境完全分離,在環境上的配置也不會互相影響;
此時選擇 “Default” 可以進行環境間的切換;
2. 添加主機
選擇 “基礎架構” –> “主機”,點擊添加主機;
默認選擇的是我們的虛擬機/服務器的站點地址,點擊保存;
之后會進入如下界面;
注意第五步中的代碼,該代碼表示創建一個 Rancher 代理容器,在需要添加 Rancher 服務的虛擬機/服務器上運行此命令,則虛擬機/服務器便會和 Rancher 服務建立聯系。
復制該代碼,在需要連接 Rancher 服務的虛擬機/服務器上運行,運行成功如下;
此時在 Rancher 的主機界面會增加一個主機;
3. 添加應用
此處的應用其實就是指我們的某個項目,而某個項目下面又包含著多個服務,換句話說應用其實就是服務的分組;
點擊 “應用” –> “全部/用戶”,然后點擊 “添加應用” 按鈕;
輸入名稱和描述后點擊 “創建”;
成功后如下;
應用創建成功之后,就可以在應用上部署服務了,也就是應用部署。
四、應用部署
其實在 Rancher 中部署應用與傳統方式(命令行操作)最大的區別就在于在這里所有操作都是在圖形界面中進行的,更為直觀,請看以下部署演示。
1. Mysql 部署
首先下載鏡像 centos/mysql-57-centos7 增加數據庫服務;
[root@192 ~]# docker pull centos/mysql-57-centos7 Using default tag: latest latest: Pulling from centos/mysql-57-centos7 d8d02d457314: Pull complete a11069b6e245: Pull complete 596303fb1aa3: Pull complete a29499e779a7: Pull complete 17d1a52c2e00: Pull complete ed24591227fe: Pull complete de0ad46e3ed9: Pull complete c62e4a984a9c: Pull complete 01d54c6bda68: Pull complete Digest: sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764 Status: Downloaded newer image for centos/mysql-57-centos7:latest docker.io/centos/mysql-57-centos7:latest [root@192 ~]#
然后在我們創建好的應用中,點擊 “添加服務”;
此時就可以以圖形化界面的方式來部署 MySQL 服務了,進行相關的設置;
點擊 “創建”,顯示 “Active” 則說明部署成功;
2. RabbitMQ 部署
下載鏡像 rabbitmq:management;
[root@192 ~]# docker pull rabbitmq:management management: Pulling from library/rabbitmq 7b1a6ab2e44d: Pull complete 37f453d83d8f: Pull complete e64e769bc4fd: Pull complete c288a913222f: Pull complete 12addf9c8bf9: Pull complete eaeb088e057d: Pull complete b63d48599313: Pull complete 05c99d3d2a57: Pull complete 43665bfbc3f9: Pull complete f14c7d7911b1: Pull complete Digest: sha256:4c4b66ad5ec40b2c27943b9804d307bf31c17c8537cd0cd107236200a9cd2814 Status: Downloaded newer image for rabbitmq:management docker.io/library/rabbitmq:management [root@192 ~]#
添加服務,設置相關屬性及端口映射(包含端口 5671 5672 4369 15671 15672 25672);
部署成功如下;
在瀏覽器訪問 虛擬機/服務器 IP:15672;
RabbitMQ 安裝成功。
3. Redis 部署
下載鏡像 redis;
[root@192 ~]# docker pull redis Using default tag: latest latest: Pulling from library/redis a2abf6c4d29d: Pull complete c7a4e4382001: Pull complete 4044b9ba67c9: Pull complete c8388a79482f: Pull complete 413c8bb60be2: Pull complete 1abfd3011519: Pull complete Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339 Status: Downloaded newer image for redis:latest docker.io/library/redis:latest [root@192 ~]#
添加服務,設置相關屬性及端口映射(端口 6379);
創建成功如下;
打開本地的 Redis 終端,輸入 redis-cli -h 虛擬機/服務器 IP 進行連接,如下可正常運行,redis 部署成功;
五、擴容與縮容
擴容就是擴充容器的數量,縮容反之。在實際的運維過程中,容器需要為網站提供一個后端的支撐,當網站訪問比較高的時候就需要用到更多的容器來形成容器的微服務集群,以減輕承載壓力。若訪問量不是那么高,則可以縮容釋放出更多的空間出來。
1. 擴容
選擇應用,添加新的服務 base-service,但不設置端口映射,創建完成后默認為一個容器;
此時點擊 “API” –> “WebHooks”;
進入添加接收器界面,選擇添加接收器,如下;
選擇參數之后,點擊創建,此時就為服務創建了接收器(擴縮容服務);
其實接收器就是配置了一個 URL,這個 URL 主要用 post 方式觸發,也就是一個接口,使得某一個軟件能夠通過這個地址來調用 Rancher,Rancher 接收之后觸發,然后進行相應的擴縮容操作。
此時回到服務頁面,可以看到服務的容器數量為 1;
復制接收器觸發地址(接口),使用本地接口測試工具調用該地址(我使用的是 ApiPost)點擊發送;
此時服務的容器數量便會自動增加。
2. 縮容
縮容操作與擴容相同,此處不再贅述。
六、負載均衡器
當使用擴容和縮容服務時,我們是不設置端口映射的,那么就沒辦法直接訪問服務,為了解決此問題,Rancher 提供了負載均衡器。當想要訪問沒有端口映射的服務時,就需要為該服務添加負載均衡。
點擊 “添加服務” –> “添加負載均衡”;
輸入端口以及目標等信息,進行創建;此時就可以通過負載均衡器的特殊服務來訪問我們的服務了。