溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-22 09:48:51 來源:億速云 閱讀:165 作者:柒染 欄目:云計算

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

本文關鍵字:將tinycorelinux裝在硬盤上,custom tinycore linux kernel,tcl3安裝使用方法,tcl安裝到硬盤,自定義linux rootfs,利用colinux代替docker組建容器。單機端口反代重用技術,內網轉發復用端口

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

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

對于一個真實可用的vm container環境,還會有其它高級課題,比如,一臺ECS只有一個80端口,多個內網colinux VM環境需要重用80端口出網。無論如何,下面先來搞定將tinycore與colinux結合的問題:為colinux制作一個精簡的tinycorelinux發行。

制造一個精簡server發行版

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

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

不會要重編內核,或者重封裝rootfs吧?

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

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

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

TinyCoreLinux持久化問題-用戶數據和應用擴展保留

tinycorelinux一開始定位live iso和cloud模式,體現在它能在liveiso完全無持久,和有持久介質的多種場景下運行,其root文件系統核心集和應用擴展settings在每一次重啟后都是fresh的重啟就丟了一切會話和應用擴展和其設置數據,因為一切都是掛載到外部持久的條目或加載到ram的tcz擴展鏡像,對于前者,它實際上就是掛載到持久介質的入口而已 --- 正由于這些都是掛載hook點,所以可以集中卸載,,更改依然在外,對于后者,ram下天然不能持久,二者可以維護一個干凈的重啟后環境,

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

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

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

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

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

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

將tinycolinux打造成完全的硬盤系統

到此為止,應用依然是靠一次性加載到內存來運行的。針對已經安裝好的tinycolinux,我們需要純粹在硬盤上安裝運行的應用擴展:

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

1)下載應用時只tce-load -w下載到options

繞過tce-load -wi會創造loop mounts的過程。改用tce-load -w而不安裝。

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

利用它來進行手動解壓。

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

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

處理好各個deps的tcz,對于nginx是openssl和pcre。如果所有的deps都安裝了還是發現不了so文件,重啟一次必發現。sudo nginx會發現不了libprce.so.0

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

完工!nginx在重啟后自動運行!要卸載時只須處理/usr/local目錄。

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女