訪問web應(yīng)用
使用在Marathon UI顯示的信息,我可以訪問URL為http://coreos1.ad.forest:31000的Web應(yīng)用程序戚绕。
當(dāng)應(yīng)用程序運(yùn)行時(shí)頁面左上角會(huì)顯示容器名稱,用于上載和下載的圖片的Amazon S3終端(endpoint)會(huì)顯示在左下角枝冀,并表明ViPR用于存儲(chǔ)數(shù)據(jù)舞丛。
我們現(xiàn)在可以上傳圖片了。
下面是由Web應(yīng)用程序發(fā)送到瀏覽器的代碼果漾,以讓瀏覽器直接上傳圖片到對(duì)象存儲(chǔ)平臺(tái)球切。
var?files?=??$("#file")[0].files;
var?reader?=?new?FileReader();
reader.onload?=?function(event){
var?content?=?event.target.result;
try?{
$.ajax({
url:?'http://bucket1.denisnamespace.ns.viprds.ad.forest:80/pictures/B6C3OuVCIAEfwjm.jpg',
data:?content,
cache:?false,
processData:?false,
type:?'PUT',
beforeSend:?function?(request)
{
request.setRequestHeader('Content-Length','35964');
request.setRequestHeader('Content-Type','binary/octet-stream');
request.setRequestHeader('x-amz-date','Sun,?11?Jan?2015?12:53:12?UTC');
request.setRequestHeader('host','bucket1.denisnamespace.ns.viprds.ad.forest');
request.setRequestHeader('Authorization','AWS?denis@ad.forest:iCnahEUOy8/lanI96tQYA3WKQVE=');
},
success:?function(data,?textStatus,?request){
$('#alert-success').html("Picture?uploaded").show().delay(5000).fadeOut();
},
error:?function(data,?textStatus,?request){
$('#alert-danger').html("Upload?failed").show().delay(5000).fadeOut();
}
});
}
catch?(e)?{
alert(e);
}
}
reader.readAsArrayBuffer(files[0]);
圖片直接上傳到對(duì)象存儲(chǔ)平臺(tái)的事實(shí)意味著該Web應(yīng)用程序中并沒有數(shù)據(jù)路徑。也就是說無需部署數(shù)百個(gè)實(shí)例應(yīng)用程序就可以擴(kuò)展绒障。
這個(gè)Web應(yīng)用程序吨凑,也可用于顯示所有存儲(chǔ)在相應(yīng)的Amazon S3的圖片。
圖片下方顯示的URL表明圖片可以直接從對(duì)象存儲(chǔ)平臺(tái)下載,而這又意味著Web應(yīng)用程序不是從數(shù)據(jù)路徑直接下載鸵钝。
對(duì)象存儲(chǔ)是事實(shí)上的標(biāo)準(zhǔn)網(wǎng)絡(luò)規(guī)模應(yīng)用糙臼。
更新vulcand代理
現(xiàn)在,讓我們看看如何能夠從外界訪問該Web應(yīng)用程序恩商。
我使用Golang開發(fā)了一個(gè)小工具变逃,同時(shí)使用Marathon API和etcd API:
找到那些運(yùn)行的Mesos應(yīng)用程序但卻沒有相對(duì)應(yīng)的在etcd中的vulcand規(guī)則,然后新建缺失的規(guī)則怠堪。
找到那些存在與etdc的vulcand規(guī)則中的不再運(yùn)行的Mesos應(yīng)用揽乱,然后刪除。
Web應(yīng)用程序現(xiàn)在可以從外界訪問粟矿。(http://s3pics.ad.forest).
擴(kuò)展Mesos應(yīng)用程序
其中Mesos之美在于它能夠輕松地?cái)U(kuò)展當(dāng)前正在運(yùn)行的應(yīng)用程序的實(shí)例數(shù)目凰棉。
幾秒鐘后,20個(gè)實(shí)例正在運(yùn)行陌粹。
我需要再次運(yùn)行我的工具來更新vulcand規(guī)則撒犀。
現(xiàn)在,如果我刷新我的網(wǎng)頁瀏覽器申屹,可以看到绘证,在左上角顯示的容器名稱是基于服務(wù)的應(yīng)用程序?qū)嵗l(fā)生變化。
使用Marathon UI或API時(shí)哗讥,它也可以按比例縮小的實(shí)例數(shù)并再次運(yùn)行工具來更新vulcand規(guī)則嚷那。
原文鏈接:How to create a web scale infrastructure based on Docker, CoreOS, Vulcand and Mesos. And why Object Storage becomes the de facto data repository(翻譯:張逸仙 審校:李穎杰)