Miles' Blog

天涯何處無幹話,何必要講實務話

Rancher

RancherOS 是 2015 年 3 月,由 Rancher Labs 開發的 Container OS。

這是一套只純粹執行 Docker 的作業系統。

Rancher 則是管理一群 RancherOS / container Orchestration Tools

Why Rancher

研究 RancherOS 是有很漫長的前因後果,其實這也是工程師偷懶的過程…

使用實體機器建置環境

曾經做過 Linux 主機管理者。當時還很菜,主機死掉,抓不到錯也只能重灌。

使用虛擬技術建置環境

後來發現 VirtualBox 執行虛擬機不一定會比直接架一台 server 慢,加上 VM 有 snapshot 功能,壞了可以還原上次使用狀態的特性,開始轉向使用 VM

方便地建置環境

VM 每次要架不同種類的 server,如 LAMP for 開發,Web/DB for 上線,這樣就要重新安裝三次系統,每次搞都快瘋了。

這時發現了 Vagrant,基底系統直接 Vagrantfile + vagrant up 就有了,想要不同的 service 只要配不同的 script 即可安裝完成,超方便。

而且 Vagrantfile / script 都是純文字檔,可以很方便的拷貝給其他人建置環境,利於多人多工開發。

快速地建置環境

Vagrant 每次要重安裝時,run script 都需要安裝很長的時間,雖然可以 export box,但就會失去輕巧 portable 特性了。

這時發現了 Docker,它的應用隔離和映像檔建立非常地特別。Vagrant 只要任何一個服務壞掉,可能就需要全部 reinstall,這也是重新建置時間長的主因。Docker 允許特定服務重新建立,意味著壞哪修哪是可以辦到的,太神奇了。

快速地建置更多環境

Docker 實務使用上,是適合把各應用拆開來執行的,但管理上就不一定那麼方便了,試想每個應用都執行一台 VM,而每台 VM 又都要去管理,豈不瘋掉。這時發現了 Rancher,它正是解決此問題的最佳工具!

Features

Rancher 是管理 RancherOS 的工具,而 RancherOS 的特色如下:

(以下說明參考此文章)

此作業系統會啟動兩個 Docker,一個是 for 系統使用的 System Docker,另一個是使用者想執行的 User Docker。系統 Docker 會執行一般 Linux 啟動所需要的服務,如 udev、console、DHCP 服務,而且是使用打包好的 Docker 來執行。使用者 Docker 服務則是視使用者需求,如 Web 可以執行 apache / nginx。

此設計架構非常的有趣,在 Docker 隔離架構下,即使把 User Docker 的 container 刪光光,也不會影響 System Docker。如果 Docker 可以執行 Windows 的話,壞了就重 run 一個超方便的。

理想上,Rancher 可以做到簡易的叢集管理,不但簡化 MIS 的工作,還可增加 RD 對機器使用上的信心。

Quick Start

先用 Docker 安裝 server

docker run -d --name rancher --restart=always -p 80:8080 rancher/server
docker logs -f rancher-server

這樣這台電腦就可以當成是管理端的 server 了,可以用 web 去開,裡面會要求加 host。加 host 的方式也很簡單,只要上去下一行指令就行了

接著要建立他的代理 server,執行 docker

docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.7.10 http://192.168.30.206:8080/v1/scripts/<token>

官網也有建議加 IP 參數

docker run -e CATTLE_AGENT_IP=192.168.1.1 -d --privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.7.10 http://172.17.0.3:8080/v1/scripts/<token>

Usage

Notice

雖然 Rancher 用起來很像用 Docker / Docker Compose,但還是有些細節不大一樣。

以下記錄掃雷過程,和發現的 bug …

Store volume when Rancher Upgrade

這目前踩到一個大雷,當我想升級 image 且資料要保留的時候

  • Docker 要 upgrade 的話需要手動利用 volume 功能處理
  • Docker Compose 在 upgrade (利用 --force-recreate ) 的時候,volume 是自動處理好的
  • Rancher Upgrade 功能寫這麼清楚,應該會很聰明的幫我自動保存,結果它就是真的完全砍掉,重開新的….

Rancher 有限制 volume form 要同個 host,假設新的 container 是建立在其他 host,那 volume 不能保存,好像也沒什麼不對。所以應該要用 Rancher v0.47 提供的 Storage Service 功能來解決。目前還正在嘗試中… 剛推出感覺 bug 很多,使用上也不是很直覺,應該未來還會在改善吧…

同個道理,關閉 A host 轉移到 B host 時,也是全部重開新的

0%