自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LXD 2.0 系列(十):LXD 和 Juju

系統(tǒng) Linux 系統(tǒng)運維
這是 LXD 2.0 系列介紹文章的第十篇。Juju 是 Canonical 的服務建模和部署工具。 它支持非常廣泛的云服務提供商,使您能夠輕松地在任何云上部署任何您想要的服務。此外,Juju 2.0 還支持 LXD,既適用于本地部署,也適合開發(fā),并且可以在云實例或物理機上共同協(xié)作。本篇文章將關注本地使用,通過一個沒有任何Juju經驗的LXD用戶來體驗。

[[184901]]

這是 LXD 2.0 系列介紹文章的第十篇。

  1. LXD 入門
  2. 安裝與配置
  3. 你的第一個 LXD 容器
  4. 資源控制
  5. 鏡像管理
  6. 遠程主機及容器遷移
  7. LXD 中的 Docker
  8. LXD 中的 LXD
  9. 實時遷移

介紹

Juju 是 Canonical 的服務建模和部署工具。 它支持非常廣泛的云服務提供商,使您能夠輕松地在任何云上部署任何您想要的服務。

此外,Juju 2.0 還支持 LXD,既適用于本地部署,也適合開發(fā),并且可以在云實例或物理機上共同協(xié)作。

本篇文章將關注本地使用,通過一個沒有任何Juju經驗的LXD用戶來體驗。

要求

本篇文章假設你已經安裝了 LXD 2.0 并且配置完畢(看前面的文章),并且是在 Ubuntu 16.04 LTS 上運行的。

設置 Juju

第一件事是在 Ubuntu 16.04 上安裝 Juju 2.0。這個很簡單:

  1. stgraber@dakara:~$ sudo apt install juju 
  2. Reading package lists... Done 
  3. Building dependency tree  
  4. Reading state information... Done 
  5. The following additional packages will be installed: 
  6.  juju-2.0 
  7. Suggested packages: 
  8.  juju-core 
  9. The following NEW packages will be installed: 
  10.  juju juju-2.0 
  11. 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 
  12. Need to get 39.7 MB of archives. 
  13. After this operation, 269 MB of additional disk space will be used. 
  14. Do you want to continue? [Y/n]  
  15. Get:1 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 juju-2.0 amd64 2.0~beta7-0ubuntu1.16.04.1 [39.6 MB] 
  16. Get:2 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 juju all 2.0~beta7-0ubuntu1.16.04.1 [9,556 B] 
  17. Fetched 39.7 MB in 0s (53.4 MB/s) 
  18. Selecting previously unselected package juju-2.0. 
  19. (Reading database ... 255132 files and directories currently installed.) 
  20. Preparing to unpack .../juju-2.0_2.0~beta7-0ubuntu1.16.04.1_amd64.deb ... 
  21. Unpacking juju-2.0 (2.0~beta7-0ubuntu1.16.04.1) ... 
  22. Selecting previously unselected package juju. 
  23. Preparing to unpack .../juju_2.0~beta7-0ubuntu1.16.04.1_all.deb ... 
  24. Unpacking juju (2.0~beta7-0ubuntu1.16.04.1) ... 
  25. Processing triggers for man-db (2.7.5-1) ... 
  26. Setting up juju-2.0 (2.0~beta7-0ubuntu1.16.04.1) ... 
  27. Setting up juju (2.0~beta7-0ubuntu1.16.04.1) ... 

安裝完成后,我們可以使用 LXD 啟動一個新的“控制器”。這意味著 Juju 不會修改你主機上的任何東西,它會在 LXD 容器中安裝它的管理服務。

現(xiàn)在我們創(chuàng)建一個“test”控制器:

  1. stgraber@dakara:~$ juju bootstrap localhost test 
  2. Creating Juju controller "local.test" on localhost/localhost 
  3. Bootstrapping model "admin" 
  4. Starting new instance for initial controller 
  5. Launching instance 
  6.  - juju-745d1be3-e93d-41a2-80d4-fbe8714230dd-machine-0 
  7. Installing Juju agent on bootstrap instance 
  8. Preparing for Juju GUI 2.1.2 release installation 
  9. Waiting for address 
  10. Attempting to connect to 10.178.150.72:22 
  11. Logging to /var/log/cloud-init-output.log on remote host 
  12. Running apt-get update 
  13. Running apt-get upgrade 
  14. Installing package: curl 
  15. Installing package: cpu-checker 
  16. Installing package: bridge-utils 
  17. Installing package: cloud-utils 
  18. Installing package: cloud-image-utils 
  19. Installing package: tmux 
  20. Fetching tools: curl -sSfw 'tools from %{url_effective} downloaded: HTTP %{http_code}; time %{time_total}s; size %{size_download} bytes; speed %{speed_download} bytes/s ' --retry 10 -o $bin/tools.tar.gz <[https://streams.canonical.com/juju/tools/agent/2.0-beta7/juju-2.0-beta7-xenial-amd64.tgz]> 
  21. Bootstrapping Juju machine agent 
  22. Starting Juju machine agent (jujud-machine-0) 
  23. Bootstrap agent installed 
  24. Waiting for API to become available: upgrade in progress (upgrade in progress) 
  25. Waiting for API to become available: upgrade in progress (upgrade in progress) 
  26. Waiting for API to become available: upgrade in progress (upgrade in progress) 
  27. Bootstrap complete, local.test now available. 

這會花費一點時間,這時你可以看到一個正在運行的一個新的 LXD 容器:

  1. stgraber@dakara:~$ lxc list juju- 
  2. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 
  3. |                         NAME                        |  STATE  |          IPV4        | IPV6 |    TYPE    | SNAPSHOTS | 
  4. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 
  5. | juju-745d1be3-e93d-41a2-80d4-fbe8714230dd-machine-0 | RUNNING | 10.178.150.72 (eth0) |      | PERSISTENT | 0         | 
  6. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 

在 Juju 這邊,你可以確認它是有響應的,并且還沒有服務運行:

  1. stgraber@dakara:~$ juju status 
  2. [Services]  
  3. NAME STATUS EXPOSED CHARM  
  4. [Units]  
  5. ID WORKLOAD-STATUS JUJU-STATUS VERSION MACHINE PORTS PUBLIC-ADDRESS MESSAGE  
  6. [Machines]  
  7. ID STATE DNS INS-ID SERIES AZ 

你也可以在瀏覽器中訪問 Juju 的 GUI 界面:

  1. stgraber@dakara:~$ juju gui 
  2. Opening the Juju GUI in your browser. 
  3. If it does not openopen this URL: 
  4. https://10.178.150.72:17070/gui/97fa390d-96ad-44df-8b59-e15fdcfc636b/  

 

 

 

Juju web UI

不過我更傾向使用命令行,因此我會在接下來使用。

部署一個 minecraft 服務

讓我們先來一個簡單的,部署在一個容器中使用一個 Juju 單元的服務。

  1. stgraber@dakara:~$ juju deploy cs:trusty/minecraft 
  2. Added charm "cs:trusty/minecraft-3" to the model. 
  3. Deploying charm "cs:trusty/minecraft-3" with the charm series "trusty"

命令返回會很快,然而這不意味著服務已經啟動并運行了。你應該使用 juju status 來查看:

  1. stgraber@dakara:~$ juju status 
  2. [Services]  
  3. NAME STATUS EXPOSED CHARM  
  4. minecraft maintenance false cs:trusty/minecraft-3  
  5. [Units]  
  6. ID WORKLOAD-STATUS JUJU-STATUS VERSION MACHINE PORTS PUBLIC-ADDRESS MESSAGE  
  7. minecraft/1 maintenance executing 2.0-beta7 1 10.178.150.74 (install) Installing java  
  8. [Machines]  
  9. ID STATE DNS INS-ID SERIES AZ  
  10. 1 started 10.178.150.74 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-1 trusty  

我們可以看到它正在忙于在剛剛創(chuàng)建的 LXD 容器中安裝 java。

  1. stgraber@dakara:~$ lxc list juju- 
  2. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 
  3. |                         NAME                        |  STATE  |          IPV4        | IPV6 |    TYPE    | SNAPSHOTS | 
  4. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 
  5. | juju-745d1be3-e93d-41a2-80d4-fbe8714230dd-machine-0 | RUNNING | 10.178.150.72 (eth0) |      | PERSISTENT | 0         | 
  6. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 
  7. | juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-1 | RUNNING | 10.178.150.74 (eth0) |      | PERSISTENT | 0         | 
  8. +-----------------------------------------------------+---------+----------------------+------+------------+-----------+ 

過一會之后,如我們所見服務就部署完畢了:

  1. stgraber@dakara:~$ juju status 
  2. [Services]  
  3. NAME STATUS EXPOSED CHARM  
  4. minecraft active false cs:trusty/minecraft-3  
  5. [Units]  
  6. ID WORKLOAD-STATUS JUJU-STATUS VERSION MACHINE PORTS PUBLIC-ADDRESS MESSAGE  
  7. minecraft/1 active idle 2.0-beta7 1 25565/tcp 10.178.150.74 Ready  
  8. [Machines]  
  9. ID STATE DNS INS-ID SERIES AZ  
  10. 1 started 10.178.150.74 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-1 trusty 

這時你就可以啟動你的 Minecraft 客戶端了,將其指向 10.178.150.74,端口是 25565?,F(xiàn)在可以在新的 minecraft 服務器上玩了!

當你不再需要它,只需運行:

  1. stgraber@dakara:~$ juju destroy-service minecraft 

只要等待幾秒就好了。

部署一個更復雜的 web 應用

Juju 的主要工作是建模復雜的服務,并以可擴展的方式部署它們。

為了更好地展示,讓我們部署一個 Juju “組合”。 這個組合是由網站,API,數據庫,靜態(tài) Web 服務器和反向代理組成的基本 Web 服務。

所以這將擴展到 4 個互聯(lián)的 LXD 容器。

  1. stgraber@dakara:~$ juju deploy cs:~charmers/bundle/web-infrastructure-in-a-box 
  2. added charm cs:~hp-discover/trusty/node-app-1 
  3. service api deployed (charm cs:~hp-discover/trusty/node-app-1 with the series "trusty" defined by the bundle) 
  4. annotations set for service api 
  5. added charm cs:trusty/mongodb-3 
  6. service mongodb deployed (charm cs:trusty/mongodb-3 with the series "trusty" defined by the bundle) 
  7. annotations set for service mongodb 
  8. added charm cs:~hp-discover/trusty/nginx-4 
  9. service nginx deployed (charm cs:~hp-discover/trusty/nginx-4 with the series "trusty" defined by the bundle) 
  10. annotations set for service nginx 
  11. added charm cs:~hp-discover/trusty/nginx-proxy-3 
  12. service nginx-proxy deployed (charm cs:~hp-discover/trusty/nginx-proxy-3 with the series "trusty" defined by the bundle) 
  13. annotations set for service nginx-proxy 
  14. added charm cs:~hp-discover/trusty/website-3 
  15. service website deployed (charm cs:~hp-discover/trusty/website-3 with the series "trusty" defined by the bundle) 
  16. annotations set for service website 
  17. related mongodb:database and api:mongodb 
  18. related website:nginx-engine and nginx:web-engine 
  19. related api:website and nginx-proxy:website 
  20. related nginx-proxy:website and website:website 
  21. added api/0 unit to new machine 
  22. added mongodb/0 unit to new machine 
  23. added nginx/0 unit to new machine 
  24. added nginx-proxy/0 unit to new machine 
  25. deployment of bundle "cs:~charmers/bundle/web-infrastructure-in-a-box-10" completed 

幾秒后,你會看到 LXD 容器在運行了:

  1. stgraber@dakara:~$ lxc list juju- 
  2. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  3. |                         NAME                        |  STATE  |           IPV4        | IPV6 |    TYPE    | SNAPSHOTS | 
  4. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  5. | juju-745d1be3-e93d-41a2-80d4-fbe8714230dd-machine-0 | RUNNING | 10.178.150.72 (eth0)  |      | PERSISTENT | 0         | 
  6. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  7. | juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-2 | RUNNING | 10.178.150.98 (eth0)  |      | PERSISTENT | 0         | 
  8. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  9. | juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-3 | RUNNING | 10.178.150.29 (eth0)  |      | PERSISTENT | 0         | 
  10. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  11. | juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-4 | RUNNING | 10.178.150.202 (eth0) |      | PERSISTENT | 0         | 
  12. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 
  13. | juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-5 | RUNNING | 10.178.150.214 (eth0) |      | PERSISTENT | 0         | 
  14. +-----------------------------------------------------+---------+-----------------------+------+------------+-----------+ 

幾分鐘后,所有的服務應該部署完畢并運行了:

  1. stgraber@dakara:~$ juju status 
  2. [Services]  
  3. NAME STATUS EXPOSED CHARM  
  4. api unknown false cs:~hp-discover/trusty/node-app-1  
  5. mongodb unknown false cs:trusty/mongodb-3  
  6. nginx unknown false cs:~hp-discover/trusty/nginx-4  
  7. nginx-proxy unknown false cs:~hp-discover/trusty/nginx-proxy-3  
  8. website false cs:~hp-discover/trusty/website-3  
  9. [Relations]  
  10. SERVICE1 SERVICE2 RELATION TYPE  
  11. api mongodb database regular  
  12. api nginx-proxy website regular  
  13. mongodb mongodb replica-set peer  
  14. nginx website nginx-engine subordinate  
  15. nginx-proxy website website regular  
  16. [Units]  
  17. ID WORKLOAD-STATUS JUJU-STATUS VERSION MACHINE PORTS PUBLIC-ADDRESS MESSAGE  
  18. api/0 unknown idle 2.0-beta7 2 8000/tcp 10.178.150.98  
  19. mongodb/0 unknown idle 2.0-beta7 3 27017/tcp,27019/tcp,27021/tcp,28017/tcp 10.178.150.29  
  20. nginx-proxy/0 unknown idle 2.0-beta7 5 80/tcp 10.178.150.214  
  21. nginx/0 unknown idle 2.0-beta7 4 10.178.150.202  
  22.  website/0 unknown idle 2.0-beta7 10.178.150.202  
  23. [Machines]  
  24. ID STATE DNS INS-ID SERIES AZ  
  25. 2 started 10.178.150.98 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-2 trusty  
  26. 3 started 10.178.150.29 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-3 trusty  
  27. 4 started 10.178.150.202 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-4 trusty  
  28. 5 started 10.178.150.214 juju-97fa390d-96ad-44df-8b59-e15fdcfc636b-machine-5 trusty 

這時你就可以在 80 端口訪問 http://10.178.150.214,并且會看到一個 Juju 學院頁面。 

 

 

 

Juju Academy web service

清理所有東西

如果你不需要 Juju 創(chuàng)建的容器并且不在乎下次需要再次啟動,最簡單的方法是:

  1. stgraber@dakara:~$ juju destroy-controller test --destroy-all-models 
  2. WARNING! This command will destroy the "local.test" controller. 
  3. This includes all machines, services, data and other resources. 
  4. Continue [y/N]? y 
  5. Destroying controller 
  6. Waiting for hosted model resources to be reclaimed 
  7. Waiting on 1 model, 4 machines, 5 services 
  8. Waiting on 1 model, 4 machines, 5 services 
  9. Waiting on 1 model, 4 machines, 5 services 
  10. Waiting on 1 model, 4 machines, 5 services 
  11. Waiting on 1 model, 4 machines, 5 services 
  12. Waiting on 1 model, 4 machines, 5 services 
  13. Waiting on 1 model, 4 machines 
  14. Waiting on 1 model, 4 machines 
  15. Waiting on 1 model, 4 machines 
  16. Waiting on 1 model, 4 machines 
  17. Waiting on 1 model, 4 machines 
  18. Waiting on 1 model, 4 machines 
  19. Waiting on 1 model, 2 machines 
  20. Waiting on 1 model 
  21. Waiting on 1 model 
  22. All hosted models reclaimed, cleaning up controller machines 

我們用下面的方式確認:

  1. stgraber@dakara:~$ lxc list juju- 
  2. +------+-------+------+------+------+-----------+ 
  3. NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | 
  4. +------+-------+------+------+------+-----------+ 

總結

Juju 2.0 內置的 LXD 支持使得可以用一種非常干凈的方式來測試各種服務。

在 Juju charm store 中有很多預制的“組合”可以用來部署,甚至可以用多個“charm”來組合你想要的架構。

Juju 與 LXD 是一個完美的解決方案,從一個小的 Web 服務到大規(guī)模的基礎設施都可以簡單開發(fā),這些都在你自己的機器上,并且不會在你的系統(tǒng)上造成混亂!

額外信息

Juju 網站: http://www.ubuntu.com/cloud/juju

Juju charm store : https://jujucharms.com

LXD 的主站在: https://linuxcontainers.org/lxd

LXD 的 GitHub 倉庫: https://github.com/lxc/lxd

LXD 的郵件列表: https://lists.linuxcontainers.org

LXD 的 IRC 頻道: #lxcontainers on irc.freenode.net

如果你不想或者不能在你的機器上安裝 LXD ,你可以在 web 上試試在線版的 LXD。

作者簡介:

我是 Stéphane Graber。我是 LXC 和 LXD 項目的領導者,目前在加拿大魁北克蒙特利爾的家所在的Canonical 有限公司擔任 LXD 的技術主管。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2017-03-08 18:00:10

LXD 2.0LinuxOpenStack

2017-03-06 14:00:22

LXD 2.0LXDLinux

2016-07-29 14:12:21

2017-02-27 19:27:52

LXDDockerLinux

2017-03-09 16:32:03

LXD 2.0Linux調試

2016-12-29 11:01:03

LinuxLXD 2.0資源控制

2017-03-07 16:41:03

LXD 2.0Linux實時遷移

2017-01-12 15:37:34

LinuxLXD 2.0鏡像管理

2016-08-22 21:41:37

LXDLinux容器管理器

2016-08-24 15:12:41

LXDLinux容器

2017-02-05 14:52:42

2015-04-24 10:57:22

Ubuntu 15.0Ubuntu

2017-12-25 13:51:32

LinuxUbuntu LinuLXD容器

2014-11-20 10:12:59

Docker容器LXDCanonica

2023-02-03 17:47:28

2010-01-04 16:43:43

Web2.0軟件服務

2012-11-02 09:52:19

Ubuntu 12.1

2011-10-09 16:20:08

MongoDBJournaling

2009-06-19 13:28:30

Spring AOPSpring 2.0

2013-09-29 09:50:21

系統(tǒng)管理員Ubuntu JujuJuju
點贊
收藏

51CTO技術棧公眾號