溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用colinux制作tinycolinx且在ecs上打造server farm和vps iaas環(huán)境代替docker

發(fā)布時(shí)間:2021-10-22 09:48:51 來源:億速云 閱讀:154 作者:柒染 欄目:云計(jì)算

這篇文章給大家介紹如何利用colinux制作tinycolinx且在ecs上打造server farm和vps iaas環(huán)境代替docker,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

本文關(guān)鍵字:將tinycorelinux裝在硬盤上,custom tinycore linux kernel,tcl3安裝使用方法,tcl安裝到硬盤,自定義linux rootfs,利用colinux代替docker組建容器。單機(jī)端口反代重用技術(shù),內(nèi)網(wǎng)轉(zhuǎn)發(fā)復(fù)用端口

xaas的一個(gè)應(yīng)用:它可以模擬docker容器,將ECS分為多個(gè)子colinux系統(tǒng),比如,對(duì)于一個(gè)1C核1G內(nèi)存的ECS,我們可以根據(jù)128M為粒度大小,利用colinux能在conf中設(shè)置mem的大小的能力,將ECS資源劃分為512/128=4個(gè)colinux容器。除了給內(nèi)存配額在tinycorelinux wiki中還有定義governers限制CPU的能力和講解。這一切都不需要利用到docker這種過度虛擬化的方案帶來的虛擬地獄缺點(diǎn):比如docker利用分層聯(lián)合文件系統(tǒng),用戶難于維護(hù)。

為了實(shí)現(xiàn)可用性,我們還必須作一系列改進(jìn),比如,由于128m內(nèi)存限制太小,我們必須利用專門的colinux os發(fā)行版而不是巨大的ubuntu etc..,比如采用tinycore linux os,它可以做到以至少10M的服務(wù)器核心而存在,這跟windows上的boot2docker使用定制版的core linux os是一樣的道理。選用tcl的另一個(gè)考慮是它有獨(dú)特的發(fā)行包機(jī)制,它的發(fā)行包比較精簡,專用的軟件包發(fā)行限制可以避免VM用戶裝亂七八糟的大軟件,第三,tcl的處處即掛載的cloud run+可持久機(jī)制(整個(gè)根可掛載到內(nèi)存livecd下或其它介質(zhì),home目錄可掛載,tcz loop mounts必掛載)使得即使給了用戶root也不會(huì)輕易破壞系統(tǒng)適合VM使用。

對(duì)于一個(gè)真實(shí)可用的vm container環(huán)境,還會(huì)有其它高級(jí)課題,比如,一臺(tái)ECS只有一個(gè)80端口,多個(gè)內(nèi)網(wǎng)colinux VM環(huán)境需要重用80端口出網(wǎng)。無論如何,下面先來搞定將tinycore與colinux結(jié)合的問題:為colinux制作一個(gè)精簡的tinycorelinux發(fā)行。

制造一個(gè)精簡server發(fā)行版

這一切需要在另外一臺(tái)linux上完成,比如直接利用我發(fā)布的colinux14.04版本:

一開始我參照網(wǎng)上《將ubuntu8.04 iso安裝到colinux的方法》先試驗(yàn)下載了最新的各種iso,通過conf文件中直接掛載/dev/cobd1=xx.iso,root=/dev/cobd1,initrd=tinycore.gz的方式企圖進(jìn)入,發(fā)現(xiàn)最后都不能進(jìn)入,有colinux initrd的問題,有tinycore.gz文件系統(tǒng)的問題,有colinux內(nèi)核的問題。光盤方式看來是不行了。

不會(huì)要重編內(nèi)核,或者重封裝rootfs吧?

但其實(shí)硬盤方式加+低版本microcore3.8.4.iso是可行的,我重新做了一個(gè)1G的硬盤,在colinux中mkfs.ext3格式它,拷貝提取iso中的microcore.cpio直接釋放到硬盤,tinycorelinux就開始運(yùn)行了直到出現(xiàn)登錄用戶提示符,即cpio -idmv < microcore.cpio到根目錄,然后用colinux引導(dǎo)新的硬盤系統(tǒng)(原colinux vmlinux可以無修改,initrd.gz也可以利用上),這樣天然地就是tinycorelinux的硬盤模式了。(initrd.gz注入后,再重啟,提示scatter harddisk installation mode后進(jìn)入login提示,用tc用戶無密碼登錄),我把它稱為tinycolinux。

tinycolinux的conf中還可以支持tinycorelinux中提到的各種bootcodes,比如root=/dev/cobd0,home=/dev/cobd0,opt=/dev/cobd0,tce=/dev/cobd0這些,由于tinycorelinux會(huì)搜索分區(qū)上的/tce目錄為應(yīng)用下載目錄,所以我也在\新建了一個(gè),否則默認(rèn)tce-load -wi xxx出來的options會(huì)出現(xiàn)在/tmp/tce中,(硬盤模式下home,opt,root都出現(xiàn)在當(dāng)前所在的硬盤根下,在/下建一個(gè)/tce目錄,有跟conf中設(shè)置tce=/dev/cobd0同樣的效果)。

由于一切都是在硬盤完成的,整個(gè)文件系統(tǒng)都是可持久的,除了應(yīng)用安裝不用處理其它持久化問題了:

TinyCoreLinux持久化問題-用戶數(shù)據(jù)和應(yīng)用擴(kuò)展保留

tinycorelinux一開始定位live iso和cloud模式,體現(xiàn)在它能在liveiso完全無持久,和有持久介質(zhì)的多種場景下運(yùn)行,其root文件系統(tǒng)核心集和應(yīng)用擴(kuò)展settings在每一次重啟后都是fresh的重啟就丟了一切會(huì)話和應(yīng)用擴(kuò)展和其設(shè)置數(shù)據(jù),因?yàn)橐磺卸际菕燧d到外部持久的條目或加載到ram的tcz擴(kuò)展鏡像,對(duì)于前者,它實(shí)際上就是掛載到持久介質(zhì)的入口而已 --- 正由于這些都是掛載hook點(diǎn),所以可以集中卸載,,更改依然在外,對(duì)于后者,ram下天然不能持久,二者可以維護(hù)一個(gè)干凈的重啟后環(huán)境,

而對(duì)于必須帶入下一次重啟,或整個(gè)文件系統(tǒng)的持久化,除非你指定保存邏輯和定義保存條目 --- 注意這句話,稍后就會(huì)談到。

有三個(gè)可配置掛載的目錄,/home,/opt和/tce,你可以掛載全部三個(gè)到可持久外部介質(zhì)或選一二,設(shè)想tcl在完全無持久介質(zhì)的liveiso情況下啟動(dòng),它根本就沒有持久能力,但若指定了至少一個(gè)可持久目錄到外部介質(zhì)后啟動(dòng),它就可以在外部介質(zhì)上得到更改保存,但這些改變不會(huì)被帶入到除了這三部分之外的任何根文件系統(tǒng)的其它部分。

有一種情況比較特殊,當(dāng)tincorelinux整個(gè)文件系統(tǒng)被置于入硬盤并從硬盤啟動(dòng)時(shí),實(shí)際上硬盤整個(gè)就是可讀寫的(norestore bootcode天然啟用,/home,/opt,/tce都是現(xiàn)成被默認(rèn)定義了的可持久目錄)。

而至于對(duì)于要帶入下一次重啟和根目錄文件系統(tǒng)的那部分持久和更改,你可以指定restore:比如bootcodes定義了restore,和/home到硬盤和新增了.filetool.lst中的新條目,它就會(huì)產(chǎn)生mydata.tgz備份/home和/opt,到這個(gè)持久上---你可以定制包括/home,/opt的可持久路徑和bootcode中指定restore所在的路徑,進(jìn)行一次filetool -b,并在下一次由系統(tǒng)恢復(fù)。

對(duì)于應(yīng)用,同樣的方式(如上bootcode指定),可以有定義了一個(gè)保存在可持久介質(zhì)上的/tce目錄,比如它在硬盤上,/tce下的options和onboot.lst的更改就能持久化。就能將*.tcz動(dòng)態(tài)掛載進(jìn)來(tcz是一些只讀文件系統(tǒng)包,掛載進(jìn)來的時(shí)候是掛到內(nèi)存中)。要注意在這里,應(yīng)用加載邏輯是持久過的,但應(yīng)用依然留在內(nèi)存運(yùn)行。且應(yīng)用的設(shè)置部分還沒有經(jīng)過顯式持久化。

所以進(jìn)一步地,如果tcz要帶入系統(tǒng)作更改,你依然可以結(jié)合.filetool工具和機(jī)制,將具體tcz安裝后需要持久的部分持久化到可持久中或者ln -s部分目錄到硬盤,還可以在在/opt/bootlocal.sh中定義開機(jī)利用這些目錄持久的邏輯。

將tinycolinux打造成完全的硬盤系統(tǒng)

到此為止,應(yīng)用依然是靠一次性加載到內(nèi)存來運(yùn)行的。針對(duì)已經(jīng)安裝好的tinycolinux,我們需要純粹在硬盤上安裝運(yùn)行的應(yīng)用擴(kuò)展:

(雖然對(duì)于live系統(tǒng)和3個(gè)目錄組成的定點(diǎn)集中維護(hù)來看它是最佳的,但實(shí)際上,除非對(duì)應(yīng)用本身進(jìn)行定制,否則應(yīng)用安裝過程實(shí)際上可能會(huì)對(duì)整個(gè)系統(tǒng)文件系統(tǒng)產(chǎn)生更改,而這也是其它linux distro軟件包的默認(rèn)行為),,況且,我發(fā)現(xiàn)tiny core linux有幾種包不一樣,像nginx和mysql,前者會(huì)loop mounts,后者不會(huì)產(chǎn)生loop mounts,mysql安裝tce-load -wi安裝后會(huì)留在/usr/local目標(biāo)中持久,而nginx在-wi后重啟系統(tǒng)僅留下一些軟鏈接,不能統(tǒng)一處理,這反而給安裝造成了困擾,為了追求更自然的類現(xiàn)在包管理機(jī)制的方案和統(tǒng)一省事的安裝方法,我想出的辦法最初是直接下載tcz包釋放到目標(biāo),因?yàn)閠cz包是簡單的文件系統(tǒng)打包大都釋放到usr/local目錄也比較容易手動(dòng)安裝:

1)下載應(yīng)用時(shí)只tce-load -w下載到options

繞過tce-load -wi會(huì)創(chuàng)造loop mounts的過程。改用tce-load -w而不安裝。

2)從這個(gè)地址下載http://mirrors.163.com/tinycorelinux/8.x/x86/tcz/squashfs-tools.tcz,提取二個(gè)可執(zhí)行文件放到把它放在根目錄/bin中

利用它來進(jìn)行手動(dòng)解壓。

3)然后視tcz內(nèi)容在windows上用7z打開查看看它是要釋放到哪的,

其下載地址往往是/opt/tcemirror中條目后加/3.x/tcz/包名.tcz得到的,手動(dòng)解壓,unsquashfs -f -d / /tce/optional/nginx.tcz (這里以nginx為例,它釋放到/下)

處理好各個(gè)deps的tcz,對(duì)于nginx是openssl和pcre。如果所有的deps都安裝了還是發(fā)現(xiàn)不了so文件,重啟一次必發(fā)現(xiàn)。sudo nginx會(huì)發(fā)現(xiàn)不了libprce.so.0

然后在opt/bootlocal.sh中加入隨系統(tǒng)自動(dòng)啟動(dòng)條目,對(duì)于openssh是/usr/local/etc/init.d/openssh start,對(duì)于nginx是nginx -s start吧。

完工!nginx在重啟后自動(dòng)運(yùn)行!要卸載時(shí)只須處理/usr/local目錄。

其實(shí)tcl這種live機(jī)制也可用于裝機(jī)代替virtiope,這是后話了。 除了這些,當(dāng)這些colinux vm用于建站時(shí),還需要nginx反代多個(gè)VM重用一個(gè)80的技術(shù),其實(shí)說到內(nèi)網(wǎng)轉(zhuǎn)發(fā)復(fù)用端口,《基于colinux打造nas》一文中也可以用它來出網(wǎng)。制造發(fā)行版的二大基本組件,os本身已經(jīng)解決了,還有toolchain的問題。根據(jù)我的《host2guest guest2host nativelangsys及cross compile system》一文,雖然tinycore linux有g(shù)cc應(yīng)用包,不過我傾向于把它放在windows hosts,來編譯制造tinycore linux可用的目標(biāo)。好了。這些都不講了。

關(guān)于如何利用colinux制作tinycolinx且在ecs上打造server farm和vps iaas環(huán)境代替docker就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI