Rancher 開源私有云(Docker 容器部署及管理平臺)快速體驗

@老徐老徐

Sunday, 8 April 2018nginx

Rancher

Rancher是一個開源的企業級全棧化容器(Docker)部署及管理平臺。

https://www.cnrancher.comgit

Rancher爲容器提供一攬子基礎架構服務:CNI兼容的網絡服務、存儲服務、主機管理、負載均衡、防禦牆……github

Rancher讓上述服務跨越公有云、私有云、虛擬機、物理機環境運行,真正實現一鍵式應用部署和管理。web

已有超過8000萬次下載,15000+生產環境的應用。

搭建

虛擬機搭建 Rancher 環境

環境說明:docker

  • Mac
  • 虛擬機採用 VirtualBox
  • 容器引擎採用 Docker 17.12.1-ce
  • 容器雲平臺採用 Rancher 1.6.15

最終效果:json

  • 能夠在 Rancher 雲平臺中部署 Docker 應用

預備

安裝 Docker 環境

請首先下載並安裝 Docker Toolbox,Docker Toolbox中包含了VirtualBox,VirtualBox能夠也單獨安裝最新的版本。

可選:更改 VirtualBox 虛擬機的存儲位置(省得佔用太多主存儲器的空間)瀏覽器

$ export MACHINE_STORAGE_PATH="//Volumes/Cloud/Virtual Machines/docker/"

下載虛擬機鏡像

下載建立虛擬機用的鏡像文件~/Downloads/boot2docker.iso,由於後面會屢次用到安全

https://github.com/boot2docker/boot2docker/releases/download/v17.12.1-ce/boot2docker.iso
這裏採用docker-17.12.1-ce,不要用過新的版本,rancher 可能不支持

建立 Rancher 管理服務器

建立虛擬機

建立虛擬機 rancher 並登陸bash

$ docker-machine create -d virtualbox --virtualbox-boot2docker-url \
~/Downloads/boot2docker.iso rancher
$ docker-machine ip rancher
192.168.99.88
$ docker-machine ssh rancher
這裏的 IP 192.168.99.88 就是 rancher 管理服務器的地址

docker-machine ssh rancher 表示登陸到虛擬機服務器

因爲衆所周知的緣由,Docker 下載鏡像須要使用鏡像服務器

在虛擬機內運行修改Docker的啓動配置,加上registry-mirrors

配置(在虛擬機中執行)

$ sudo vi /etc/docker/daemon.json
{
  "registry-mirrors" : ["https://xxxxx.mirror.aliyuncs.com"]
}
https://xxxxx.mirror.aliyuncs... 是你本身私有的阿里雲鏡像地址,請去下列地址得到

https://cr.console.aliyun.com/

重啓(在虛擬機中執行)

$ sudo reboot now

從新進入虛擬機

$ docker-machine ssh rancher

啓動 Rancher Server(在虛擬機中執行)

$ docker run -d --restart=unless-stopped --name rancher -p 8888:8080 rancher/server
Rancher Server 自己是一個 Docker 容器

啓動時間有點長,請耐心等待,能夠用日誌查看一下進度(在虛擬機中執行)

$ docker logs -f rancher

瀏覽器訪問

http://192.168.99.88:8888
若是不能訪問,多是尚未啓動完畢,請等待一段時間

首次登陸,尚未配置訪問權限,爲了安全起見,首先點擊上面的 ACCESS CONTROL 來新建一個本地帳號和密碼。

建立 Rancher 節點

Rancher 管理服務器鏈接和控制 Rancher 節點(Agent Host),要求這些 Host 上安裝了 Docker 而且啓動了 rancher/agent 容器

這裏建立一個節點rancher01

$ docker-machine create \
-d virtualbox --virtualbox-boot2docker-url \
~/Downloads/boot2docker.iso rancher01
$ docker-machine ssh rancher01

因爲衆所周知的緣由,Docker 下載鏡像須要使用鏡像服務器

在虛擬機內運行修改Docker的啓動配置,加上registry-mirrors

配置(在虛擬機中執行)

$ sudo vi /etc/docker/daemon.json
{
  "registry-mirrors" : ["https://xxxxx.mirror.aliyuncs.com"]
}
https://xxxxx.mirror.aliyuncs... 是你本身私有的阿里雲鏡像地址,請去下列地址得到

https://cr.console.aliyun.com/

重啓(在虛擬機中執行)

$ sudo reboot now

從新進入虛擬機

$ docker-machine ssh rancher01

從 Rancher Server Web 界面點擊 Infrastructure -> Hosts 而且複製步驟 5 的命令行代碼,相似以下:

sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://192.168.99.88:8080/v1/scripts/16E1281C7B7053B1CA74:1514678400000:nx3k1p2p2AvJnWR4WHCTBfznFZ8

上述代碼即用於 rancher/agent 主機註冊到服務器的代碼

特別注意

  • 步驟 4 的 IP 地址最好指定一下,不然可能出現兩個節點自動檢測到的 ip 同樣,致使後面的 ipsec 不正常

在虛擬機內運行上述代碼

$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://192.168.99.88:8080/v1/scripts/16E1281C7B7053B1CA74:1514678400000:nx3k1p2p2AvJnWR4WHCTBfznFZ8
一樣的操做建立多個Rancher節點

從 Rancher Server Web 界面點擊 Infrastructure -> Hosts 便可看到新節點已經加入進來!

檢查是否正常

若是一切正常則:

  • 每一個 rancher 節點上 healthycheck、ipsec 等服務都應該運行正常,即全不是綠色的
  • 每一個 Host 的 IP 地址惟一
  • 能夠看到各個節點分配的IP 地址 10.42.x.x
  • 進入任意一個節點後能夠 ping 通另一個節點的 10.42.x.x 地址

若是healthycheck、ipsec 服務不正常,老在重啓

則有多是增長節點的時候沒有指定 IP,致使 rancher 自動檢測出來的 IP 是錯誤的!!!

請檢查頭部的 IP 地址是否重複了,是否正確

嘗試建立一個應用(Stack)

直接啓動一個 nginx 鏡像,看是否能正常訪問

從 Rancher Server Web 界面點擊 Stacks->Add Stack

Rancher 中的應用叫作 Stack,一個 Stack 能夠建立多個服務
  • 點擊 Add Stack
  • 輸入 name = nginx
  • 點擊 Create
  • 點擊 Add Service
  • 輸入 name = nginx,Select Image = nginx

    這裏的 Select Image 即 docker 鏡像的名稱,你能夠跑其餘 docker 服務
  • 點擊 Port Map,暴露端口 8080:80
  • 點擊 Create
  • 等待啓動完成

啓動完成後,點應用nginx進去,再點擊某個服務nginx,點 Ports 這個Tab頁,上會顯示該服務的IP地址,直接點擊這個IP地址便可訪問這個服務

Port Host IP
8080 192.168.99.101

結果

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

測試 LB 功能

Rancher 的 Load Balancer 其實質是一個 Haproxy

仍是剛纔的服務,在 Add Service 那個地方點擊 Add Load Balancer添加一個 LB 服務

  • 名字隨便取,好比 nginx-lb
  • Target 裏選剛纔那個 Nginx 服務
  • 左邊的 Port 是對外的端口,輸入 8888,右邊的 Port 是原服務的監聽端口,輸入80

    注意:這裏不須要原服務暴露端口,只須要原始的監聽端口便可
  • 點擊 Create
  • 等待啓動完成

啓動完成後,點應用nginx進去,再點擊某個服務nginx-lb,點 Ports 這個Tab頁,上會顯示該服務的IP地址,直接點擊這個IP地址便可訪問這個服務

Port Host IP
8888 192.168.99.101

同時,爲了測試LB功能,咱們把剛纔的 Nginx 服務去掉端口映射並增長到2個節點

  • 點服務進去
  • 右上角點 Upgrade
  • 去掉端口映射
  • 點 Upgrade 保存
  • 點左邊的 Scale ,變成兩個節點
  • 好了,等待一切調整完畢
相關文章
相關標籤/搜索