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),進而使用制定的參數做規範。
文章參考資料
- Juju – Scaling Charms
- Juju – Removing services, units and environments
- Juju – Groups of Services
- Juju – Service High Availability (HA)
- Juju – Creating and using Bundles
- Juju – Using Units
- Juju – Juju Actions
- Juju – Storage support