老徐
Sunday, 8 April 2018nginx
Rancher是一個開源的企業級全棧化容器(Docker)部署及管理平臺。
Rancher爲容器提供一攬子基礎架構服務:CNI兼容的網絡服務、存儲服務、主機管理、負載均衡、防禦牆……github
Rancher讓上述服務跨越公有云、私有云、虛擬機、物理機環境運行,真正實現一鍵式應用部署和管理。web
已有超過8000萬次下載,15000+生產環境的應用。
虛擬機搭建 Rancher 環境
環境說明:docker
最終效果:json
請首先下載並安裝 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
並登陸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... 是你本身私有的阿里雲鏡像地址,請去下列地址得到
重啓(在虛擬機中執行)
$ 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 節點(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... 是你本身私有的阿里雲鏡像地址,請去下列地址得到
重啓(在虛擬機中執行)
$ 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 地址是否重複了,是否正確
直接啓動一個 nginx 鏡像,看是否能正常訪問
從 Rancher Server Web 界面點擊 Stacks->Add Stack
Rancher 中的應用叫作 Stack,一個 Stack 能夠建立多個服務
輸入 name = nginx,Select Image = nginx
這裏的 Select Image 即 docker 鏡像的名稱,你能夠跑其餘 docker 服務
啓動完成後,點應用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.
Rancher 的 Load Balancer 其實質是一個 Haproxy
仍是剛纔的服務,在 Add Service 那個地方點擊 Add Load Balancer添加一個 LB 服務
左邊的 Port 是對外的端口,輸入 8888,右邊的 Port 是原服務的監聽端口,輸入80
注意:這裏不須要原服務暴露端口,只須要原始的監聽端口便可
啓動完成後,點應用nginx進去,再點擊某個服務nginx-lb,點 Ports 這個Tab頁,上會顯示該服務的IP地址,直接點擊這個IP地址便可訪問這個服務
Port | Host IP |
---|---|
8888 | 192.168.99.101 |
同時,爲了測試LB功能,咱們把剛纔的 Nginx 服務去掉端口映射並增長到2個節點