在這次的IT鐵人比賽我為什麼要介紹Apache Mesos?
它能幫助我們做到哪些事情?
能夠使我們得到哪些好處呢?
我在這30天內要介紹Apache Mesos有哪些功能也都會在下面列出
為什麼要介紹Apache Mesos?
我為什麼會介紹Apache Mesos,主要是因為在現代的server程式愈來愈多如CI Server、Web Server、Spark Standalone、Hadoop、Cassandra…等等各式各樣琳瑯滿目,而且server也不可能只有一台,而是一台以上這時就會發生很多系統管理上的問題,如我要如何把service程式部署到哪些server上?每一個service程式需要多少的資源 (如cpu core數、記憶體大小、硬碟大小…等等)?如果一個service程式當掉如tomcat當掉要如何在不同的server啟動起來不用系統管理員手動去啟動?要如何做到如service的負載平衡的功能…等等的需求,其實上述的需求我相信都可以使用傳統的shell script和一些工具來解決但在某種程度上還是很複雜的因為它要使用一種以上的工具組合在一起才有可能達成上述需求的效果,但在Apache Mesos出現之後使得在管理整個叢集(cluster)的資源和service更加的自動和方便。
它能幫助我們做到哪些事情?
上圖是一個在傳統部署service最簡單的架構,如有四台機器有2台是部署Tomcat Service另外2台是Jetty Service,在部署這些service上系統管理者必須要清礎的知道哪些server上有哪些Service,並且要了解到每台server上的資源,如果這時有新的需求如要在加入一台新的Jetty Service,這時系統管理員會在這四台機器中選擇一台資源使用率較低的server進行部署。之後host1有可能因為硬體故障導致Tomcat Service無法啟動,而大家只能連到host2有可能導致流量過大而造成host2記憶體不夠而當機,一連串的惡性循環而造成系統管理員過累工作效率降低,而下圖改用Apache Mesos的架構來解決此問題:
改成Apache Mesos架構會如上圖,Mesos詳細的架構在未來還會繼續介紹,以上圖來說在建構Tomcat Service和Jetty Service的操作是透過Mesos Framework如Marathon的方式,我們只要透過restful的方式把寫好的json設定傳到Marathon就可以執行啟動service,json的設定檔內容如下,Marathon Framework也在未來會做介紹,現在只是簡單demo mesos對我們使用上的方便性。
能夠使我們得到哪些好處呢?
執行restful的指令如下:
curl -X POST -H "Content-type: application/json" http://172.17.0.4:8080/v2/apps -d @Tomcat.json
上面的json設定可以設定tomcat service要執行在2台的server上,如果有一台的service被砍掉或當掉會在其它的server上啟動service、可以設定要在哪幾台特定的server上執行service、另外也可以去指定service需要多少的資源(如:CPU core數、記憶體大小)…等等的功能,這些在未來都會做介紹,在部署server上只要把設定檔寫好就可以快速的把service啟動起來,讓我們的工作效率增加也期望讓我們在部署service和管理整個cluster的資源更加的自動化。
在未來的30天我主要會介紹下面幾個部份:
一、 Apache Mesos的架構、安裝和啟動master、slave
二、 Apache Mesos Framework(如:Marathon、Aurora、Chronos),並且會介紹如何寫一個自訂的Framework
三、 在Apache Mesos執行一些程式(如:Apache Spark、Cassandra、CI Server…等等)
四、 介紹一些Apache Mesos的資源分配機制和實作
五、 因為mesos slave有很多台,所以使用者有可能會不知道AP執行在哪幾台機
器上,所以需要service discovery工具如:Apache Mesos DNS、HAProxy
六、 介紹一些Mesos系統監控工具,如:使用Mesos內建的RestfulAPI
七、 淺談一些關於Mesos Security的部份