概述
Smartos是一個(gè)開源的Unix系列操作系統(tǒng),從Solaris10分支出來(lái),由Joyent公司開發(fā)。
Smartos擁有非常強(qiáng)大而簡(jiǎn)便的虛擬化功能,非常適合用來(lái)做云計(jì)算。
而Triton則是Joyent開發(fā)的,基于Smartos系統(tǒng)的一套開源的云平臺(tái)管理軟件,可以用來(lái)管理私有云。
Smartos詳細(xì)資料請(qǐng)參考:https://wiki.smartos.org/display/DOC/Home。
Triton詳細(xì)資料請(qǐng)參考:https://docs.joyent.com/private-cloud。
Smartos入門
為了方便理解接下來(lái)的安裝配置過程,先介紹一些Smartos相關(guān)的入門知識(shí)。
Smartos是駐內(nèi)存的操作系統(tǒng)
說(shuō)Smartos是駐內(nèi)存的操作系統(tǒng),是因?yàn)樗旧聿辉诖疟P上保存任何操作系統(tǒng)運(yùn)行相關(guān)的文件,只將配置、虛擬機(jī)等信息持久化到磁盤上。所以每次啟動(dòng)時(shí),整個(gè)系統(tǒng)都會(huì)被全部加載到內(nèi)存中運(yùn)行。而根據(jù)加載源的不同,就有兩種加載方式:
1.USB啟動(dòng)。將操作系統(tǒng)寫入到U盤中,并讓服務(wù)器從本地U盤啟動(dòng)。
2.PXE啟動(dòng)。將操作系統(tǒng)放到某個(gè)服務(wù)器中并提供PXE啟動(dòng)服務(wù),其他的服務(wù)器就可以通過網(wǎng)絡(luò)啟動(dòng)了。
因此,操作系統(tǒng)更新時(shí),也從來(lái)不用打任何補(bǔ)丁,直接從最新版的系統(tǒng)重新啟動(dòng)即可。
zfs文件系統(tǒng)
Smartos使用zfs作為本地的文件系統(tǒng),而zfs本身并不是Smartos獨(dú)有的,其他Linux發(fā)行版也可以使用。zfs和其他的文件系統(tǒng)相比有諸多好處,這里就不一一陳述了,但是簡(jiǎn)單的介紹下zfs的結(jié)構(gòu)。
存儲(chǔ)池
zfs首先從物理磁盤開始構(gòu)建存儲(chǔ)池,叫做zpool,服務(wù)器的存儲(chǔ)空間可以由一個(gè)或者多個(gè)zpool組成,每個(gè)zpool都是獨(dú)立的存儲(chǔ)空間。
disk:操作系統(tǒng)可以直接檢測(cè)到物理磁盤,也可以檢測(cè)到硬件raid虛擬化出來(lái)的磁盤,但是為了充分利用zfs的性能,應(yīng)該將硬件raid設(shè)置成直連(HBA)模式,直接暴露所有物理磁盤。
array:將物理磁盤進(jìn)行任意組合,可以生成一個(gè)或多個(gè)軟件陣列,可以是mirror、raid等模式。一旦陣列生成,組成陣列的磁盤數(shù)量將不允許變更,只能對(duì)成員磁盤進(jìn)行脫離、更換等工作。
zpool:將陣列進(jìn)行任意的組合,可以生成一個(gè)或者多個(gè)zpool,zpool可以添加或者刪除子陣列,zpool的存儲(chǔ)空間就是所有陣列存儲(chǔ)空間的疊加。
文件系統(tǒng)
有了zpool存儲(chǔ)空間后,就可以構(gòu)建文件系統(tǒng)了。
zfs文件系統(tǒng)以zpool為根,以樹形結(jié)構(gòu)進(jìn)行層級(jí)劃分和管理,但是文件系統(tǒng)的屬性(比如預(yù)留空間、權(quán)限、配額)可以有繼承和依賴關(guān)系。
zfs文件系統(tǒng)和虛擬機(jī)里面的文件系統(tǒng)很像似,但是不一樣,zfs文件系統(tǒng)的節(jié)點(diǎn)是一個(gè)設(shè)備,需要掛載到虛擬機(jī)文件系統(tǒng)的一個(gè)目錄樹節(jié)點(diǎn)上,而虛擬機(jī)文件系統(tǒng)中的節(jié)點(diǎn)就是目錄或者文件。最簡(jiǎn)潔的判別方法就是zfs文件系統(tǒng)不以/開頭。
Smartos網(wǎng)絡(luò)層次
Smartos作為虛擬化操作系統(tǒng),必然要實(shí)現(xiàn)網(wǎng)絡(luò)硬件的虛擬化,虛擬化的技術(shù)叫做Crossbow,這里只簡(jiǎn)單的介紹一下。
physical nic:一臺(tái)物理機(jī)上可以插多張物理網(wǎng)卡,每個(gè)網(wǎng)卡上可以有多個(gè)物理網(wǎng)口,每個(gè)物理網(wǎng)口都有一個(gè)全宇宙唯一的mac地址。
aggregation:聚合網(wǎng)口由多個(gè)物理網(wǎng)口聚合而成,一個(gè)物理網(wǎng)口只能加入一個(gè)聚合網(wǎng)口或者不聚合,聚合網(wǎng)口通過一個(gè)名稱來(lái)進(jìn)行標(biāo)識(shí),物理網(wǎng)口直接用mac進(jìn)行標(biāo)識(shí)。
virtual switch:虛擬交換機(jī)的名稱在Smartos里叫做nic tag,每個(gè)虛擬交換機(jī)能且只能配置一個(gè)聚合網(wǎng)口或者物理網(wǎng)口,一個(gè)聚合網(wǎng)口或者物理網(wǎng)口可以屬于任意多個(gè)虛擬交換機(jī)。
global zone和vm:global zone就是物理機(jī)的根操作系統(tǒng),但是應(yīng)該理解成一個(gè)特殊的虛擬機(jī)。虛擬機(jī)通過給每個(gè)虛擬網(wǎng)卡指定nic tag來(lái)接入虛擬交換機(jī),每臺(tái)虛擬機(jī)都必須指定一個(gè)主要網(wǎng)卡作為默認(rèn)路由。
硬件需求
Smartos和Triton的運(yùn)行對(duì)硬件有些需求,并不適用任意硬件,不過也沒有太多苛刻的地方,這里簡(jiǎn)單概括下:
Smartos:
1.64-bit x86架構(gòu),推薦Intel的CPU,開啟VT-x功能支持kvm虛擬化。
2.能夠USB啟動(dòng)以及能夠PXE啟動(dòng),第一臺(tái)機(jī)器只可能USB啟動(dòng),之后的機(jī)器可以PXE啟動(dòng)。
3.只支持本地存儲(chǔ),盡量避免使用硬件RAID,將RAID控制器設(shè)置成HBA直連模式。因?yàn)橐褂脄fs文件系統(tǒng)。
4.推薦Intel的網(wǎng)卡,至少兩塊網(wǎng)卡。
Triton:
1.由于Triton是安裝在主節(jié)點(diǎn)(head node)上并控制從節(jié)點(diǎn)(compute node)的,所以需要至少兩臺(tái)服務(wù)器,推薦三臺(tái)。Triton不會(huì)允許用戶在head node上創(chuàng)建虛機(jī),同時(shí)要求主從節(jié)點(diǎn)的硬件配置是一樣的。
2.64G內(nèi)存以上。因?yàn)閔ead node要運(yùn)行很多服務(wù)。
3.至少三塊同樣大小的磁盤,有1T實(shí)際可用空間,推薦奇數(shù)塊磁盤,推薦保持內(nèi)存磁盤比為1:20。
詳細(xì)請(qǐng)參考:https://docs.joyent.com/private-cloud/install/hardware-selection。
硬件參考:
我們主要是拿來(lái)做開發(fā)測(cè)試機(jī),不需要特別好的性能,所以選擇了戴爾R730,質(zhì)量比較好。
CPU是E5-2630V4*2,遵循推薦。
內(nèi)存16G*8,夠用。
硬盤1T*4,SAS盤7200轉(zhuǎn),3.5寸的損壞率比2.5寸的小。
板載千兆網(wǎng)口沒什么好說(shuō)。一塊Intel的X520雙口萬(wàn)兆網(wǎng)卡,遵循推薦。
啟動(dòng)
先從網(wǎng)上下操作系統(tǒng),由于Triton是集成到Smartos里面一并安裝的,所以不需要先下Smartos系統(tǒng),直接裝Triton就行了。注意:Joyent一再?gòu)?qiáng)調(diào)付費(fèi)用戶必須找他們要,雖然和免費(fèi)版沒什么區(qū)別。
curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartDataCenter/usb-latest.tgz
然后懟到U盤里去就行了,mac很方便,注意別填錯(cuò)磁盤號(hào),還要確保U盤有至少8G空間。使用其他操作系統(tǒng)的同學(xué)就參考官方文檔吧:https://docs.joyent.com/private-cloud/install/installation-media。
diskutil list
sudo diskutil umountDisk /dev/disk2
tar -xvzf usb-lastest.tgz
sudo dd if=usb-release-20170302-20170303T225707Z-gc64b017-4gb.img of=/dev/rdisk2 bs=1m
sudo diskutil eject /dev/disk2
然后把U盤插到服務(wù)器上,按照上述需求配置好BIOS,啟動(dòng)。
安裝head node在進(jìn)入GRUB時(shí)選擇Live 64,然后根據(jù)提示安裝即可。
Triton head node網(wǎng)絡(luò)配置
Triton head node的安裝過程中,網(wǎng)絡(luò)配置是最復(fù)雜的。
基于Smartos的網(wǎng)絡(luò)層次,Triton對(duì)網(wǎng)絡(luò)有一些定制化的需求,配置中提到了三個(gè)網(wǎng)絡(luò),這里的網(wǎng)絡(luò)指虛擬交換機(jī)以及連入虛擬交換機(jī)的虛擬網(wǎng)卡。
1.admin。這個(gè)網(wǎng)絡(luò)本身就是Smartos的默認(rèn)網(wǎng)絡(luò),Smartos要求這個(gè)網(wǎng)絡(luò)不能打vlan標(biāo),而且不能和其他網(wǎng)絡(luò)共享(物理或聚合網(wǎng)口獨(dú)享)。Triton用它來(lái)做內(nèi)部管理,所有核心服務(wù)都會(huì)在這個(gè)網(wǎng)絡(luò)上,并且加了一個(gè)額外限制,不能連接外網(wǎng)。此外需要預(yù)留18個(gè)ip地址給Triton用。
2.external。這是一個(gè)常用網(wǎng)絡(luò)名稱,Triton將它定義成有外網(wǎng)訪問的網(wǎng)絡(luò),并且可以被共享。此外需要預(yù)留6個(gè)地址給Triton用。
3.underlay。高級(jí)服務(wù)用的,暫時(shí)忽略。總之不能連接外網(wǎng),而且要MTU9000,可以共享。
至于說(shuō)防火墻,總結(jié)來(lái)說(shuō)就是不要亂墻。
由于head node安裝時(shí)就需要去網(wǎng)上下一些服務(wù)的鏡像,所以請(qǐng)確保external網(wǎng)絡(luò)是連通外網(wǎng)的。
此外,Triton暫不支持以交互方式配置鏈路聚合,需要手動(dòng)修改最終的配置文件,詳細(xì)資料請(qǐng)看:https://docs.joyent.com/private-cloud/install/headnode-installation。
注意head node會(huì)被自動(dòng)將域名設(shè)置成headnode,這個(gè)是不能修改的。
交換機(jī)配置
根據(jù)Triton的網(wǎng)絡(luò)要求,理想情況下的網(wǎng)絡(luò)拓?fù)鋺?yīng)該是這樣的。讀者需要先自學(xué)一下交換機(jī)的access口和trunk口的區(qū)別。
1.為admin網(wǎng)絡(luò)準(zhǔn)備一個(gè)千兆交換機(jī),因?yàn)橹挥幸恍┗A(chǔ)服務(wù)需要這個(gè)網(wǎng)絡(luò),所以一個(gè)子網(wǎng)就足夠了,端口可以都配置成access vlan 1。由于不需要外網(wǎng),可以不連上行口。
2.為external網(wǎng)絡(luò)準(zhǔn)備一個(gè)萬(wàn)兆交換機(jī),一方面可以和fabric網(wǎng)絡(luò)復(fù)用,另一方面也可以測(cè)試萬(wàn)兆的性能。注意這些網(wǎng)絡(luò)都是復(fù)用同一個(gè)物理網(wǎng)口的。而每個(gè)物理網(wǎng)口可能會(huì)出各種子網(wǎng)和vlan的包,畢竟所有流量都要從這個(gè)交換機(jī)出去,所以每個(gè)物理口都配置成trunk pvid 1 permit all的模式,然后把ip都放在vlan口上作為網(wǎng)關(guān)。最后給上行物理口一個(gè)ip,并且把默認(rèn)路由指到路由器上和上行口直接連接的端口的ip就行了(注意這兩個(gè)ip一定要在一個(gè)子網(wǎng),不然是不通的)。
3.由于大多數(shù)機(jī)器還有一個(gè)ipmi口用來(lái)做控制的,一般這個(gè)口也是千兆的,轉(zhuǎn)接到萬(wàn)兆上沒有必要,所以也可以接在千兆上,選一個(gè)與admin網(wǎng)絡(luò)不同的子網(wǎng)和vlan,把端口配置成access,然后給vlan配置一個(gè)子網(wǎng)內(nèi)的ip作為網(wǎng)關(guān),再仿照萬(wàn)兆連出去就行了。由于沒有給admin那些口配置網(wǎng)關(guān),所以它們?nèi)匀皇窃L問不了外網(wǎng)的。
安裝Compute node
先在head node上把a(bǔ)dminui(用戶界面)和imgapi服務(wù)連通外網(wǎng)(配置一個(gè)在external網(wǎng)絡(luò)中的虛擬網(wǎng)卡)比較好。然后把cloudapi服務(wù)也順手裝了。
sdcadm post-setup common-external-nics
sdcadm post-setup cloudapi
安裝compute node和安裝head node要使用同一個(gè)系統(tǒng)制作的U盤,只是進(jìn)入GRUB時(shí)選項(xiàng)不一樣,這次選擇compute node。
實(shí)際上他們啟動(dòng)的方式也不一樣,head node是直接從U盤讀取系統(tǒng)的,而compute node是使用head node里面安裝好的PXE服務(wù)通過iPXE啟動(dòng)的,所以compute node直接從板載PXE啟動(dòng)而不使用U盤也可以。只是官方對(duì)iPXE有特殊修改,所以推薦每臺(tái)服務(wù)器都配備一個(gè)時(shí)刻插著的U盤。
compute node的配置都是由head node統(tǒng)一管理的,所以安裝時(shí)不用配置任何東西,但是進(jìn)入登錄界面后,需要在head node上進(jìn)行初始化,這時(shí)候裝了用戶界面就爽了,點(diǎn)點(diǎn)就行,否則要用命令行。
sdc-server setup -s?715020ea-11e1-11e4-bb8a-002590e4edcc "hostname=node1"
uuid是新的compute node的uuid,hostname默認(rèn)是admin的網(wǎng)卡mac,還是修改一下比較愉快不然以后不知道是哪臺(tái),不過修改域名只有一次機(jī)會(huì),別亂來(lái)。
結(jié)尾
現(xiàn)在就可以開心的通過用戶界面來(lái)操作這幾臺(tái)服務(wù)器了,云平臺(tái)的功能這里就不介紹了。
值得一提的是,nic tag在每臺(tái)服務(wù)器上都是單獨(dú)的,千萬(wàn)記住給每個(gè)compute node都配置好external網(wǎng)絡(luò),不然在這個(gè)網(wǎng)絡(luò)中生成虛機(jī)時(shí)會(huì)找不到符合條件的compute node。