昨天已經介紹了如何設定Mesos的靜態資源分配,但是靜態資源分配的彈性不夠,如果要調整必須要重新啟動mesos slave,這樣有點的麻煩,所以今天要介紹要如何設定Mesos動態的資源分配。
Mesos的動態資源分配其實也是很簡單的,它只要透過使用restful的方式就可以動態的調整資源。
保留(reserve)資源如下指令:
curl -i -d slaveId=<SlaveID> -d resources='[{"name":"cpus","type":"SCALAR","scalar":{"value":10},"role":"marathon","reservation":{"principal":""}}]' -X POST http://192.168.182.132:5050/master/reserve
如上指令可以設定marathon的role資源保留cpu core為10個,執行結果如下:
反過來也可以取消保留資源如下指令。
取消保留(unreserve)資源如下指令:
curl -i -d slaveId=<SlaveID> -d resources='[{"name":"cpus","type":"SCALAR","scalar":{"value":10},"role":"marathon","reservation":{"principal":""}}]' -X POST http://192.168.182.132:5050/master/reserve
上面的指令就是把剛才保留的marathon role的10個CPU Core指令,結果如下:
另外有一點要注意的地方是我有在marathon 0.8.0 的版本上測試動態資源保留但是一直有問題拿不到資源,後來修改成marathon 1.3.5就可以拿到動態資源,所以要注意framework的版本有可能不能執行。但使用marathon 1.3.5 JDK的版本要使用1.8。
Mesos的資源分配設定方法還有很多種如:quota、oversubscription…等等,未來還有可能增加有興趣的話可以去官方網站查看。
參考資料:
mesos資源保留:http://mesos.apache.org/documentation/latest/reservation/