Scaling Charms
Expanding service capacity
#增加一個service節點在本地host(不指定--to) $ juju add-unit rabitmq-server #增加一個service節點在machine 1 $ juju add-unit --to 1 rabitmq-server #增加特定數量節點(n)、特定環境(e) $ juju add-unit -n 10 mysql -e hpcloud
Scaling back
#刪除特定編號(ex: 2號)的節點 $ juju remove-unit mediawiki/2 #銷毀特定編號(ex: 1號)機器 $ juju destroy-machine 1
Removing services and environments
Remove a service
#刪除特定服務(ex: mysql),若有Relation存在則會斷開 $ juju remove-service mysql
Remove machines
#移除特定編號(ex: 1號)機器 $ juju remove-machine 1
Destroying the environment
#銷毀執行環境(移除所有節點及服務) $ juju destroy-environment <environment>
Caveats
#解決units的error,讓其繼續運作,解除中斷的情況 $ juju resolved <unit>
Groups of Services
#替佈署的service命名 $ juju deploy mysql <name> $ juju deploy mysql wikidb #使用已命好的名稱建立連結(-n可以設定unit的數量,換句話說就是建立了一個群組) $ juju deploy mysql masterdb $ juju deploy mysql slavedb -n2 $ juju add-relation masterdb:master slavedb:slave #可以針對命好名的群組作設定 $ juju set slavedb some_param=new_value
Service High Availability (HA)
Distribution groups
#若系統有啟用 Availability Zones 或 Availability Sets ,佈署數個Service時,就會存在HA的特性 $ juju deploy -n 10 <service>
Availability Zones
#機器佈署在不同的zone,可以達到HA(distribution groups)的效果 $ juju bootstrap --to zone=us-east-1b $ juju add-machine zone=us-east-1c
Azure Availability Sets
Azure的預設HA機制,預設是開啟的,功能是要確保所有的unit不會在同一時間失效
Creating and using Bundles
Bundle 可以透過線上的store下載,也可以透過本地端yaml檔來安裝
Local deploy via command-line
#在本地端佈署Bundle yaml要使用juju quickstart,因此必須先行安裝 $ sudo add-apt-repository ppa:juju/stable $ sudo apt-get install juju-quickstart #務必使用bundle proof來確保可能會發生的錯誤 $ juju bundle proof ../path-your-bundle-name #啟用本地bundle $ juju quickstart bundle.yaml
Using Units
juju ssh
#遠端連線到某一個unit $ juju ssh mysql/3
juju scp
#遠端複製檔案(從machine 2到本地) $ juju scp 2:/var/file . # 同時複製多個不同的遠端檔案 $ juju scp -v 2:/var/file 1:/var/file . # 複製整個遠端的資料夾 $ juju scp -r 2:/var/log/ . #複製本地的檔案到遠端 $ juju scp -e <environment> test.txt apache2/1:
juju run
#遠端下CLI指令(ex: uname)在所有machine上 $ juju run "uname -a" --all # 遠端下CLI指令(ex: uptime)在特定machine上 $ juju run "uptime" --machine=2 # 遠端下CLI指令(ex: uptime)在所有運行此service的unit上 $ juju run "uptime" --service=mysql # 遠端下CLI指令(ex: uptime)在特定unit上 $ juju run "uptime" --unit=nfs1/0
Juju Actions
#秀出service可執行的action $ juju action defined mysql backup: Take a backup of the database ... # 命令service執行action $ juju action do mysql/0 backup Action queued with id: <ID> #擷取某個action執行結果 $ juju action fetch <ID> #查詢某個action目前的狀況 $ juju action status <ID>
Storage support
用juju storage指令,可以提出儲存媒體需求(storage requirements),進而使用制定的參數做規範。